根据我的理解,音频队列服务是比使用音频单元的音频单元更高级别的API。OpenAL也使用音频单元。因此,音频单元是iOS中最低级别的音频API。
我需要录制一个声音,然后对音频流应用自定义过滤器并播放。音频队列服务似乎很适合录制,也可以用来回放。但我仍然不确定他们是否允许将自己的算法应用于音频流,就像AURemoteIO音频单元一样。
根据我个人的经验,有时甚至是痛苦的经验,我认为将AudioQueue用于流式应用程序。对于其他内容,请使用AudioUnit。后者可能是较低级别的,但我看不出复杂性有多大差异。
老实说,AudioUnit似乎更易于使用。
从理论上讲,使用AudioUnit,您应该能够使用其他插件来应用效果。然而,在iOS 5之前,AURemoteIO是唯一可用的音频单元。显然,iOS 5还有更多功能。我还没有机会检查一下。
如果你通过对缓冲区运行算法来手动执行,你应该能够找到很多开源DSP代码。还有商业应用程序。一个非常好的库是用于音调偏移和时间拉伸的Dirac DSP库。
下面是一个关于使用AURemoteIO来回答另一个问题的好教程:
停止并快速重播AudioQueue
如果录制并保存未压缩的音频,则可以在使用任何音频API之外,将自己的自定义音频效果直接应用于捕获的音频缓冲区或文件。然后使用任何iOS音频API播放结果。