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

6
我正在尝试编写libavfilter绑定,将任意音频文件转换为原始频率(频谱)数据,以进行后续的音频分析。是否有内置于ffmpeg或libavfilter中的内容可以输出二进制频率数据,而不是适当的音频/视频文件?
FFmpeg有一些内置的滤镜,例如afftfiltshowfreqs,可以执行FFT,但这些滤镜总是将输出转换回视频或音频。我需要的是类似于afftfilt过滤器的东西,但它会转储原始FFT数据,而不是重新编码为PCM。

当你说到二进制频率数据时,它的格式是什么?会是一系列由实部和虚部组成的浮点数对吗?或者会是频率分量和幅度分量的数对呢? - fdcpp
任何格式都可以,我猜fft返回的re+im对是有意义的。 - Jeroen Ooms
有限制使用FFmpeg / libav的原因吗?例如,使用FFTW是否会出现问题,其中复杂输出只是2个双精度数组 - fdcpp
只是想提醒您,也许您需要使用常数Q数据而不是傅里叶变换数据,但输出仍将是一组/流复数数组。 - Brannon
如果这是任何成功,回答可能会帮助我。 - Yadu
1个回答

1

根据您需要FFT的精度以及是否需要虚部,您可以从showspectrum过滤器输出中制作一些东西——将其输出到原始位图并将其视为字节数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接