两个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:)
当所有玩家都被预先卷好的时候