AVPlayer可以预缓冲音频类似于AVAudioPlayer的preparetoplay吗?

时间:2011-03-19 06:18:26

标签: iphone ios audio core-audio avaudioplayer

有没有办法让AVPlayer在调用preparetoplay时将音频加载到像AVAudioPlayer这样的缓冲区?我试图消除用户按下播放按钮和音频开始播放之间的延迟时间。 AVAudioPlayer似乎更加即时,但我需要播放iPod库中的文件。

1 个答案:

答案 0 :(得分:3)

如果您使用AVPlayer从URL播放歌曲,那么当您在AVPlayer上调用“播放”时,它会开始加载歌曲,然后在准备好后播放。如果文件是本地的,我会认为它具有相同的功能。如果它来自你的iPod,那么延迟时间应该非常小。

你应该尝试的一件事是调用播放然后暂停,AVPlayer将继续加载歌曲,所以当你再次呼叫播放时(假设它不是立即播放)那么歌曲应该没有任何问题地开始。我可以在从URL播放歌曲时确认这是有效的。试试你的情景。

- (void) getPlayerReady {
    // write some code here to setup the player

    [player play];
    [player pause];
}

- (IBAction) btnPlayTouched:(id)sender {
    [player play];
}
编辑:我想我还应该提一下AVQueuePlayer会为你做这件事。如果您为AVQueuePlayer提供多首歌曲,它将在播放第一首歌曲时自动预缓冲下一首歌曲。我不知道这是否可以在你的情况下使用。