【问题标题】:Issue with reverse AVPlayer reverse playback反向 AVPlayer 反向播放的问题
【发布时间】:2017-06-06 13:50:02
【问题描述】:

我正在尝试为正在使用AVPlayer 播放的视频添加反向播放:

let videoURL = Bundle.main.url(forResource: "video", withExtension: "mov")
videoPlayer = AVPlayer(url:videoURL!)
let playerLayer = AVPlayerLayer(player: videoPlayer)
playerLayer.frame = self.view.frame
videoView.layer.addSublayer(playerLayer)
videoPlayer.play()

我搜索并发现如果我将AVPlayer 的速率更改为-1 电影以反向模式播放:

 func reverseVideo()  {

        videoPlayer.play()
        videoPlayer.rate = -1
    }

这确实可以正常工作,但是反向播放包含很多延迟并且播放不流畅,是否有任何可能的方法来解决此问题。我在这里阅读了其他主题,但没有帮助。

【问题讨论】:

  • 您在尝试反向播放时是否仅在开始时看到延迟?
  • @TarunTyagi 是的
  • 你有没有在playbackLikelyToKeepUp被触发后尝试调用reverseVideo方法。您可以设置观察者来跟踪此值。这里是官方documentation

标签: ios swift xcode avplayer


【解决方案1】:

此代码适用于我在 avplayer 中从本地文件系统反向播放视频。

let duration = (self.playeritem?.asset.duration)!
let durationSec = CMTimeGetSeconds((self.playeritem?.asset.duration)!)
self.avPlayer?.seek(to: duration, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
self.avPlayer?.rate = -1

【讨论】:

  • 这与 Tarun Tyagi 的答案相同,现在可以使用,顺便说一下 durationSec 在这里没用
【解决方案2】:

尝试更换 videoPlayer.play() videoPlayer.rate = -1videoPlayer.playImmediately(atRate: -1)

【讨论】:

【解决方案3】:

我不确定跟随是否能正常工作,因为我之前没有尝试过反向播放资产。我认为跟随是一个好主意,尝试在开始播放之前寻求结束。

player.seek(to: player.currentItem!.duration,
            toleranceBefore: kCMTimeZero,
            toleranceAfter: kCMTimeZero,
            completionHandler: { (finished) in
        player.play()
        player.rate = -1
    })

【讨论】:

  • 谢谢,但仍有延迟!
  • 我不确定它是否会有所帮助,但您能否在说player.play() 之前尝试分配player.rate = -1
【解决方案4】:
var durTime: CMTime = queuePlayer.currentItem.asset.duration
durationTime = CMTimeGetSeconds(durTime)

if CMTIME_IS_VALID(durTime) {
    queuePlayer.seek(toTime: durTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
}
else {
    print("In valid time")
}

现在将 AVPlayer 的 Rate 设置为负值

queuePlayer.rate = -1

【讨论】:

  • 怎样才能让它更流畅?
猜你喜欢
  • 2011-08-31
  • 1970-01-01
  • 2010-12-25
  • 2011-05-04
  • 2017-05-29
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
相关资源
最近更新 更多