我正在尝试为遇到的问题找到解决方案。我有 5 个 UIView
,它们都在同一个位置。每个 UIView
都包含一个包含不同视频的 AVPlayer
。更准确地说,它们都是相同的视频,但以不同的播放速度编码。
- 视频 1 倍速
- 视频 4 倍速
- 视频 8 倍速
- 视频 16 倍速
- 视频 24 倍速
默认情况下,视频 1 可见并正在播放,但我应该能够在视频之间切换,但用户不应看到切换,因此,我需要使它们保持同步。因此,如果我正在观看视频 1 并切换到视频 2,那么视频 2 应该正好在视频 1 停止的位置播放。
意思是它应该看起来像,视频在某个 Action 之后正在加速,例如。轻弹手势。
我希望我对我的问题的描述足够好,非常感谢您的任何建议。
最佳答案
我最终使用了一个观察者,它拍摄了 currentTime
的快照每 5 秒,并调用所有其他 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];
希望这对您有所帮助。
关于ios - 同步多个 AVPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23273845/