两个 AVPlayer 视频不同步 (Swift)

sim*_*ity 0 ios avplayer swift

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

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

正如我看到其他帖子所建议的那样,我没有创建 AVMutableComposition 的选项,那么无论如何要让两个独立的播放器真正保持同步并完全同时播放?

谢谢!

And*_*ren 5

如果你想实现同步,你应该用AVPlayer单独加载视频并观察AVPlayerItemStatus每个播放器的属性。只有当所有玩家都有状态时,.readyToPlay您才能循环播放玩家并设置.rate属性。

编辑:

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

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