在 ffmpeg 中混合两种声音出错

在 ffmpeg 中混合两种声音出错

我遇到了一个问题,但在任何地方都找不到解决方案,因此:

我有两个文件,f1.mp3 是一个普通的 mp3 文件,只有一些声音,f2.mp3 大部分是静音的,但中间有一部分有声音。两个文件都是 1 分钟长。问题是,当我尝试合并它们时,f1.mp3 的音量变低了。这个过程重复了几次,结果第一个声音完全静音了。我该怎么做才能避免这个问题?目前我已经测试了这两个说明:

ffmpeg -i f1.mp3 -i f2.mp3 -filter_complex amix=inputs=2:duration=first out.mp3

ffmpeg -i f1.mp3 -i f2.mp3 -filter_complex \"[0:a][1:a]amerge[aout]\" -map \"[aout]\" -ac 2 out.mp3

答案1

为了amix保持与输入相同的最大音量以防止削波,它会在混合之前对音频进行标准化(因此,amixing相同的两个输入将呈现相同的输出,而不是增加其音量)。如果您需要将两个输入的原始音量相加,则必须应用过滤volume器:

ffmpeg -i f1.mp3 -i f2.mp3 -filter_complex '[0][1] amix=inputs=2:duration=first [a];[a] volume=volume=2 [b]' -map [b] out.mp3

请注意,如果您需要两个以上的音频,则需要应用相应的增益。

注意:由于第二个过滤器,输出可能会被剪切,请检查结果!

相关内容