在流式传输 .m3u8 视频的前五秒,AVPlayerViewController 显示的分辨率比视频的其余部分低得多,即使它已完全缓冲,我再次回到前几秒。
我尝试了以下策略:
canUseNetworkResourcesForLiveStreamingWhilePaused
的AVPlayerItem
属性设置为真。preferredForwardBufferDuration
的AVPlayerItem
属性设置为30秒。AVAsset
方法loadValuesAsynchronously(forKeys:completionHandler:)
并仅在确保已加载所有必要数据后创建AVPlayerItem
。AVPlayerItem.status
上使用KVO,以便在其项目状态为prerollAtRate
时调用AVPlayer的.readyToPlay
方法。到目前为止,这是我的设置:
let url = URL(string: "https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/.m3u8")!
let asset = AVURLAsset(url: url)
let item = AVPlayerItem(asset: asset)
let playerViewController = AVPlayerViewController()
playerViewController.player = AVPlayer(playerItem: item)
self.present(playerViewController, animated: true)