在AVPlayerItemFailedToPlayToEndTime之后恢复播放实时视频流

时间:2017-08-03 07:05:12

标签: ios avplayer hls

如果HLS的服务器端(播放列表)发生了某些错误,AVPlayer客户端最终会停止,我们会收到此通知:AVPlayerItemFailedToPlayToEndTime

在此之后我们如何恢复播放,理所当然地认为所有错误服务器都已修复?

  • 我在播放列表方面导致500错误。 AVPlayer会在一段时间后停止。

  • 即使发生了AVPlayerItemFailedToPlayToEndTime,AVPlayer的状态也不是failed,而且currentItem.status也不是failed。具体来说,这两个仍然是readyToPlay,看起来我们应该能够继续播放而无需重新创建整个AVPlayer实例等。

  • 我试图引发游戏的方式"再次是self.play()(AVPlayer的子类)。这不起作用。

  • 我已经能够通过重新创建AVPlayerItem并使用replaceCurrentItem()再次分配来恢复播放(从失败状态)。但是,由于我需要在没有任何用户交互的情况下发生这种情况(比如按下播放按钮等),似乎没有什么好方法可以找出应用此方法的时间,以及它是否真的有效。

1 个答案:

答案 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()
        })
    }

您将在暂停播放的时间段内播放视频。