如果HLS的服务器端(播放列表)发生了某些错误,AVPlayer
客户端最终会停止,我们会收到此通知:AVPlayerItemFailedToPlayToEndTime
。
在此之后我们如何恢复播放,理所当然地认为所有错误服务器都已修复?
我在播放列表方面导致500错误。 AVPlayer会在一段时间后停止。
即使发生了AVPlayerItemFailedToPlayToEndTime,AVPlayer的状态也不是failed
,而且currentItem.status也不是failed
。具体来说,这两个仍然是readyToPlay
,看起来我们应该能够继续播放而无需重新创建整个AVPlayer实例等。
我试图引发游戏的方式"再次是self.play()
(AVPlayer的子类)。这不起作用。
我已经能够通过重新创建AVPlayerItem并使用replaceCurrentItem()
再次分配来恢复播放(从失败状态)。但是,由于我需要在没有任何用户交互的情况下发生这种情况(比如按下播放按钮等),似乎没有什么好方法可以找出应用此方法的时间,以及它是否真的有效。
答案 0 :(得分:0)
我认为您需要节省暂停时间。每当你再次播放视频时,请说“播放按钮点击”或“恢复视频”,寻找那个时间
avPlayer.seek(to: playerPauseTime)
if self.avPlayer.status == .readyToPlay && self.avPlayer.currentItem?.status == .readyToPlay {
self.avPlayer.seek(to: atTime,
toleranceBefore: kCMTimeZero,
toleranceAfter: kCMTimeZero,
completionHandler: { (finished) in
self.avPlayer.play()
})
}
您将在暂停播放的时间段内播放视频。