关于go:ffmpeg-视频音频处理

0次阅读

共计 1638 个字符,预计需要花费 5 分钟才能阅读完成。

### 咱们想着将原音频和配音音频合并成一条音频,这里就须要进行音频同轨了。其命令是:ffmpeg -y -i D:\\ffmpeg_test\\org_video_sound_input.wav -i D:\\ffmpeg_test\\org_voice_input.wav -filter_complex amix=inputs=2:duration=longest D:\\ffmpeg_test\\org_voice_output.wav

## 将音频左右声道离开,用到 ffmpeg 的 map_channel
ffmpeg -y -i source.wav -map_channel 0.0.0 01left.wav -map_channel 0.0.1 01right.wav


### 音频截取, 截取 0 秒到 10 秒;  用 -ss 和 -t 选项, 从第 30 秒开始, 向后截取 10 秒的视频
ffmpeg -y -i source.wav -vn -acodec copy -ss 00:00:00 -t 00:00:08.784 ouput1.wav
ffmpeg -y -i source.wav -vn -acodec copy -ss 00:00:09.900 -t 00:00:00.530 ouputpe2.wav
ffmpeg -y -i source.wav -ss 00:00:09.900 -c copy -t 00:00:00.530 -codec copy ouputpe2.wav

//to 示意从什么工夫点完结
ffmpeg -y -ss 00:00:00 -to 00:00:08.784      -i source.wav -vn -acodec copy  ouput1.wav
ffmpeg -y -ss 00:00:09.900 -to 00:00:10.150  -i source.wav -vn -acodec copy  ouputpe2.wav


#### 补白, 手动生成一条 250ms 长的空白音频: test.wav, 设置采样率 8000, -ac 1  设置声道数为 1
# -ac 1: 声道数量转成 1  -ar 22050: 采样率转成 22050Hz   -ab 64k: 比特率转成 64kb
ffmpeg -f lavfi -t 00:00:00.500 -i anullsrc -ar 8000  test3.wav -y

#### 音频拼接, 将多个 wav 按程序拼接生成一个 wav
ffmpeg -y -i "concat:ouput1.wav|test3.wav|ouputpe2.wav"   -acodec copy  result2.wav

### 将 3 个音频合成一个
ffmpeg -y -i ouput1.wav -i test3.wav -i ouputpe2.wav -filter_complex "[0:0] [1:0] [2:0] concat=n=3:v=0:a=1 [a]" -map "[a]" outputEnd.wav

### 设置采样率
ffmpeg -i 1.mp3 -i 2.mp3 -i 3.mp3 -filter_complex [0:0][1:0][2:0]concat=n=3:v=0:a=1[a] -map [a] -b:a 32k -ar 8000 4.mp3


### 双声道转单声道
ffmpeg -i  99.wav  -ac 1 10.wav

Go 应用示例代码:

    cmd := "ffmpeg -y -ss 00:00:00 -to 00:00:08.784      -i source.wav -vn -acodec copy  ouput1.wav"
    _, err := exec.Command("cmd", "/C", cmd).Output() //windows 下运行
    //_, err := exec.Command("bash", "-c", cmd).Output() //linux 下运行
    if err != nil {fmt.Println(fmt.Sprintf("Failed to execute command: %s,%s", cmd, err.Error()))
    }

参考文档:
https://www.jianshu.com/p/2c0…
https://www.jianshu.com/p/7db…

正文完
 0