AVPlayer 需要很长时间才能开始播放

AVPlayer takes long time to start playing

更新到 Swift 3 后,我发现我的应用需要很长时间才能开始播放来自远程服务器的音频文件。在 Swift 2.3 中,这并没有发生。我整天都在尝试调试它,但我找不到任何东西。我每时每刻都在打印 AVPlayer 的状态,我发现它在几秒钟内从 Loading 变为 Playing,但真正开始播放歌曲需要大约 20 秒。

我正在使用 TeodorPatras 的点唱机

我终于用下一行代码自己修复了它:

player?.playImmediately(atRate: 1.0)

那条线的作用是,它会立即开始播放,但不会确保缓冲区足够不会受到干扰。但就我而言,我更喜欢等待几秒钟。

我在 iOS 10 的设备上遇到了同样的问题。支持 iOS 10 和旧 iOS 版本的解决方案是:

if #available(iOS 10.0, *) {
    player?.playImmediately(atRate: 1.0)
} else {
    player?.play()
}