2010-06-30 155 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文件)。