我正在努力为我遇到的问题找到解决方案。我有5 UIView
个,它们都在同一个位置。每个UIView
都会保留AVPlayer
个不同的视频。更准确地说,它们都是相同的视频,但编码的播放速度不同。
默认情况下,视频1是可见的并且正在播放,但我应该能够在视频之间切换,但切换对于用户来说不应该是可见的,因此,我需要保持它们同步。因此,如果我正在观看视频1并切换到视频2,则视频2应该正好在视频1停止的位置播放。
感觉就是看起来,视频在行动后加速,例如。一个轻弹的手势。
我希望我能够很好地描述我的问题,我非常感谢任何建议。
答案 0 :(得分:1)
我最终使用一个观察者,每隔5秒拍摄currentTime
的快照,然后使用AVPLayer
方法调用所有其他seekToTime
。这可以很好地保持它们同步。我只需要以不同的速度为每个玩家调整CMTime
。作为一个例子,我在这里获得4x视频:
videoPosition = player1.currentTime; //gets the video duration
videoPositionInSeconds = (Float64) videoPosition.value/videoPosition.timescale; //transfers the CMTime duration into seconds
[player2 seekToTime: CMTimeMakeWithSeconds(videoPositionInSeconds/4.0, player1.currentItem.asset.duration.timescale) toleranceBefore: kCMTimeZero toleranceAfter: kCMTimeZero];
希望这有帮助。