我有一个录制的视频剪辑,我想倒放。
向前播放没问题,但一旦我搜索到视频文件的末尾并将播放速率设置为 -1.0,视频剪辑就会搜索到剪辑的末尾(我在视频上方的时间轴栏中看到这一点)但是不反向播放。
展示播放器视图控制器后,我检查它是否可以使用:
print("readyForDisplay = \(playerViewController.readyForDisplay)")
这告诉我一切都准备好了,可以开始玩了。
我检查是否可以反向播放:
let reversePlay = playerViewController.player!.currentItem?.canPlayReverse
print("reversePlay = \(reversePlay)")
返回 TRUE
然后我寻找剪辑的末尾并将播放速率设置为 -1.0 以进行反向播放。
playerViewController.player!.seekToTime(playerViewController.player!.currentItem!.asset.duration)
playerViewController.player!.rate = -1.0
我相信已经走到这一步了,它已经准备好玩了,因为如果我添加以下内容:
let status : AVPlayerItemStatus? = playerViewController.player!.currentItem?.status
if status == AVPlayerItemStatus.ReadyToPlay {
print("Ready to play")
}
它向我表明该剪辑已准备好播放,因此我假设已完成查找剪辑末尾(仅 2 秒长)。
然后我播放剪辑:
playerViewController.player!.play()
如果我不寻找到最后并尝试更改速率以将其设置为反向播放,那么它会播放得很好。
我在这里缺少什么?
我决定在启动视频后添加一些日志记录,发现启动前的速率为-1,启动后立即为1,因此似乎速率已重置为1。
这可能是一个错误吗?
无论如何,在请求播放视频后立即设置速率具有理想的效果。
您应该将
defaultRate
设置为 1