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

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

概述我正在用AVPlayer和AVPlayerItem播放实时视频.我正在观察AVPlayerItem的状态,isPlaybackLikelyToKeepUp和AVPlayerItemPlaybackStalled.我也在观察AVPlayer的速度. 在我测试的时候,我发现真的很奇怪. 当AVPlayer正常播放视频时(AVPlayerItem.status == readyToPlay和AVPlay 我正在用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 – AVPlayerItem不播放视频,即使其状态为“readyToPlay”且“isPlaybackLikelyToKeepUp”为真全部内容,希望文章能够帮你解决ios – AVPlayerItem不播放视频,即使其状态为“readyToPlay”且“isPlaybackLikelyToKeepUp”为真所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1002329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存