【问题标题】:Using ffmpeg and aresample with super low sample rate使用超低采样率的ffmpeg和aresample
【发布时间】:2020-03-23 08:53:59
【问题描述】:

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

我使用的参数是:

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

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

相对于重采样到 60kHz 后

我的问题是,是否可以使用 ffmpeg 并在音频的每个时间跨度(秒或 1/20 秒)内获得最大值(峰值)?

【问题讨论】:

    标签: ffmpeg waveform


    【解决方案1】:

    如果您想要分辨率为 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 将音频分成相等的块,每个块等于 1/20 秒。然后 astats 将测量每帧数据的日志(重置 = 1)。然后 ametadata 会将峰值电平的值(以 dB 为单位)写入文本文件。

    【讨论】:

    • 感谢您的回复,有没有办法将输出配置为仅返回数值峰值并输出到管道?顺便说一句,我应该以某种方式考虑数字或音频通道吗?我不知道音频是单声道还是立体声。
    • 你可以通过设置file=-输出到管道。对于最近的 git 构建,您可以添加 direct=1 以进行实时监控。将出现一些元数据,如键名和时间戳。
    猜你喜欢
    • 2013-08-22
    • 2019-02-06
    • 2022-10-19
    • 2017-10-21
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2019-11-20
    相关资源
    最近更新 更多