2011-02-28 38 views
6

當我設置了一個AVAudioPlayer對象viewDidLoad中,按照蘋果的指導方針,要求prepareToPlay在viewDidLoad中(我在awakeFromNib都試過也)的最後一行。AVAudioPlayer滯後調用play

當我按下播放按鈕,有一個停頓,因爲它會出現加載該文件,然後播放。

在audioPlayerDidFinishPlaying,我重裝玩家有不同的聲音,然後點擊第二次遊玩時,將播放文件瞬間。

什麼會導致玩家滯後的第一齣戲?

謝謝。

回答

-1

你打什麼樣的聲音?警報,更長的東西?如果報警,我沒有走這條路,它是與滯後好得多......

  • 創建系統聲音AudioServicesCreateSystemSoundID
  • 播放系統聲音AudioServicesPlaySystemSound
  • 處理系統中的聲音與AudioServicesDisposeSystemSoundID

...你只需要儲存SystemSoundID爲你想播放的每個聲音。

0

的音頻系統的幾個異步軟件過程(音頻單元,OS驅動程序等)和硬件系統(DMA,數模轉換器,音頻功放電源等)從來沒有真正完全所有的初始化完成,直到一些聲音是運行實際上演奏的都是揚聲器或耳機。

這裏有一個方法,這樣做:創建一個包含沉默了半秒聲音文件。在應用程序啓動時,當您的應用程序和視圖控制器仍在加載時,請使用AVAudioPlayer播放此靜音文件。現在當您的視圖加載完畢後,AVAudioPlayer應該準備播放後續的非沉默聲音,因爲有些音頻(靜音)已經完全消失到揚聲器。

+2

對不起downvoting,但這不是一個解決方案這是一個解決方法。 – 2014-09-17 10:40:20

+1

@vaibhav這是一個很糟糕的使用投票機制 – AlBeebe 2014-10-23 18:46:25

+0

@AlBeebe:讓我換個口吻。 「這不是一個解決方案,這是一個糟糕的解決方法,如果音頻片段少於半秒,這將不起作用」 – 2014-10-24 19:10:17