我实现了一个寻呼机,其中每个页面向用户显示一个视频。每个页面都有自己的AVPlayer实例化。 一切正常,直到第17个视频。
关于此问题,我读了很多书。看来这是Apple的限制,其中应用程序只能显示播放器图层。
我尝试的解决方案(多个消息来源说它可以解决问题)是从其父级移除播放器层并将播放器设置为Nil。因此,每当页面消失(didDisappear)时,我都会呼叫:
// player and playerLayer are init at viewWillAppear().
player?.pause()
player = nil
playerLayer?.removeFromSuperlayer()
那什么都不会改变...我仍然只能播放16部视频。
因此,我的问题是:
1)为什么会这样?真的可以预期吗?
2)Musical.ly或Snapchat如何实现在视频之间无限切换?
非常感谢您的帮助。
答案 0 :(得分:1)
尝试使用
更改代码player?.pause()
player?.replaceCurrentItem(with: nil)
playerLayer?.removeFromSuperlayer()
player = nil
将nil
项设置为播放器将停止播放。
1)是的,这是AVPlayer的预期行为。它是为创建视频播放器或在游戏中显示广告视频而设计的,但不适用于具有Instagram或类似服务的视频墙。
2)很简单。他们没有使用AVPlayer。您可以结合使用AVAssetReader
和AVSampleBufferDisplayLayer