我有長達10分鐘的大型循環背景音樂文件。聲音循環完美,如果玩家沒有引入延遲,你就不會注意到循環點在哪裏。AVAudioPlayer能夠循環播放大型音頻文件嗎?
AVAudioPlayer可以播放它們,而用戶不會聽到延遲或其他循環問題導致的間隙嗎?
我有長達10分鐘的大型循環背景音樂文件。聲音循環完美,如果玩家沒有引入延遲,你就不會注意到循環點在哪裏。AVAudioPlayer能夠循環播放大型音頻文件嗎?
AVAudioPlayer可以播放它們,而用戶不會聽到延遲或其他循環問題導致的間隙嗎?
只要您不在最後停止/啓動它,並將numberOfLoops
設置爲負整數,它應該可以工作。
由於音樂被壓縮(例如mp3),您可能會聽到延遲。 AVAudioPlayer必須在流媒體時解碼MP3。如果您使用的是未壓縮格式的相同音樂,則需要更多的磁盤空間,但會無縫循環。
我在嘗試創建無縫循環時遇到了問題。我嘗試使用numberOfLoops
屬性,但沒有成功。我嘗試切換到未壓縮的音頻文件,但沒有成功。我甚至嘗試切換到AVAudioQueuePlayer
,排隊與同一資產的多個實例,沒有成功。最後,我通過創建兩個AVAudioPlayer
(player1 & player2)並在它們之間切換來解決問題。我開始播放player1並使用player2的prepareToPlay
方法,並使用play(atTime time:)
方法將TimeInterval設置爲player1.deviceCurrentTime - player1.currentTime + player1.duration
。 然後我使用代理方法audioPlayerDidFinishPlaying
準備player1以在player2完成後重新開始播放。說實話,我不知道這種方法爲什麼起作用,只是將numberOfLoops
設置爲-1沒有。但它可能也適用於你