好的,我想找几天找到正确的ffmpeg命令,将两个单声道文件放入一个立体声文件中,但将一个单声道放入输出的左声道,将第二个单声道文件输入到输出的右声道,并输出其持续时间设置为这两个Mono文件中最长的一个。要仅创建我想要的内容而无需考虑持续时间,请使用以下命令:

ffmpeg -i left.mp3 -i right.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map "[aout]" output.mka

但是,正如文档中所述,输出的持续时间默认为输入中最短的时间。但是我需要输出具有最长输入单声道文件的持续时间。我发现可以使用amix命令完成此操作:
ffmpeg -i INPUT1 -i INPUT2 filter_complex amix=inputs=2:duration=longest:dropout_transition=3 -ac 2 OUTPUT

这会将输出的文件持续时间设置为最长的输入,但不是将input1放在左通道,将input2放在右通道,而是将它们合并为一个,然后放在左右通道。所以左声道=输入1+输入2;右声道=输入1+输入2

如何将输出的文件持续时间设置为最长并具有以下结构:
Left channel=input1
Right channel=input2

提前致谢!

最佳答案

您可以使用apad过滤器填充较短的流,然后使用amerge

假设left较短,则使用

ffmpeg -i left.mp3 -i right.mp3 -filter_complex "[0]apad[a];[a][1]amerge[aout]" -map "[aout]" output.mka

关于audio - FFMPEG:两个单声道到一个立体声文件,其持续时间是这两个单声道文件中最长的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38993821/

10-11 08:37