据我了解,音频队列服务是比使用音频单元的音频单元更高级别的 API。OpenAL 也使用音频单元。所以 Audio Units 是 iOS 中最低级别的音频 API。
我需要录制声音,然后将自定义过滤器应用于音频流并播放。Audio Queue Services 似乎很适合录制,也可以用来播放。但我仍然不确定他们是否允许将自己的算法应用于音频流,就像 AURemoteIO 音频单元一样。
据我了解,音频队列服务是比使用音频单元的音频单元更高级别的 API。OpenAL 也使用音频单元。所以 Audio Units 是 iOS 中最低级别的音频 API。
我需要录制声音,然后将自定义过滤器应用于音频流并播放。Audio Queue Services 似乎很适合录制,也可以用来播放。但我仍然不确定他们是否允许将自己的算法应用于音频流,就像 AURemoteIO 音频单元一样。
从我个人(有时是痛苦的)经验来看,我会说将 AudioQueue 用于流式应用程序。对于其他任何事情,请使用 AudioUnit。后者可能较低级别,但我没有看到复杂性有太大差异。
老实说,AudioUnit 似乎更易于使用。
从理论上讲,使用 AudioUnit,您应该能够使用其他插件来应用效果。然而,直到 iOS 5 AURemoteIO 是唯一可用的 AudioUnit。显然,iOS 5 还有更多功能。我还没有机会检查。
如果您通过对缓冲区运行算法手动执行此操作,您应该能够找到相当多的开源 DSP 代码。还有商业应用程序。一个非常好的库是用于音高转换和时间拉伸的 Dirac DSP 库。
这是关于在回答其他问题时使用 AURemoteIO 的精彩教程:
如果您录制并保存未压缩的音频,您可以将您自己的自定义音频效果直接应用到捕获的音频缓冲区或文件,而无需使用任何音频 API。然后使用任何 iOS 音频 API 播放结果。