我需要自定义音频效果时是否需要处理音频单元?或者我可以依赖音频队列服务吗?

时间:2012-01-20 16:24:28

标签: ios core-audio audiounit audioqueueservices audioqueue

根据我的理解,音频队列服务是比使用音频单元的音频单元更高级别的API。 OpenAL还使用音频单元。因此,Audio Units是iOS中最低级别的音频API。

我需要录制声音,然后将自定义滤镜应用于音频流并播放。音频队列服务似乎适合录制,它们也可以用来播放。但是我仍然不确定他们是否允许将自己的算法应用于音频流,就像AURemoteIO音频单元那样。

2 个答案:

答案 0 :(得分:5)

从我的个人 - 有时甚至是痛苦的 - 经验来看,我会说使用AudioQueue进行流式应用。除此之外,请使用AudioUnit。后者可能较低,但我没有看到复杂性的差异。

老实说,AudioUnit似乎更容易使用。

理论上,使用AudioUnit,您应该能够使用其他插件来应用效果。但是,直到iOS 5 AURemoteIO才是唯一可用的AudioUnit。 iOS 5.显然还有更多功能。我还没有机会查看。

如果您是通过针对缓冲区运行算法手动完成的,那么您应该能够找到相当多的开源DSP代码。还有商业应用程序。一个非常好的库是Dirac DSP lib,用于音高变换和时间延长。

以下是关于在另一个问题的答案中使用AURemoteIO的精彩教程:

Stopping and Quickly Replaying an AudioQueue

答案 1 :(得分:1)

如果您录制并保存未压缩的音频,您可以将自己的自定义音频效果直接应用于捕获的音频缓冲区或使用任何音频API之外的文件。然后使用任何iOS音频API播放结果。