使用FFmpeg混音时叠加音频片段音量异常升高的原因与解决方法
问题原因与解决方法
原因分析
你的FFmpeg命令中滤镜顺序错误:将adelay放在了loudnorm之前,导致loudnorm分析的是包含前置静音的完整音频(延迟时间越长,前置静音段越长)。
loudnorm的作用是把整个音频的响度归一化到目标值(I=-14),前置静音会拉低音频整体的平均响度,滤镜为了达到目标响度,会大幅提升翻译音频有效片段的音量进行补偿。延迟时间越久,前置静音越长,补偿幅度越大,最终就出现了第三、四段延迟更久的翻译音频音量明显更高的现象。
解决方法
调整滤镜顺序,先对原始翻译音频做响度归一化,再添加延迟,确保loudnorm只分析翻译音频本身,不受前置静音影响。同时可以优化命令,避免重复加载同一音频文件,减少冗余:
优化后的命令
ffmpeg -i video_wpmXlZF4XiE.opus -i 989-audio.mp3 \ -filter_complex "\ [0:a]loudnorm=I=-14:TP=-2:LRA=7, volume=0.05[original]; \ [1:a]loudnorm=I=-14:TP=-2:LRA=7[norm_audio]; \ [norm_audio]adelay=5000|5000, volume=1.0[sent1]; \ [norm_audio]adelay=10000|10000, volume=1.0[sent2]; \ [norm_audio]adelay=20000|20000, volume=1.0[sent3]; \ [norm_audio]adelay=30000|30000, volume=1.0[sent4]; \ [original][sent1][sent2][sent3][sent4]amix=inputs=5:duration=longest[out]" \ -map "[out]" output.mp3
额外优化(避免自动衰减)
默认amix会根据输入数量自动衰减每个轨道的音量防止削波,如果你希望严格按照设置的音量比例叠加,可以关闭自动衰减(注意监测总音量,避免超过0dB导致削波):
ffmpeg -i video_wpmXlZF4XiE.opus -i 989-audio.mp3 \ -filter_complex "\ [0:a]loudnorm=I=-14:TP=-2:LRA=7, volume=0.05[original]; \ [1:a]loudnorm=I=-14:TP=-2:LRA=7[norm_audio]; \ [norm_audio]adelay=5000|5000[sent1]; \ [norm_audio]adelay=10000|10000[sent2]; \ [norm_audio]adelay=20000|20000[sent3]; \ [norm_audio]adelay=30000|30000[sent4]; \ [original][sent1][sent2][sent3][sent4]amix=inputs=5:duration=longest:attenuation=0[out]" \ -map "[out]" output.mp3
内容的提问来源于stack exchange,提问作者Volodymyr Bilovus
相关产品推荐
相关产品推荐

