如何使用 ffmpeg / libavfilter 输出原始频率 (fft) 数据

Jer*_*oen 6 audio ffmpeg libavcodec libav

我正在尝试编写 libavfilter 绑定以将任意音频文件转换为原始频率(频谱)数据以进行后续音频分析。是否有内置的 ffmpeg 或 libavfilter 来输出二进制频率数据,而不是正确的音频/视频文件?

FFmpeg 有一些执行 FFT 的内置过滤器,例如afftfiltshowfreqs,但是这些过滤器总是将输出转换回视频或音频。我需要的是类似于afftfilt过滤器的东西,但它会转储原始 FFT 数据,而不是将其重新编码回 PCM。

Sin*_*aty 1

根据您需要 FFT 的精确度,以及是否需要虚部,您可以从showspectrum滤波器输出中提取一些内容 - 将其输出到原始位图并将其视为字节数组。