ffmpeg でビデオを X 秒の部分に分割する

ffmpeg でビデオを X 秒の部分に分割する

長さが 1 分 35 秒のビデオが 1 つあります。このビデオを複数の 30 秒のセグメントに分割できます (ビデオを分割する他の方法があることは承知していますが、特別な理由からこの方法を選択しました)。ただし、この方法では 30 秒のビデオが 3 つと、5 秒のビデオが 1 つ生成されます。15 秒未満のビデオを削除してセグメントに追加する最善の方法は何でしょうか。

セグメントに分割

ffmpeg -i test.mp4 -codec:v copy -codec:a copy -segment_time 30 test-%03d.mp4

間隔

ffprobe -i test.mp4 -show_format -v quiet | grep '.=.'

答え1

ffmpeg だけではそれができません。最小継続時間を指定する方法がないため、個々のセグメントの継続時間を自分で計算する必要があります。

この場合、おそらくビデオの全体の長さを 2 回繰り返します。最初の実行では、セグメントの長さを決定します。最後のセグメントが、たとえば 15 秒より短い場合は、最後から 2 番目のセグメントの長さを調整するだけです。これは、スクリプト言語を使用して簡単に行うことができます。

それができたら、segmentマルチプレクサー個々のセグメントの継続時間:

-segment_times 0,30,60,80

関連情報