我需要从两个 wav 制作立体声并将结果立体声转换为 opus。我会:
ffmpeg -i in.wav -i out.wav -filter_complex "[0:a][1:a]join=inputs=2:channel_layout=stereo[a]" -map "[a]" stereo.wav && ffmpeg -i stereo.wav -c:a libopus -ac 1 -ar 16000 -b:a 8k -vbr constrained record.opus
但是 record.opus 看起来不是立体声的。
如果我分别执行两个命令,结果文件是立体声的。
答案1
有两个选项,要么join
要么amerge
,但文档中的join
似乎不起作用(正如您所发现的)。以下是两个有效命令行的示例:
创建两个音频测试文件。我已经用过的
sox
但你显然可以使用ffmpeg
# 3 seconds each of a 1kHz and 1.5kHz tone sox -V -r 48000 -n -b 16 -c 2 left.wav synth 3 sin 1000 vol -10dB sox -V -r 48000 -n -b 16 -c 2 right.wav synth 3 sin 1500 vol -10dB
结合作为立体声
您可以使用
join
,我发现,与文档相反,该map=…
部分是必需的:ffmpeg -i left.wav -i right.wav -filter_complex 'join=inputs=2:channel_layout=stereo:map=0.0-FL|1.0-FR' stereo.opus
你可以使用
amerge
:ffmpeg -i left.wav -i right.wav -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map "[a]" stereo.opus