2012-01-20 29 views
3

根据我的理解,音频队列服务是比使用音频单元的音频单元更高级别的API。 OpenAL也使用音频单元。所以音频单元是iOS中最低级别的音频API。当我需要自定义音频效果时,是否需要处理音频单元?还是我可以依赖音频队列服务?

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

回答

5

从我个人的 - 有时是痛苦的 - 经验来说,我会说使用AudioQueue进行流式应用。对于其他任何事情,请使用AudioUnit。后者可能更低一些,但我并没有在复杂度上看到太多差异。

说实话,AudioUnit似乎更容易处理。

从理论上讲,使用AudioUnit,您应该可以使用其他插件来应用效果。但是,直到iOS 5 AURemoteIO成为唯一可用的AudioUnit。显然,iOS 5还有更多。我还没有机会检查。

如果您是通过对缓冲区运行算法手动执行此操作,则应该可以找到相当多的开源DSP代码。还有商业应用程序。一个非常好的库是用于音高转换和时间拉伸的Dirac DSP库。

下面是关于在回答使用AURemoteIO这个的其他问题有很大的教程:

Stopping and Quickly Replaying an AudioQueue

+1

+1。我一直很开心地使用AudioUnit。一旦你完成了样板文件的AU设置代码,你就再也不需要再看它了。几乎所有事情都发生在回调方法中,这完全在你的控制之下。 –

1

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

相关问题