我正在尝试使用 ffmpeg
获取数据以生成具有每秒 30 个峰的分辨率的峰列表。
我正在使用的参数是:
ffmpeg -y -i audio.wav -filter_complex "[0]aresample=30[resampled]" -map [resampled] output_30.wav
它杀死了几乎所有的信息,结果数据数组只包含非常小的值。此波形在重采样之前
与重采样到 60kHz 后相比
我的问题是是否可以使用 ffmpeg 并在音频的每个时间跨度(秒或 1/20 秒)内获得最大值(峰值)?
最佳答案
如果您想要分辨率为 1/20 秒的峰值数据,请以此为起点。
ffmpeg -i audio.wav -af "aresample=60000,asetnsamples=3000,astats=reset=1:metadata=1,ametadata=print:key='lavfi.astats.Overall.Peak_level':file=stats.log" -f null -
这个想法是使用 aresample 获得足够高的采样率,然后使用 asetnsamples 将音频分成相等的 block ,每个 block 等于 1/20 秒。然后 astats 将测量每帧数据的日志(重置 = 1)。然后 ametadata 将峰值电平的值(以 dB 为单位)写入文本文件。
关于ffmpeg - 使用超低采样率的ffmpeg和aresample,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60810364/