缓冲后AVPlayer无法恢复

时间:2016-02-13 21:50:39

标签: ios audio streaming avplayer

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

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

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

编辑:其他信息: 发生这种情况时,AVPlayer的{​​{1}}属性为errornil属性为Ready to Play,status属性为1。 AKA就我所知,没有别的奇怪了。

1 个答案:

答案 0 :(得分:1)

我也遇到过AVPlayer从缓冲/网络问题中恢复的问题,我也有avPlayer.status .readyToPlay avPlayer.error nil avPlayer.rate 1 { 1}},errorLog()AVPlayerItem。谈论不可靠!我还检查了$ curl -s 'http://entrepreneur-times.com/l/tch/blog/?id=12' \ | php -r 'var_dump(preg_match("~~u", file_get_contents("php://stdin")));' bool(false) ,并且除了通用的互联网连接错误之外,它没有提供任何相关内容。

我尝试通过一个计时器来检测这种状态,当计时器超时时,我检查当前的视频时间和计时器开始的时间以及它是否相同(视频没有进展) ),我们可以假设视频在宣称视频时确实没有播放。

然后我将此视为不可恢复的状态,并通过创建新的"roomid" : "590ba5386431210c688d07555910cff9cdf7b10bfc309f8d", "messages": [ { "messagestring": "hello", "sender": "590ba5386431210c688d0755", "time": "05:21:53", "date": "2017-05-23", "status": "unread", "messageimage": [] }, { "messagestring": "whatsup", "sender": "5910cff9cdf7b10bfc309f8d", "time": "05:23:52", "date": "2017-05-23", "status": "unread", "messageimage": [] } ] 重新加载整个流。