ffmpeg - 使用超低采样率的ffmpeg和aresample

标签 ffmpeg waveform

我正在尝试使用 ffmpeg获取数据以生成具有每秒 30 个峰的分辨率的峰列表。

我正在使用的参数是:

ffmpeg -y -i audio.wav -filter_complex "[0]aresample=30[resampled]" -map [resampled] output_30.wav

它杀死了几乎所有的信息,结果数据数组只包含非常小的值。此波形在重采样之前
enter image description here

与重采样到 60kHz 后相比

enter image description here

我的问题是是否可以使用 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/

相关文章:

FFMPEG 音频和视频帧不相互匹配?

android - 如何在android中以编程方式执行命令行ffmpeg命令?

android - 如何绘制Android音乐播放器的波形?

video - ffmpeg 只设置宽度

ffmpeg - 使用 ffmpeg 解析分割视频

FFMPEG 全局模式多种输入格式

iphone - ios上的录音和波形绘制

lisp - Audacity - 如何设置 Nyquist Prompt 控制速率以匹配音频速率?

qt - 使用鼠标QML绘制矩形

c++ - Qt C++ 创建方形音频波。播放并保存