
FFmpegで1分ごとに2秒のビデオをクリップにしたいのですm
が、
m = video_length / 5
たとえば、長さが 10 分のビデオがあるとします。ビデオ クリップの合計長さは 10 秒 (2 秒ごとに 5 つのセグメント) で、次のビデオ タイムスタンプ範囲で構成されます。
00:00 - 00:02
02:00 - 02:02
04:00 - 04:02
06:00 - 06:02
08:00 - 08:02
これにより、ビデオから一種の予告編が作成されます。
セグメントを使用してそれを実現できることはわかっていますが、プロセス全体を理解できません。
答え1
選択フィルターを使えば、これを一回で行うことができます。
ffmpeg -i in.mp4
-vf select='lt(mod(t,120),2)',setpts=N/FRAME_RATE/TB
-af aselect='lt(mod(t,120),2)',asetpts=N/SR/TB
out.mp4
答え2
私はあなたがかもしれない使用してください。ただし、少し面倒です。
次のようなコマンドでクリップを抽出します。
ffmpeg -i -ss <time to start> -t <duration> <output clip filename>
行うべきことは、この形式でクリップを抽出します。ここで-ss
はクリップの開始位置、 は-t
クリップの継続時間です。これらを抽出したら、次のように連結できます。
ffmpeg -i concat:"clip_file1|clip_file2|clip_file3" -c copy <your output file>
この形式の連結はすべてのビデオ形式で機能するわけではないので、MP4 ファイルなど他の引数を追加する必要がある場合があることに注意してください-bsf:a aac_adtstoasc
。ただし、これで必要なビデオを取得できるはずです。