FFMPEG:两个单声道到一个立体声文件,其持续时间是这两个单声道文件中最长的

时间:2016-08-17 10:15:57

标签: audio ffmpeg

好吧,我正在尝试用几天时间找到合适的ffmpeg命令将两个单声道文件放入一个立体声文件中,但输出的左声道有一个单声道,输出的右声道有一个单声道文件输入输出的持续时间设置为这两个单声道文件中最长的。要创建我想要的而不考虑持续时间,使用此命令:

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置于左声道而输入2置​​于右声道,而是将它们合并为一个并将它们放入左右声道。所以左声道= input1 + input2;右声道= input1 + input2

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

Left channel=input1
Right channel=input2

提前致谢!

1 个答案:

答案 0 :(得分:3)

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

假设left更短,请使用

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