如何在Android系统中对MP4视频文件进行音频归一化处理
音频归一化实现方案说明
流程问题解答
- 无需单独提取音频后再合并回视频,FFmpeg可直接对视频文件内的音频流做处理,处理时可指定视频流直接复制不重编码,仅音频部分会做归一化运算,整体耗时仅略高于单独处理音频,远低于「提取音频-处理-合并」的三段式流程。
可用FFmpeg命令
方案1:EBU R128响度归一化(推荐,符合行业通用标准)
适用于需要匹配广播电视、短视频平台响度要求的场景,以下命令将音频响度统一为-23LUFS(欧洲广电标准,国内短视频平台常用-16LUFS,可按需调整参数):
ffmpeg -i input.mp4 -c:v copy -af loudnorm=I=-23:LRA=7:TP=-2 -c:a aac -b:a 256k output.mp4
参数说明:
I:目标集成响度,单位LUFS,可根据需求调整LRA:响度波动范围,单位LU,数值越小音频响度波动越小TP:真峰值上限,单位dBTP,避免音频削波失真-c:v copy:直接复制视频流不重编码,追求速度时保留,需要调整视频参数时可替换为对应编码配置
方案2:峰值归一化
适用于仅需要把音频最大峰值对齐到指定阈值的场景,需要先检测原音频峰值再做增益调整:
- 检测原音频最大峰值:
ffmpeg -i input.mp4 -af volumedetect -f null /dev/null
执行完成后在输出日志中查找max_volume字段,例如返回max_volume: -4.8 dB代表原音频最高峰值比0dB低4.8dB。
2. 执行峰值归一化,将峰值抬到0dB:
ffmpeg -i input.mp4 -c:v copy -af volume=4.8dB -c:a aac -b:a 256k output.mp4
把命令中4.8dB替换为第一步检测到的峰值差值即可。
内容的提问来源于stack exchange,提问作者mendax01
相关产品推荐
相关产品推荐

