调用播放时AVAudioPlayer滞后

时间:2011-02-28 22:30:44

标签: iphone objective-c ios4 avaudioplayer

我已经在viewDidLoad中设置了AVAudioPlayer对象,根据Apple指南,将prepareToPlay称为viewDidLoad中的最后一行(我也尝试过awakeFromNib)。

当我按下我的播放按钮时,有一个暂停,因为它似乎加载文件,然后播放。

在audioPlayerDidFinishPlaying中,我用不同的声音重新加载播放器,当再次点击播放时,文件会立即播放。

什么会导致玩家在第一场比赛中落后?

感谢。

3 个答案:

答案 0 :(得分:0)

延迟是由AVAudioPlayer初始化造成的。请参阅this answer

答案 1 :(得分:0)

音频系统运行在几个异步软件进程(音频单元,操作系统驱动程序等)和硬件系统(DMA,DAC,音频放大器电源等)上,直到某些声音实际上才真正完全完成初始化一直播放扬声器或耳机。

这是一种方法:创建一个包含半秒静音的声音文件。在应用启动时,当您的应用和视图控制器仍在加载时,使用AVAudioPlayer播放此静音文件。现在当你的视图完成加载时,AVAudioPlayer应该准备好更快地播放后续的非静音,因为一些音频(静音)已经完全消失到扬声器。

答案 2 :(得分:-1)

你正在玩什么样的声音?提醒,更长的时间?如果发出警报,我确实采用了这种方式,并且在滞后方面做得更好......

  • 使用AudioServicesCreateSystemSoundID
  • 创建系统声音
  • 使用AudioServicesPlaySystemSound
  • 播放系统声音
  • 使用AudioServicesDisposeSystemSoundID
  • 处理系统声音

...你只需要为你想要播放的每个声音存储SystemSoundID