當我設置了一個AVAudioPlayer對象viewDidLoad中,按照蘋果的指導方針,要求prepareToPlay在viewDidLoad中(我在awakeFromNib都試過也)的最後一行。AVAudioPlayer滯後調用play
當我按下播放按鈕,有一個停頓,因爲它會出現加載該文件,然後播放。
在audioPlayerDidFinishPlaying,我重裝玩家有不同的聲音,然後點擊第二次遊玩時,將播放文件瞬間。
什麼會導致玩家滯後的第一齣戲?
謝謝。
當我設置了一個AVAudioPlayer對象viewDidLoad中,按照蘋果的指導方針,要求prepareToPlay在viewDidLoad中(我在awakeFromNib都試過也)的最後一行。AVAudioPlayer滯後調用play
當我按下播放按鈕,有一個停頓,因爲它會出現加載該文件,然後播放。
在audioPlayerDidFinishPlaying,我重裝玩家有不同的聲音,然後點擊第二次遊玩時,將播放文件瞬間。
什麼會導致玩家滯後的第一齣戲?
謝謝。
你打什麼樣的聲音?警報,更長的東西?如果報警,我沒有走這條路,它是與滯後好得多......
AudioServicesCreateSystemSoundID
AudioServicesPlaySystemSound
AudioServicesDisposeSystemSoundID
...你只需要儲存SystemSoundID
爲你想播放的每個聲音。
的延遲是由於AVAudioPlayer被初始化。請參閱this answer。
的音頻系統的幾個異步軟件過程(音頻單元,OS驅動程序等)和硬件系統(DMA,數模轉換器,音頻功放電源等)從來沒有真正完全所有的初始化完成,直到一些聲音是運行實際上演奏的都是揚聲器或耳機。
這裏有一個方法,這樣做:創建一個包含沉默了半秒聲音文件。在應用程序啓動時,當您的應用程序和視圖控制器仍在加載時,請使用AVAudioPlayer播放此靜音文件。現在當您的視圖加載完畢後,AVAudioPlayer應該準備播放後續的非沉默聲音,因爲有些音頻(靜音)已經完全消失到揚聲器。
對不起downvoting,但這不是一個解決方案這是一個解決方法。 – 2014-09-17 10:40:20
@vaibhav這是一個很糟糕的使用投票機制 – AlBeebe 2014-10-23 18:46:25
@AlBeebe:讓我換個口吻。 「這不是一個解決方案,這是一個糟糕的解決方法,如果音頻片段少於半秒,這將不起作用」 – 2014-10-24 19:10:17