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

Posted

技术标签:

【中文标题】FFMPEG:两个单声道到一个立体声文件,其持续时间是这两个单声道文件中最长的【英文标题】:FFMPEG: Two mono to one stereo file whose duration is the longest of those two mono files 【发布时间】:2016-08-17 10:15:56 【问题描述】:

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

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

但是,正如它在文档中所说,输出的持续时间默认为最短的输入..但我需要输出具有最长的输入单声道文件的持续时间。我发现这可以使用amixcommand 来完成:

ffmpeg -i INPUT1 -i INPUT2 filter_complex amix=inputs=2:duration=longest:dropout_transition=3 -ac 2 OUTPUT

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

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

Left channel=input1
Right channel=input2

提前致谢!

【问题讨论】:

【参考方案1】:

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

假设left更短,那么使用

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

【讨论】:

谢谢,但我怎样才能知道哪个更短?因为我有很多文件需要合并到立体声中,所以我无法手动检查哪个...

以上是关于FFMPEG:两个单声道到一个立体声文件,其持续时间是这两个单声道文件中最长的的主要内容,如果未能解决你的问题,请参考以下文章

在Javascript中将立体声音频转换为单声道

以编程方式检测音频文件是立体声还是单声道?

Python将立体声.flac转换为单声道

将两个立体声通道组合成单声道?

在 C 中将立体声 wav 转换为单声道

如何在平板电脑/智能手机上启用立体声录音,尽管有两个内置麦克风,但只产生单声道?