第七次重新进入屏幕后,AVPlayer 未准备好显示

Posted

技术标签:

【中文标题】第七次重新进入屏幕后,AVPlayer 未准备好显示【英文标题】:AVPlayer is not ready for display after re-enter to a screen on the seventh time 【发布时间】:2016-05-16 14:59:41 【问题描述】:

在我的 ios 应用中使用 AVPlayer 的屏幕显示短视频。我成功离开并重新进入此屏幕几次,但七次或更多次后我得到空白屏幕,并且 AVPlayerLayer 的 IsReadyForDisplay 属性为“否”。

当我离开此屏幕时,我暂停 AVPlayer(并设置为 nil)并从视图层中删除 AVPlayerLayer。在我看来,这不是内存使用问题(17Mb 使用量)。

我认为问题出在 AVPlayer 缓冲区或其他可能导致 AVPlayer 无法从视频文件读取的块的组件,但我没有找到任何方法来清理/或清除此缓冲区/块。

以前有人遇到过这个问题吗?或者知道为什么我在第七入口会出现这个空白屏幕吗?

提前致谢,

伊莱

【问题讨论】:

您解决了这个问题吗?我们现在正在解决完全相同的问题,希望您能提供任何信息! 【参考方案1】:

根据我的经验,当您拥有覆盖了可变 layerClass 的视图并且不知何故它不会从内存中清除并且每次您访问带有视频层的 VC 时,情况只会变得更糟。

尝试通过 insertSublayer 手动插入视频层,而不是覆盖您的 VideoView layerClass 属性。

比在 viewDidDisappear 中尝试对所有它们调用 removeFromSuperView 并强制它们变为 nil 以确保与它们相关的所有内容都将从内存中清除。

也许这不是最“正确”和最完美的方式,但最终视觉外观对我来说没有任何变化。

我还想知道真正的原因是什么,因为阅读所有 Apple 的文档并没有帮助。

【讨论】:

以上是关于第七次重新进入屏幕后,AVPlayer 未准备好显示的主要内容,如果未能解决你的问题,请参考以下文章

第七次冲刺

第七次实验

第七次实验

第七次冲刺

Beta阶段第七次Scrum Meeting

第七次团队作业:Alpha冲刺(7/10)