2015-11-26 82 views
0

我有一段录制的视频片段,我想反向播放。使用AVPlayer和Swift在IOS上反向播放视频9

向前播放很好,但只要我寻找视频文件的结尾并将播放速率设置为-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() 

它起着很好,如果我不求末,并试图改变速度将其设置为退播放。

缺少什么我在这里?

+0

是否因为在最后立即被解雇?你试过'seekToTime'到中间的一个地方吗?如果这是问题,你可以将它设置为1-2秒。 – Tim

+1

@ Headstock67请注意,在检查canPlayReverse并将播放速率设置为-1后,您需要使用reversePlaybackEndTime来检查结束时间 –

+0

感谢Tim的建议。我将seekToTime用于视频剪辑的中间。当它弹奏到中间,然后继续向前播放。因此将播放速率设置为-1.0似乎不会强制反向播放。 – Headstock67

回答

2

我决定启动视频后添加一些记录,发现率为-1发射前1后立即就似乎率被重置为1

难道这是一个错误?

无论如何,在请求播放视频后立即设置费率具有期望的效果。

+1

这是因为play()方法的文档说:“调用此方法与将速率设置为1.0相同。” – Mohammed