2

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

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

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

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

提前致谢,

伊莱

4

1 回答 1

1

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

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

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

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

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

于 2017-02-16T05:25:22.610 回答