【发布时间】: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