两个AVPlayervideo不同步(Swift)

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

但问题是,由于代码执行明显有一个被调用的时间稍微延迟,video不同步(虽然只有几个毫秒,这是显而易见的)。

我没有select创build一个AVMutableComposition,因为我已经看到其他post的build议,那么是否有两个单独的球员真正保持同步,并在同一时间播放?

谢谢!

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

编辑:

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

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