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

swa*_*ami 4 audio ffmpeg

我的视频文件中有 4 个音频流。它们来自放置在 4 个不同的人面前的 4 个麦克风。我想转码为可以在耳机上收听的预览文件,这样每个人的声音都可以听到。

我已经看到了 -ac 2 选项,但我无法判断这是否会合并所有音频流或仅选择前两个。我还看到了 amerge 过滤器,但文档说这将在输出文件中产生 4 个音频通道。所以我想知道耳机如何处理额外的 2 个通道

llo*_*gan 6

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

单核细胞增多症

使用合并过滤器 和-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
Run Code Online (Sandbox Code Playgroud)

混合

ffmpeg -i in.mp4 -filter_complex "[0:a]amix=inputs=4[a]" -map 0:v -map "[a]" -c:v copy out.mp4
Run Code Online (Sandbox Code Playgroud)

立体声

与 amerge 和-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
Run Code Online (Sandbox Code Playgroud)

手动混合立体声

使用 amerge 和平移以及自定义缩混:

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


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
Run Code Online (Sandbox Code Playgroud)