我通过这种方法异步加载AVAsset
:
playerAsset.loadValuesAsynchronously(forKeys: ["duration", "playable", "hasProtectedContent"]) {
DispatchQueue.main.async {[weak self] in
guard let strongSelf = self else { return }
let playerItem = AVPlayerItem(asset: playerAsset)
self.player?.replaceCurrentItem(with: playerItem)
}
}
在慢速的互联网上,我的资产有时会完全播放音频,但会冻结在特定的视频帧上,或者播放没有音频的视频。回到开始时,视频正常播放。
我有playbackBufferEmpty
和playbackLikelyToKeepUp
的KVO观察者,但在这种情况下不会被调用。