ios – AVPlayerItem不播放视频,即使其状态为“readyToPlay”且“isPlaybackLikelyToKeepUp”为真

前端之家收集整理的这篇文章主要介绍了ios – AVPlayerItem不播放视频,即使其状态为“readyToPlay”且“isPlaybackLikelyToKeepUp”为真前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在用AVPlayer和AVPlayerItem播放实时视频.我正在观察AVPlayerItem的状态,isPlaybackLikelyToKeepUp和AVPlayerItemPlaybackStalled.我也在观察AVPlayer的速度.

在我测试的时候,我发现真的很奇怪.

当AVPlayer正常播放视频时(AVPlayerItem.status == readyToPlay和AVPlayerItem.isPlaybackLikelyToKeepUp == true),如果按主页按钮,AVPlayer.rate将变为0.0.这意味着玩家停止了比赛.

当应用程序回到前台并按下播放按钮时,它仍然是AVPlayerItem.status == readyToPlay和AVPlayerItem.isPlaybackLikelyToKeepUp == true但暂停了一段时间后它开始播放.

我想要的是知道播放器已暂停或播放.在这种情况下,即使播放器没有播放视频,状态也表示正在播放. (AVPlayerItem.status == readyToPlay,AVPlayerItem.isPlaybackLikelyToKeepUp == true,AVPlayer.rate == 1.0)

我检查了AVPlayerItem的loadedTimeRanges和item.loadedTimeRanges.first不是nil(loadedTimeRanges只有一个项目),它的开始和持续时间不是0.

我该怎么检查?

我正在添加更多.

此症状仅在流式传输(m3u8)而非vod(mp4)时发生.

所以我猜这是缓冲数据的问题.当播放器正在播放时,缓冲区有数据可播放且数据仍然有效.应用程序进入后台并返回前台后,播放器的缓冲区仍然有数据,因此isPlaybackLikelyToKeepUp == true,AVPlayerItem.status == readyToPlay.但是当我尝试播放时,AVPlayer会刷新缓冲区,因为它已经过时了.

看起来到目前为止唯一的方法是创建新的AVPlayerItem并在应用程序返回前台时设置.

我遇到的确切问题是什么,并想知道如何避免它.

这是我正在努力的回购.

https://github.com/trick14/SLPlayer

上面一个是现场,下面一个是VOD.加载完成后,播放并前往背景和前景几次.如果你尝试玩,所有状态看起来都很正常,但玩家会停滞不前.

解决方法

我很久以前也有类似的经历.
那时,当用户按下主页按钮时,我已经存储了播放状态和播放位置.
当返回前台时,我使用存储的信息来恢复或播放该位置.

我希望你能提供帮助.

猜你在找的iOS相关文章