如何正确删除/释放 AVPlayer/AVPlayerItem?

Posted

技术标签:

【中文标题】如何正确删除/释放 AVPlayer/AVPlayerItem?【英文标题】:How to properly delete/release AVPlayer/AVPlayerItem? 【发布时间】:2015-10-07 17:41:35 【问题描述】:

我正在实现一个视频应用,它列出了视频并能够流式传输或观看本地视频。如果我尝试使用继承自 AVPlayer 的播放器观看视频,则会启动很多线程,在 15-20 次后,系统无法很好地分配 AVPlayer,即使我没有收到任何错误,播放器视图也是空白的什么都没有发生...我需要杀死应用程序才能恢复。

如何处理?

提前致谢

【问题讨论】:

你能分享一些代码吗? 这个问题最近一直困扰着我,我现在正在研究它,一旦找到解决方案就会发布一些东西。 你找到这个@jay的解决方案了吗? 我也有类似的问题。当设置视频并播放良好时,会创建“com.apple.coremedia.player.async”线程。如果这些线程数变为 15+,则视频不会出现。它似乎是 AVPlayer 或 AVPlayerLayer 的限制。我也在试图弄清楚这些玩家如何正确地解除分配。你找到解决办法了吗? 【参考方案1】:

我遇到了同样的问题,在我的情况下,AVPlayerLayer 没有成功分配 DE,因为不知何故自定义标签抓住了控制器的强引用,而控制器没有分配 DE。 实施

deinit 


在你的控制器中检查这个是否被调用。如果没有,你有解决方案。 我希望这会有所帮助。

【讨论】:

以上是关于如何正确删除/释放 AVPlayer/AVPlayerItem?的主要内容,如果未能解决你的问题,请参考以下文章

在c ++中删除和释放向量内存的正确方法(防止不同的内存相关错误)

如何正确使用自定义 shared_ptr 删除器?

从数组中释放内存

NSMutableArray 如何正确添加对象并释放

正确释放Vector等STL的内存

如何正确释放 AVCaptureSession