Yur*_*i J 5 objective-c scrollview ios avplayer swift
我正在开发一个视频库,我有一个 ScrollView,里面有多个视图,每个视图都有一个 AVPlayer - 到目前为止,我想这是非常标准的。请注意,所有 AVPlayer 都预先加载了他们的视频,等待播放。
当我在图库中有很多项目(视频)时会出现问题。在任何给定时间 - 从头到尾只显示其中的 16 个,其余显示黑屏。如果我颠倒项目的顺序 - 显示新侧的其他 16 个,其余的也显示黑屏。
此外,如果我转到另一个屏幕,然后又回到画廊 - 一切都变黑了,没有任何显示。
如果我为每个视图用随机颜色背景替换播放器 - 将显示所有视图。所以我认为问题在于玩家而不是观点本身。
根据 Xcode,我的应用程序仅使用 ~7-10% CPU 和 ~10-11 MB 的 RAM,因此它看起来不像是性能问题 - 更像是并发活动 AVPlayer 的限制,但我找不到任何相关信息.
有没有人有什么建议?这真让我抓狂。
提前致谢!
我在不同的上下文中遇到了与您相同的问题(我有一个加载视频的表格视图,但在单击 16 次后它停止工作)。
这些是帮助我解决问题的一些线索:
AVPlayerItem 失败,并显示 AVStatusFailed 和错误代码“无法解码”
本质上,可以创建 16 个 avplayers/avplayerlayers 的硬性限制。如果你试图超过这个范围,你就会表现出古怪的行为。
在您的特定情况下,您将必须创建 16 个视频的缓冲区并删除/添加它们,因为它们在滚动视图上不再可见。我建议将缓冲区调低(如 8),因为 16 会导致最新的 iphone 型号出现严重的延迟。
要删除播放器,请使用以下代码:
player.pause()
player = nil
playerLayer.removeFromSuperlayer()
Run Code Online (Sandbox Code Playgroud)
确保玩家是一个变量(不要使用let)并且它是一个可选类型。
var player : AVPlayer? = AVPlayer(url: videoURL as URL)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
1725 次 |
| 最近记录: |