【发布时间】:2017-08-03 07:05:11
【问题描述】:
如果 HLS 的服务器端(播放列表)发生错误,AVPlayer 客户端最终将停止,我们将收到此通知:AVPlayerItemFailedToPlayToEndTime。
我们如何才能在这之后恢复游戏,理所当然地认为服务器端的所有错误都已修复?
我在播放列表端导致 500 错误。 AVPlayer 会在一段时间后停止。
即使发生了 AVPlayerItemFailedToPlayToEndTime,AVPlayer 的状态也不是
failed,currentItem.status 也不是failed。具体来说,这两个仍然是readyToPlay,看起来我们应该能够在不重新创建整个 AVPlayer 实例等的情况下继续播放。我尝试再次引起“播放”的方式是
self.play()(AVPlayer 的子类)。这不起作用。-
我已经能够通过重新创建 AVPlayerItem 并使用
李>replaceCurrentItem()再次分配它来恢复播放(从失败状态)。但是,由于我需要在没有任何用户交互(例如按下播放按钮等)的情况下发生这种情况,因此似乎没有好的方法来找出何时应用此方法,以及它是否真的有效。
【问题讨论】:
-
跟踪媒体播放的时间,以防服务器故障重播媒体再次转发到该时间。
-
是的,使 timeCount Var 类级别,并使用链接中的方法定期调用将其增加一。所以现在时间将保存在你的变量中,用它来寻找 avplayer 的时间。
-
我看不出这有什么关系。无论如何,似乎 AVPlayer 的行为是在服务器错误(500s)在一定程度上失败后停止尝试下载更多片段。似乎我们必须再次重新创建 AVPlayerItem 才能重试。此外,何时这样做似乎是一个高度相关但又不同且有问题的问题。我需要找出播放无限期停止的时间,并找到某种时机重试。我会假设 AVPlayer 为我们做这件事,但它似乎在某个时候放弃了所有尝试。 ??????
标签: ios avplayer http-live-streaming