我有两个AVPlayer()
项目播放相同持续时间(10秒(的视频。目标是让它们循环并保持彼此同步。我将它们添加为同一UIView
的子图层,然后在每个子图层上调用player.play()
。
但问题是,由于代码执行显然有最轻微的延迟,因为一个在另一个之后被调用,视频是不同步的(虽然只有几毫秒,但它很明显(。
我没有选择创建AVMutableComposition,因为我看到其他帖子建议,所以无论如何让两个独立的玩家真正保持同步并完全同时播放吗?
谢谢!
如果要实现同步,则应使用AVPlayer单独加载视频并观察每个播放器的AVPlayerItemStatus
属性。仅当所有玩家都具有状态.readyToPlay
时,您才能遍历玩家并设置.rate
属性。
编辑:
您还可以使用setRate(_:time:atHostTime:)
来同步它们。不要忘记在调用setRate
之前开始使用preroll(atRate:completionHandler:)
加载媒体数据。基本上:
- 等待
readyToPlay
preroll(atRate:completionHandler:)
当所有玩家都准备好时setRate(_:time:atHostTime:)
当所有玩家都预卷时