两个AVPlayer视频不同步(Swift)



我有两个AVPlayer()项目播放相同持续时间(10秒(的视频。目标是让它们循环并保持彼此同步。我将它们添加为同一UIView的子图层,然后在每个子图层上调用player.play()

但问题是,由于代码执行显然有最轻微的延迟,因为一个在另一个之后被调用,视频是不同步的(虽然只有几毫秒,但它很明显(。

我没有选择创建AVMutableComposition,因为我看到其他帖子建议,所以无论如何让两个独立的玩家真正保持同步并完全同时播放吗?

谢谢!

如果要实现同步,则应使用AVPlayer单独加载视频并观察每个播放器的AVPlayerItemStatus属性。仅当所有玩家都具有状态.readyToPlay时,您才能遍历玩家并设置.rate属性。

编辑:

您还可以使用setRate(_:time:atHostTime:)来同步它们。不要忘记在调用setRate之前开始使用preroll(atRate:completionHandler:)加载媒体数据。基本上:

  • 等待readyToPlay
  • preroll(atRate:completionHandler:)当所有玩家都准备好时
  • setRate(_:time:atHostTime:)当所有玩家都预卷时

最新更新