【问题标题】:AVPlayer crashes after multiple usage - iOS多次使用后 AVPlayer 崩溃 - iOS
【发布时间】:2017-02-12 13:31:28
【问题描述】:

我正在使用AVPlayer 对象在我的应用程序中流式传输超高清视频。它的用法非常简单,但在 5~6 个流之后我遇到了问题。

问题

应用程序崩溃,调试会话关闭,我在控制台上有一条消息:

来自调试器的消息:由于内存问题而终止

每次在 iPhone 6 上观看 4 或 5 个视频,在 iPhone 7 上观看 7 或 8 个视频后,都会发生这种情况。

我尝试过的

因为调试会话在我的应用崩溃时结束,所以我无法准确看到崩溃发生时的内存使用情况。然而,在它崩溃之前,调试会话告诉我应用程序使用了 2.5% 的 RAM,即使在 4 个流之后也是如此。没那么多!

我使用 Instruments 记录了我的分配,发现我从来没有使用超过 40MiB,这真的不算多。

我的代码

我只在我的主用户会话中存储了一个AVPlayer,因此调试会话和仪器分配记录从一开始就包括我的播放器的内存。

每次用户退出播放器视图控制器时,我只用 nil (Swift) 替换当前播放器项目,如下所示:

player.replaceCurrentItem(with: nil)

如果用户想看另一个视频,我再次将当前项目替换为新项目。

我尝试为每个视频创建一个AVPlayer,但这并没有改变任何东西。

问题

有人知道发生了什么吗?

使用AVPlayer 流式传输 4K 视频是个好主意吗?

Youtube iOS 应用使用哪个播放器?

许多 VR 应用(Jaunt、Within、NYT VR、Sky VR 等)都在为虚拟现实流式传输 4K 视频。知道他们使用的是哪个播放器吗?

注意

我在这个项目中使用 Swift,但如果你愿意,可以用 Objective-C 来回答!

【问题讨论】:

    标签: ios objective-c swift stream avplayer


    【解决方案1】:

    您确定播放器已正确重置吗?我的意思是,如果您在播放器控制器中使用任何子视图,则可能某些视图未正确释放。也尝试调用退出的播放器视图控制器:

    player.replaceCurrentItemWithPlayerItem(nil)
    

    如果您正在处理 KVO,我可以向您推荐一个对我有很大帮助的库。查看以下内容:PlayerView

    【讨论】:

    • 嗨!我几乎可以肯定我的播放器视图控制器已正确释放,因为内存使用不会改变整个体验......感谢包装器,我会看看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多