我正在使用AVPlayer
对象在我的应用中流式传输超高清视频。它的使用非常简单,但我在5~6个流之后遇到了问题。
应用程序崩溃,调试会话关闭,我在控制台上有一条消息:
来自调试器的消息:由于内存问题而终止
每次观看iPhone 6上的4或5个视频以及iPhone 7上的7或8个视频后,都会发生这种情况。
因为调试会话在我的应用程序崩溃时结束,所以在发生崩溃时我无法准确地看到内存使用情况。但是,在崩溃之前,调试会话告诉我,即使在4个流之后,仍有2.5%的RAM用于应用程序。没那么多!
我使用乐器记录了我的分配,发现我从未使用超过40MiB,实际上并没有那么多。
我只在我的主用户会话中存储一个AVPlayer
,因此调试会话和乐器分配记录从头开始包含我的播放器的内存。
每次用户退出播放器视图控制器时,我只会将当前播放器项目替换为nil(Swift),如下所示:
player.replaceCurrentItem(with: nil)
如果用户想再次看到另一个视频,我会用新的视频替换当前项目。
我尝试为每个视频创建一个AVPlayer
,但这并没有改变任何内容。
有人知道发生了什么事吗?
使用AVPlayer
来传输4K视频是个好主意吗?
Youtube iOS应用使用哪个播放器?
许多VR应用程序(Jaunt,Within,NYT VR,Sky VR,......)都是为虚拟现实播放4K视频。知道他们使用的是哪个球员吗?
我正在使用Swift进行此项目,但如果您愿意,可以在Objective-C中自由回答!
答案 0 :(得分:0)
你确定播放器正确重置吗?我的意思是如果您在播放器控制器中使用任何子视图,则某些视图可能无法正确释放。还可以尝试调用退出的播放器视图控制器:
player.replaceCurrentItemWithPlayerItem(nil)
如果您正在处理 KVO ,我可以向您推荐一个帮助我很多的图书馆。请查看以下内容:PlayerView