2010-04-04 136 views
1

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

回答

3

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

要读取您的音频文件,您需要使用ExtAudioFileOpenURL和ExtAudioFileRead。另外请确保使用ExtAudioFileSetProperty设置音频格式以转换为您的目标PCM格式(应打包,有符号整数PCM数据)。

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

唯一的另一个棘手的部分是,加载一个完整的mp3文件作为PCM可能占用大量的内存。您可能需要编写一个加载线程,以便您只需加载相关的MP3片段即可满足您的内存要求。