ffmpeg 视频音频处理

###我们想着将原音频和配音音频合并成一条音频,这里就需要进行音频同轨了。其命令是:
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...

你可能感兴趣的:(go)