2015-11-26 78 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