使用 ffmpeg 确定音频电平峰值

jim*_*mig 3 audio ffmpeg

是否有我缺少的插件可以让我确定音频文件长度上的音量样本?

例如,每秒获取 dB 与时间戳的样本?

Gya*_*yan 8

ebur128过滤器根据响度建议EBU R128指标提供信息。

astats过滤器可以提供这样的信息,以dB为单位的方面:

ffmpeg -i in.mp3 -af astats=metadata=1:reset=1,ametadata=print:key=lavfi.astats.Overall.RMS_level:file=log.txt -f null -
Run Code Online (Sandbox Code Playgroud)

这会产生如下输出:

frame:221  pts:226304  pts_time:4.71467
lavfi.astats.Overall.RMS_level=-67.437152
frame:222  pts:227328  pts_time:4.736  
lavfi.astats.Overall.RMS_level=-67.159036
frame:223  pts:228352  pts_time:4.75733
lavfi.astats.Overall.RMS_level=-63.862748
frame:224  pts:229376  pts_time:4.77867
lavfi.astats.Overall.RMS_level=-63.666815
Run Code Online (Sandbox Code Playgroud)

如果这在时间分辨率方面过于细粒度,请增加重置值,即滤波器采样频率的帧数。对于 1 秒的切片,audio sampling rate/1000应使用整数近似值。

  • `-af asetnsamples=44100,astats=metadata=1:reset=1,ametadata=print:key=lavfi.astats.Overall.RMS_level:file=log.txt` (2认同)