2012-12-21 22 views
0

我想从AudioQueue获取样本以显示iPhone上的音乐谱(如iTunes)。如何从iOS上的AudioQueue服务获取样本

香港专业教育学院读了很多帖子,但拍摄的时候,不是在玩我使用AudioQueue服务流式音频:(

几乎所有的询问得到的样品请帮忙了解下一个点: 1 /在哪里可以我可以访问样本(PCM,非mp3(我正在使用mp3流) 2 /我应该在我自己的缓冲区中采集样本来应用fft吗? 3 /是否可以获得没有fft转换的频率? 4 /我同步我的fft在缓冲区的移位与当前播放的样本?

谢谢,

更新:

AudioQueueProcessingTapNew 

对于iOS6的+,这对我来说工作正常。但是iOS5呢?

回答

1

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

然后,您可以从用于提供音频队列回调缓冲区的相同源复制数据帧,并将FFT或其他DSP应用于视觉化。

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

同步需要通过反复试验完成,因为Apple没有指定确切的音频和查看图形显示延迟,而iOS设备和操作系统版本之间可能会有所不同。但是短音频队列缓冲区或使用RemoteIO音频单元可以让您更好地控制音频延迟,而OpenGL ES可以更好地控制图形延迟。

+0

谢谢你的回答。但我仍然不明白我怎样才能解码从“MP3”到“RAW”数据。或者我应该使用外部库? thx –

+1

AVAssetReader和AVAssetWriter内置于iOS,无需外部。 – hotpaw2