FFmpeg:将两个 wav 制作成立体声并转换为 opus

FFmpeg:将两个 wav 制作成立体声并转换为 opus

我需要从两个 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似乎不起作用(正如您所发现的)。以下是两个有效命令行的示例:

  1. 创建两个音频测试文件。我已经用过的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
    
  2. 结合作为立体声

    您可以使用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
    

相关内容