缓冲后AVPlayer无法恢复

Rub*_*Jr. 8 audio streaming ios avplayer

我的iOS应用程序使用AVPlayer来自网络流媒体.我正在使用KVO来检测缓冲(playbackBufferEmpty)和被捕(playbackLikelyToKeepUp)等事件.但是,我注意到一个奇怪的特定错误.虽然在大多数网络减速期间,playbackBufferEmptyKVO被击中,当它恢复时,playbackLikelyToKeepUpKVO按预期击中,我注意到(有一些频率)AVPlayer意志缓冲一段时间,恢复,playbackLikelyToKeepUp被击中,音频播放可能1-3秒,然后音频再次停止播放,就像它正在缓冲一样 - 没有playbackBufferEmpty再次击中KVO.它并没有从中恢复过来.

TL; DR:playbackBufferEmpty(10-20秒) - > playbackLikelyToKeepUp- >播放1-3s - >停止播放但没有击中KVO.

最糟糕的是,当发生这种情况时,AVPlayer不会像从缓冲中恢复时那样再次自动开始播放,并且应用程序保持静音,直到AVPlayer手动停止/再次启动.每次我流式传输时,它或多或少都会发生.这是一个已知的问题AVPlayer吗?这是我能看到的第三次KVO活动吗?或者有关如何调试此问题的任何提示?谢谢!

编辑:附加信息:本AVPlayererror特性是nil,当发生这种情况,status物业准备播放,并且rate属性是1 AKA闲来无事怪异事情,至于我可以告诉.

yka*_*kay 1

我还遇到了AVPlayer从缓冲/网络问题中恢复的问题,并且我也遇到了完全相同的场景,即avPlayer.statusis .readyToPlayavPlayer.errorisnilavPlayer.rateis 1。谈论不可靠!我还检查了,errorLog()除了一般的互联网连接错误之外,没有提供任何相关信息。

我尝试通过一个计时器来检测这种状态,当计时器超时时,我检查当前视频时间和计时器启动的时间,如果相同(视频没有进展),我们可以假设视频确实是当它声称它是的时候就不玩。

然后我将其视为不可恢复的状态,并通过创建新的AVPlayerItem.