【发布时间】:2011-07-18 15:32:01
【问题描述】:
有没有办法让 AVPlayer 在调用 preparetoplay 时像 AVAudioPlayer 那样将音频加载到缓冲区中?我试图消除用户按下播放按钮和音频开始播放之间的延迟时间。 AVAudioPlayer 似乎更即时,但我需要播放 iPod 库中的文件。
【问题讨论】:
标签: iphone ios audio core-audio avaudioplayer
有没有办法让 AVPlayer 在调用 preparetoplay 时像 AVAudioPlayer 那样将音频加载到缓冲区中?我试图消除用户按下播放按钮和音频开始播放之间的延迟时间。 AVAudioPlayer 似乎更即时,但我需要播放 iPod 库中的文件。
【问题讨论】:
标签: iphone ios audio core-audio avaudioplayer
如果您使用 AVPlayer 从 URL 播放歌曲,那么当您在 AVPlayer 上调用“播放”时,它会开始加载歌曲,然后在准备好时播放。如果文件是本地文件,我会假设它具有相同的功能。如果它来自您的 iPod,那么延迟时间应该已经非常小了。
您应该尝试的一件事是调用 play 然后暂停,AVPlayer 将继续加载歌曲,因此当您再次调用 play 时(假设它不是立即的),歌曲应该可以毫无问题地开始播放。从 URL 播放歌曲时,我可以确认这是有效的。试试你的场景。
- (void) getPlayerReady {
// write some code here to setup the player
[player play];
[player pause];
}
- (IBAction) btnPlayTouched:(id)sender {
[player play];
}
编辑:我想我还应该提到 AVQueuePlayer 会为你做这件事。如果你给 AVQueuePlayer 多首歌曲,它会在播放第一首歌曲时自动预缓冲下一首歌曲。我不知道这是否适合您的情况。
【讨论】: