我正在构建一款让用户重新混音的游戏。我已经构建了一个混音器(基于苹果示例代码MixerHost(使用混音器audioUnit创建audioGraph),但扩展到加载了12个音轨。一切正常,但是当游戏玩家加载歌曲需要很长时间选择他们想要重新混音的歌曲。这是因为在我开始播放音乐之前,程序必须将12个单独的mp4文件加载到内存中。
我认为我需要的是创建一个负责将文件加载到调音台的AUFilePlayer audioUnit。如果AUFilePlayer可以处理动态加载文件,那么用户将不必等待文件100%加载到内存中。我的两个问题是,1。可以这样使用AUFilePlayer吗? 2.关于AUFilePlayer的文档非常非常薄。我在哪里可以找到一些示例代码演示了如何在IOS中正确实现AUFilePlayer(而不是在MacOS中)?
由于
答案 0 :(得分:3)
我认为你是对的 - 在这种情况下,“直接从磁盘”缓冲方法可能就是你所需要的。我相信正确的AudioUnit子类型是AudioFilePlayer
。来自文档:
单位读取并转换 音频文件数据进入自己的内部 缓冲区。它在a上执行磁盘I / O. 所有的高优先级线程共享 流程中此单元的实例。 完成磁盘读取后,单元 在内部安排缓冲区进行播放。
在Chris Adamson's book Learning Core Audio中给出了在Mac OS X上使用此单元的工作示例。 iOS的代码差别不大,并在CoreAudio-API邮件列表的this thread中进行了讨论。可以找到Adamson的工作代码示例here。您应该能够根据您的要求进行调整。