如何将两个 4 声道音频合并为一个 2 声道输出

如何将两个 4 声道音频合并为一个 2 声道输出

我正在尝试将这两个 WAV(L.wav 和 R.wav)合并为一个双通道立体声 OGG。这就是我正在尝试的:

ffmpeg -i L.wav -i R.wav -c:a libvorbis -q:a 5 \
-filter_complex "[0:a][1:a]amerge" -f ogg out.ogg

然而,ffmpeg 说:

输入通道布局重叠:输出布局将由不同输入通道的数量决定

然后

Vorbis 不支持 4.0:输出流将具有不正确的通道布局。

所以我明白我只能在输出文件的一个通道中获得一个音频。所以问题是,我如何告诉 ffmpeg 将 L.wav 的通道 0 和 R.wav 的通道 0 分别映射到 out.ogg 的通道 0 和 1?像这样:

input #0 [1.0.0.0] → [1.0.0.0] \
                                > output #0 [1.1] 
input #1 [1.0.0.0] → [0.1.0.0] /

答案1

正如你所注意到的amerge滤波器将两个立体声输入组合成 4 通道输出。当前的 4 通道布局:

  • c0左声道是L.wav
  • c1是来自L.wav
  • c2左声道是R.wav
  • c3是来自R.wav

您可以添加pan过滤器将所需声道混合回立体声输出。据我所知,您希望c0将其作为输出的左声道,并将c2其作为右声道:

ffmpeg -i L.wav -i R.wav \
-filter_complex "[0:a][1:a]amerge=inputs=2,pan=stereo|c0=c0|c1=c2[a]" \
-map "[a]" -c:a libvorbis -q:a 5 out.ogg
  • 我通常会明确将input选项添加到amerge。默认值为2,但我这样做是为了防止我使用超过 2 个输入;否则,由于健忘和经常懒惰,我可能会正确设置它。

  • -f ogg在这种情况下是多余的,因为它将使用输出文件名检测正确的格式。

  • FFmpeg Wiki:音频通道操作查看更多示例。

相关内容