ste*_*eve 8 audio ffmpeg normalize
我是ffmpeg的新手,想创建一个可以将RMS规范化音频文件到指定的RMS(平均值)dB级别的脚本.有人可以说明如何做到这一点?
我已经使用了dynaudnorm,但无法获得所需的输出,我相信这是因为它使用了与分析整个文件相对的框架.
为了RMS规范化,我的想法是使用条件语句来创建一个过滤器,它可以自动读取音频文件的RMS(平均)电平,然后自动将RMS(平均)电平设置为指定的dB电平.
理论范例:
ffmpeg -i (inputfilename) -af "normalize_rms=-20dB" (outputfilename)
Run Code Online (Sandbox Code Playgroud)
条件声明和示例的说明:
通过1:运行astats或volumedetect来计算RMS级别.
通过2:如果RMS电平= X dB,则添加Y dB电平以匹配用户指定的dB电平.
示例:如果RMS电平= -30dB,并且用户指定的RMS电平= -20dB,则再加10dB.
小智 2
这是一个bash脚本,它解析音频文件的音量,然后根据其音量对其进行标准化。主要思想取自对类似SO 问题的回答,其中还讨论了其他方法。
sound_info="$(ffmpeg -i sound.mp3 -af volumedetect -f null -y nul $1 2>&1)"\nmax_volume_line="$(echo "$sound_info" | grep \'max_volume\')"\nmax_volume_line="$(echo "$max_volume_line" | grep -Po "max_volume:\\s+\\S+\\s+dB")"\nvolume="$(echo "$max_volume_line" | grep -Po "[-|+]?\\d+\\.?\\d*")"\nffmpeg -i sound.mp3 -af "volume=$volume" normalized_sound.mp3\nRun Code Online (Sandbox Code Playgroud)\n\n如果您只想标准化感知响度,ffmpeg文档建议使用滤波器\xe2\x80\x8bloudnorm。