2016-11-10 6 views
1

私はffmpegを使用して3分以内にそれぞれチャンクを作ります.ffmpegのこのコマンドについて読んでいます。ファイルの長さを知らずにビデオを分割する

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

私は、上記のコマンドが正常に動作し、3分にビデオをspliting

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()); 
      } 

のように私のコードでそれを使用していますが、私の場合は私は正確に知らないので、ファイルを読み込む必要がありfile.Doの実行時間は、上記のコマンドをループ内または他の方法で実行する必要があります。助けてください。

+0

ありがとうございます#aergistal、これは適切なffmpegコマンドを共有してください。 –

答えて

3

セグメント期間は、180秒ごとにキーフレームがある場合に限り、正確に180秒になります。

-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指定された期間のセグメントを作成しなければならないbは[S]シーンチェンジ
  • -segment_time 180に挿入キーフレームが回避eキーフレーム間隔の倍数
+0

上記のコマンドで#aergistalを実行しても問題ありませんが、最初の分割ビデオの再生はうまくいきますが、2番目と他の分割ビデオは再生されずに再生されます。 –

+0

どのように正確にセグメントを使用しているのか分かりませんが、 '-segment_format_options movflags = + faststart'を追加しようとすることができます – aergistal

+0

私はちょうど私のすべてのチャンクパートが前のどこから終わるかを知りたいです。私はffmpeg -i video.mp4 -g 250 -sc_threshold 0 -fセグメント-segment_time 20 -segment_format_options movflags = +動画/チャンク/セグメント_%02d.mp4 –

関連する問題