2010-06-30 120 views
2

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

谢谢!

回答

1

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

但是,只有一个硬件MP3/AAC解码器,所以其他三个将耗尽CPU(因此电池)做解码。如果您想延长电池使用时间,请使用IMA4 @ 44100中的CAF文件。它的大小约为原始WAV文件的四分之一,因此它不如MP3,但性能要好得多,特别是在使用很多小音轨时。如果你使用的是语音,你可以以更低的忠诚度获得更多的信息,并且可以更好地粉碎这些文件。终端中的afconvert可以帮助你获得CAF格式的源文件(无论使用什么编码,你都应该使用CAF文件)。