在我的 IOS 应用程序中使用 AVPlayer 显示短视频的屏幕。我成功离开并重新进入此屏幕几次,但在七次或更多次后,我得到空白屏幕并且 AVPlayerLayer 的 IsReadyForDisplay 属性为“NO”。
当我离开这个屏幕时,我暂停 AVPlayer(并设置为 nil)并从 View 层中删除 AVPlayerLayer。在我看来,这不是内存使用问题(17Mb 使用量)。
我认为问题出在 AVPlayer 缓冲区或可能导致 block 的其他组件 AVPlayer 无法从视频文件中读取,但我没有找到任何方法来清理/或清除此缓冲区/ block 。
有没有人以前遇到过这个问题?或者知道为什么我在第七个入口出现这个黑屏?
提前致谢
以利
最佳答案
根据我的经验,当您的 View 覆盖了变量 layerClass 并且它不会以某种方式从内存中消失并且每次您访问带有视频层的 VC 时,情况只会变得更糟。
不要覆盖您的 VideoView layerClass 属性,而是尝试通过 insertSublayer 手动插入您的视频层。
然后在 viewDidDisappear 中尝试对所有这些调用 removeFromSuperView 并强制它们变为 nil 以确保连接到它们的所有内容都将从内存中清除。
也许这不是最“正确”和完美的方式,但最终对于我来说视觉外观没有任何变化。
我也想知道真正的原因是什么,因为阅读所有 Apple 的文档都没有帮助。
关于video - AVPlayer 第七次重新进入画面后无法显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37256998/