FFmpeg:如何将所有音频流合并为立体声

时间:2019-01-06 10:43:38

标签: audio ffmpeg

我的视频文件中有4个音频流。它们来自4个麦克风,分别位于4个不同的人讲话处。我想将代码转码为预览文件,可以在耳机上收听此声音,从而听到每个人的声音。

我已经看到了-ac 2选项,但是我无法确定这是否将合并所有音频流,或者只是选择第一个。我也看过了合并过滤器,但是文档说这将在输出文件中产生4个音频通道。所以我想知道耳机将如何处理另外2个频道

2 个答案:

答案 0 :(得分:0)

尝试使用amerge audio filter来解决类似的问题:How do I use ffmpeg to merge all audio streams (in a video file) into one audio channel?

amix应该更好地适合您的目的。

答案 1 :(得分:0)

您有几种选择。假设in.mp4中的每个音频流都是单声道。

单音

使用amerge过滤器和-ac 1

ffmpeg -i in.mp4 -filter_complex "[0:a]amerge=inputs=4[a]" -ac 1 -map 0:v -map "[a]" -c:v copy out.mp4

使用amix

ffmpeg -i in.mp4 -filter_complex "[0:a]amix=inputs=4[a]" -map 0:v -map "[a]" -c:v copy out.mp4

立体声

具有合并和-ac 2

ffmpeg -i in.mp4 -filter_complex "[0:a]amerge=inputs=4[a]" -ac 2 -map 0:v -map "[a]" -c:v copy out.mp4

手动混合立体声

使用amerge和pan进行自定义缩混:

  • 频道0在FL中将为100%
  • 第1频道的FL率为75%,FR的为25%
  • 第2频道的FL率为25%,FR的为75%
  • 第3频道的FR率为100%


ffmpeg -i in.mp4 -filter_complex "[0:a]amerge=inputs=4,pan=stereo|FL<c0+0.75*c1+0.25*c2|FR<0.25*c1+0.75*c2+c3[a]" -map 0:v -map "[a]" -c:v copy out.mp4