问题描述
i具有collectionView,每个cell具有设置为播放的AVPlayer.所以每个单元格都同时播放视频.似乎iOS只允许您同时播放16个视频.例如,查看下面的示例应用程序.在50℃下,只有16开始播放视频.这个数字总是保持不变.这发生在运行iOS 10的iphone 6s上.在Xcode模拟器中,所有50个视频开始播放.此问题仅在实际设备上发生.
此外,当我打印出来时,我会得到这两个错误:
print("Video player Status Failed: player item error = (self.player.currentItem.error)") print("Video player Status Failed: player error = \(self.player.error)")
2016-11-07 15:53:46.548288 SAMPLEAPP [1810:515089] Video Player状态失败:播放器项目错误=错误域= AVFoundationErrordOmain代码= -11839"无法解码"userInfo = {nsundunderyingError = 0x1704414d0 {错误域= nsosstatuserrordomain代码= -12913"(null)"},nslocalizedfailurereason =此媒体所需的解码器很忙.,nsLocalizedRecoverySuggestion =停止解码媒体的任何其他操作,然后再试一次.,nsLocalizedDescription =无法解码} 2016-11-07 15:53:46.548358 SampleApp [1810:515089] Video Player状态失败:播放器错误=(null)
有限制你可以拥有多少AVPlayer,或者我做错了什么?
谢谢!
推荐答案
事实上,常识是您可以同时保持活力的AVPlayer实例的数量上限,但此限制取决于您的代码运行的平台. 我自己发现,在运行iOS 8的iPhone 5s上,有一个限制了4个并发avplayer实例. ,例如,用户报告TVOS的7的限制,2012年报告了相同的4个限制堆栈溢出.
在任何情况下,这个限制不是正式记录的意味着它可以在平台和操作系统版本之间来回更换,因此您不应该在这方面基于任何代码,而不是保留并发avplayer实例尽可能低.
其他推荐答案
你不能拥有多个avplayers,你不能拥有的太多与avplayers关联的avplayerItems太多,如player = AVPlayer(playerItem: playerItem).
例如,您可能有多个VCS推送,并且在每个VC中,您可以使用玩家初始化的播放器,最终您的应用程序将崩溃.
你必须从玩家player?.replaceCurrentItem(with: nil)解离玩家来防止任何问题.
在崩溃之前的player/playerItems依赖于设备之前的player/playerItems,但在iPhone 7+上,14-16肯定是极限,之后会发生崩溃.
您可以阅读更多关于它 和这里