Iphone 使用RemoteIO和音频单元播放音频文件

Iphone 使用RemoteIO和音频单元播放音频文件,iphone,audio,core-audio,Iphone,Audio,Core Audio,我正在看苹果iPhone的“aurioTouch”示例,我想播放mp3或wav,而不是使用内置麦克风。我对iPhone编程的音频部分非常陌生,但我认为我需要修改SetupRemoteIO(…)函数,并用一个播放文件的自定义音频组件替换名为“comp”的音频组件。基本上,我希望应用程序的功能与原版完全相同,但使用音频文件作为输入,而不是麦克风。您只需将音频文件转换为pcm数据,然后在回放回调期间将该数据馈送到RemoteIO接口 要在中读取音频文件,您需要使用ExtAudioFileOpenURL

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

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

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

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

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