同步多个AVPlayers

时间:2014-04-24 15:52:21

标签: ios objective-c video uiview avplayer

我正在努力为我遇到的问题找到解决方案。我有5 UIView个,它们都在同一个位置。每个UIView都会保留AVPlayer个不同的视频。更准确地说,它们都是相同的视频,但编码的播放速度不同。

  1. 视频1x速度
  2. 视频4倍速
  3. 视频8倍速
  4. 视频16倍速
  5. 视频24倍速
  6. 默认情况下,视频1是可见的并且正在播放,但我应该能够在视频之间切换,但切换对于用户来说不应该是可见的,因此,我需要保持它们同步。因此,如果我正在观看视频1并切换到视频2,则视频2应该正好在视频1停止的位置播放。

    感觉就是看起来,视频在行动后加速,例如。一个轻弹的手势。

    我希望我能够很好地描述我的问题,我非常感谢任何建议。

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];

希望这有帮助。