swift 允许同时创建多少个AVPlayer?

lymgl2op  于 2023-05-16  发布在  Swift
关注(0)|答案(2)|浏览(150)

我有一个collectionView,每个cell都有一个AVPlayer,它被设置为播放。所以每个细胞都在同时播放视频。iOS只允许同时播放16个视频。例如,看看我下面的示例应用程序。在50个cells中,只有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]视频播放器状态失败:播放器项错误=错误域=AVFoundationErrorDomain Code=-11839“无法解码”UserInfo={NSUnderlyingError= 0x 1704414 d 0 {错误域=NSOSStatusErrorDomain Code=-12913“(null)"},NSLocalizedFailureReason=此媒体所需的解码器正忙碌。,NSLocalizedRecoverySuggestion=停止解码媒体的任何其他操作并重试。,NSLocalizedDescription=无法解码} 2016-11-07 15:53:46.548358 SampleApp[1810:515089]视频播放器状态失败:播放器错误=(null)
你可以有多少个AVPlayer有限制吗,还是我做错了什么?
谢谢!

flmtquvp

flmtquvp1#

实际上,您可以同时保持活动的AVPlayer示例的数量有上限,但此限制取决于您的代码运行的平台。我自己发现,在运行iOS 8的iPhone 5s上,并发AVPlayer示例的数量限制为4个。Here,例如,用户报告tvOS的限制为7,而2012年in stack overflow报告的限制为4。
在任何情况下,此限制都没有正式记录,这意味着它可以在平台和操作系统版本之间来回更改,因此您不应该基于此编写任何代码,而只是将并发AVPlayer示例保持在尽可能低的水平。

yyhrrdl8

yyhrrdl82#

这并不是说你不能有多个AVPLAyer,你不能有太多的AVPlayerItem与AVPlayers相关联,就像在player = AVPlayer(playerItem: playerItem)中一样。
例如,你可能有多个vcs,并且在每个vcs中,你都有一个播放器,该播放器使用playerItem初始化,最终你的应用程序将崩溃。
您必须将playerItem与播放器player?.replaceCurrentItem(with: nil)解除关联,以防止出现任何问题。
崩溃前player/playerItems的数量取决于设备,但在iPhone 7+上,14-16绝对是极限,之后会发生崩溃。
你可以阅读更多关于它herehere

相关问题