2016-11-10 64 views
1

我想使用ffmpeg將每個塊的視頻塊大小不超過3分鐘。我已閱讀過有關ffmpeg的這個命令。不知道文件持續時間的分割視頻

ffmpeg -i output.mp4 -ss 0 -t 180 -c copy outputVideoSegment.mp4 

我使用它在我的代碼一樣

String command = "ffmpeg -i videos/testing.vob -ss 0 -t 180 -c copy outputVideoSegment.mp4"; 

      ProcessBuilder processBuilder = new ProcessBuilder("/bin/sh", "-c", command); 
      try { 
       Process process = processBuilder.start(); 
       process.waitFor(); // to wait for process builder to finish the 
            // process 
      } catch (Exception exception) { 
       log.error("Exception occured in making chunks due to " + exception.getCause()); 
      } 

上面的命令做工精細和劈裂視頻到3分,但對我來說我要讀文件,所以我不知道到底文件的持續時間。我是否需要在循環內部或其他任何方式運行上面的命令。請幫助。

+0

感謝#aergistal,請分享一下適當的ffmpeg命令。 –

回答

3

只有每180s有一個關鍵幀時,段持續時間纔會恰好爲180s。

只有當您的輸入視頻在分割點處已經有關鍵幀時,才能使用-c copy

如果沒有,你必須重新編碼和分裂之前添加它們:

ffmpeg -i <input> -g 250 -sc_threshold 0 -f segment -segment_time 180 segment_%02d.mp4 

其中:

  • -g 250 [幀]以25 fps增加了一個關鍵幀,每250幀(10秒)
  • -sc_threshold = 0避免了場景變化插入關鍵幀
  • -segment_time 180 [秒]創建指定的持續時間的段,並且必須b e是關鍵幀間隔的倍數
+0

感謝#aergistal上面的命令,它的工作正常,但在播放第一個分割視頻時播放得很好,但第二個和其他分割視頻在黑暗中持續幾個時間然後播放。 –

+0

我不知道你如何使用細分市場,但你可以嘗試添加'-segment_format_options movflags = + faststart' – aergistal

+0

我只是想我所有的塊部分從它以前的ends.I使用像你建議ffmpeg -i video.mp4 -g 250 -sc_threshold 0 -f segment -segment_time 20 -segment_format_options movflags = + faststart videos/chunks/segment_%02d.mp4 –