ios - 同步多个 AVPlayer

标签 ios objective-c video uiview avplayer

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

  1. 视频 1 倍速
  2. 视频 4 倍速
  3. 视频 8 倍速
  4. 视频 16 倍速
  5. 视频 24 倍速

默认情况下,视频 1 可见并正在播放,但我应该能够在视频之间切换,但用户不应看到切换,因此,我需要使它们保持同步。因此,如果我正在观看视频 1 并切换到视频 2,那么视频 2 应该正好在视频 1 停止的位置播放。

意思是它应该看起来像,视频在某个 Action 之后正在加速,例如。轻弹手势。

我希望我对我的问题的描述足够好,非常感谢您的任何建议。

最佳答案

我最终使用了一个观察者,它拍摄了 currentTime 的快照每 5 秒,并调用所有其他 AVPLayerseekToTime方法。这可以很好地使它们保持同步。我只需要调整 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/

相关文章:

ios - 如何确定 GMSMarker 是否在 GMSPolygon 内部(iOS Google Map SDK)

javascript - 借助 JS/Jquery 函数通过 URL 加载 youtube 视频

java - 在 Java 中将视频帧保存为静态图像

java - 如何在 Java Swing 中播放视频?

ios - 只向数组插入 10 个元素

iOS UIScrollView 大小 subview 仅一次

android - iOS 的 BluetoothSocket 相当于什么?

ios - Phonegap/Cordova 中 iphone 数字键盘上的小数点

ios - Xcode 上的 BodyWithBodies

ios - 在单元格的 ImageView 中设置图像时的 CollectionView NSInvalidArgument