使用RemoteIO和Audio Unit播放音频文件

时间:2010-04-04 19:43:33

标签: iphone audio core-audio

我在看iPhone的'aurioTouch'示例,我想播放mp3或wav,而不是使用内置麦克风。我对iPhone编程的音频部分非常陌生,但我认为我需要修改SetupRemoteIO(...)函数,并将名为'comp'的AudioComponent替换为播放文件的自定义AudioComponent。基本上我希望应用程序的功能与原始版本完全相同,但是使用音频文件作为输入而不是麦克风。

1 个答案:

答案 0 :(得分:3)

您只需将音频文件转换为pcm数据,然后在播放回调期间将该数据提供给RemoteIO接口。

要读取您的音频文件,您需要使用ExtAudioFileOpenURL和ExtAudioFileRead。还要确保使用ExtAudioFileSetProperty设置音频格式以转换为目标pcm格式(应该打包,签名整数PCM数据)。

播放只需要响应RemoteIO回调(应该与aurioTouch的示例相同)并将其加载到您加载的PCM数据中。

唯一的另一个棘手的部分是将整个mp3文件加载为PCM会占用大量内存。您可能必须编写一个加载线程,这样您只需加载相关的mp3块即可满足您的内存需求。