AVPlayer 最多只能播放 16 个视频

AVPlayer can only play up to 16videos

我实现了一个寻呼机,其中每个页面都向用户显示一个视频。每个页面都有自己的 AVPlayer 实例化。 在第 17 个视频之前,一切都按预期工作。

关于这个问题我读了很多。这似乎是 Apple 的限制,应用程序只能显示播放器层。

我尝试的解决方案(多个消息来源说它解决了这个问题)是从其父级移除播放器层并将播放器设置为 Nil。所以每次页面消失(didDisappear)我调用:

// player and playerLayer are init at viewWillAppear().
player?.pause()
player = nil
playerLayer?.removeFromSuperlayer()

这不会改变任何东西...我仍然限制在 16 个视频播放。

因此,我的问题是:

1) 为什么会有这种行为?真的如期而至吗?

2)Musical.ly或者Snapchat是如何实现视频无限切换的?

非常感谢您的帮助。

尝试使用

更改您的代码
player?.pause()
player?.replaceCurrentItem(with: nil)
playerLayer?.removeFromSuperlayer()
player = nil

nil 项目设置为播放器将停止播放。

1) 是的,这是 AVPlayer 的预期行为。它专为创建视频播放器或在游戏中显示广告视频而设计,但不适用于像 Instagram 或类似服务的视频墙。

2) 很简单。他们没有使用 AVPlayer。为了您的目的,您可以使用 AVAssetReaderAVSampleBufferDisplayLayer

的组合