如何在iOS上从AudioQueue Services获取样本



我正试图从AudioQueue中获得样本,以显示iPhone上的音乐频谱(如iTunes)。

我读了很多帖子,但几乎所有的问题都是关于在录音时获取样本,而不是播放:(

我使用AudioQueue服务流式音频。请帮助理解以下几点:1/我在哪里可以获得样本(PCM,非mp3(我使用mp3流))2/我应该在自己的缓冲液中收集样品来应用fft吗?3/有没有可能得到没有fft变换的频率?4/我如何同步我的fft移位在缓冲与当前播放的样本?

谢谢,更新:

AudioQueueProcessingTapNew

对于iOS6+,这对我来说很好。那么iOS5呢?

对于播放音频,我们的想法是在将样本提供给audio Queue回调之前获取样本。您可能需要事先将任何压缩音频文件格式转换为原始PCM样本。这可以使用一个AVFoundation转换器或文件阅读器服务来完成。

然后,您可以从用于馈送音频队列回调缓冲区的相同来源复制数据帧,并应用FFT或其他DSP对它们进行可视化。

您可以使用FFT或一组带通滤波器来获取频率信息,但FFT在这方面非常有效。

同步需要通过试错来完成,因为苹果没有指定确切的音频和视图图形显示延迟,这可能在iOS设备和操作系统版本之间有所不同。但是较短的音频队列缓冲或使用RemoteIO音频单元可以让你更好地控制音频延迟,OpenGL ES可以让你更好地控制图形延迟。

相关内容

  • 没有找到相关文章

最新更新