ffmpeg - ビデオからさまざまなセクションの画像を取得し、増分番号を付ける

ffmpeg - ビデオからさまざまなセクションの画像を取得し、増分番号を付ける

私は ffmpeg を使用してビデオから静止画像を抽出しています。-ss および -t パラメータを使用して、指定された時間から指定された期間までです。

ffmpeg -ss 00:10:01 -t 2 -i /Volumes/OO_8/VideoSource.mkv -qscale:v 2 -start_number  /Users/Olivier/Pictures/ScreenCaptures/ViewsOfNature-%4d.jpeg

(最初にタイムスタンプ/期間から始めて、ffmpeg がその時点でデマルチプレックスを開始するようにします。)

ただし、開始点をいくつか使用したい (たとえば、00:01:12 で 2 秒間の画像を抽出し、00:11:00 分で 4 秒間の画像を抽出するなど)。タイムスタンプと期間を置き換え、そのたびに出力画像を移動することで、これを手動で実行できますが、理想的には、タイムスタンプと期間を一度に入力し、出力画像を上書きしないようにします。これを行う方法はありますか? タイムスタンプ/期間を含む外部ファイルを使用する方法はありますか?

私はこの分野は初心者なので、bash ではなく ffmpeg のみで実行することを好みます。

答え1

ffmpeg で簡単に実行する方法はありません。セグメント muxer はありますが、セグメントの継続時間を設定することはできません。

このように実行しても問題はありません。これはかなり簡単だと思います。開始点と期間のコンマ区切りリストを含むテキスト ファイルを作成するだけです。

$ cat split.txt
00:01:05,5
00:06:10,2
00:08:25,1

そしてBashでは次のようになります:

count=1
while read -r -d ',' start duration; do
  ffmpeg -ss "$start" -i input.mp4 -t "$duration" "$count-output-%04d.jpg"
  (( count++ ))
done < split.txt

これにより、一意の番号 (1、2、3、…) で始まる出力ファイルが作成されます。

関連情報