在 IOS 9 上使用 AVPlayer 和 Swift 反向播放视频
Play video in reverse using AVPlayer and Swift on IOS 9
我有一个录制的视频剪辑,我想反向播放。
向前播放没问题,但是一旦我搜索到视频文件的结尾并将播放速率设置为 -1.0,视频剪辑就会搜索到剪辑的结尾(我在上面的时间轴栏中看到了这一点视频)但不反向播放。
呈现播放器视图控制器后,我检查它是否可以使用:
print("readyForDisplay = \(playerViewController.readyForDisplay)")
这说明一切准备就绪,可以开始玩了。
我检查是否可以反向播放:
let reversePlay = playerViewController.player!.currentItem?.canPlayReverse
print("reversePlay = \(reversePlay)")
这 returns 正确
然后我搜索到剪辑的末尾并将播放速率设置为 -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。
这可能是一个错误吗?
总之在请求播放视频后立即设置速率达到了想要的效果。
我有一个录制的视频剪辑,我想反向播放。
向前播放没问题,但是一旦我搜索到视频文件的结尾并将播放速率设置为 -1.0,视频剪辑就会搜索到剪辑的结尾(我在上面的时间轴栏中看到了这一点视频)但不反向播放。
呈现播放器视图控制器后,我检查它是否可以使用:
print("readyForDisplay = \(playerViewController.readyForDisplay)")
这说明一切准备就绪,可以开始玩了。
我检查是否可以反向播放:
let reversePlay = playerViewController.player!.currentItem?.canPlayReverse
print("reversePlay = \(reversePlay)")
这 returns 正确
然后我搜索到剪辑的末尾并将播放速率设置为 -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。
这可能是一个错误吗?
总之在请求播放视频后立即设置速率达到了想要的效果。