2

我需要做的是能够混合 4 个音频通道(不是来自实时源,只是应用程序包中预先录制的音频文件),并实时单独更改它们的音量,最好是使用 MP3。关于 iPhone 的所有各种声音 API,对我来说最好/正确的道路是什么?

谢谢!

4

1 回答 1

1

Storm Sim 使用 AVAudioPlayer 做到这一点,这无疑是最简单的方法。您可以在每个播放器对象上调用 prepareToPlay ,然后稍后将它们开始播放,这样就不会有任何延迟。我还在永恒循环中使用了一个空白的 1 秒音频播放器来保持 deviceTime 倒计时,因此您可以使用 playAfter 给未来特定的 deviceTime 以使所有样本同步播放或相对于彼此偏移(deviceTime只有在播放某种音频时才会打勾)。AVAudioPlayerDelegate 已中断/恢复事件并完成播放,因此您可以获得正在发生的事情的通知。

然而,只有一个硬件 MP3/AAC 解码器,所以其他三个将耗尽 CPU(以及电池)进行解码。如果您想最大限度地延长电池寿命,请使用 IMA4@44100 中的 CAF 文件。它大约是原始 WAV 文件大小的 1/4,因此不如 MP3 好,但性能要好得多,尤其是在您使用大量小音轨的情况下。如果您使用的是语音,则可以降低保真度并进一步粉碎文件。终端中的 afconvert 可以帮助您获取 CAF 格式的源文件(无论何种编码,您都应该使用 CAF 文件)。

于 2011-09-06T21:01:16.630 回答