動かざることバグの如し

近づきたいよ 君の理想に

FFmpegで指定時間ごとに静止画を切り出して連番画像で出力する

動画を機械学習されるあたり、画像に変換する必要があったのでメモ。なんかググって一番最初に出てきたサイトのオプションではできなかったので注意

1秒毎に〜枚画像を生成したい場合

-rオプションをつけることで指定フレームごとに抽出できる。以下のように-r 2をつけると1秒あたり2枚の画像を出力する。動画が1分あれば120枚の画像が出力されるはず。

ffmpeg -i input.mp4 -r 2 -vcodec mjpeg image_%04d.jpg

〜秒毎に1枚画像を生成したい場合

fpsオプションで可能。以下は1秒毎に画像を出力したい場合

ffmpeg -i input.mp4 -filter:v fps=fps=1:round=down image_%04d.jpg

fpsはframe per second の略で、「1秒あたりのフレーム数」という意味である。つまり、値を小さくすればその分秒が伸びる。以下は10秒毎

ffmpeg -i input.mp4 -filter:v fps=fps=0.1:round=down image_%04d.jpg

分数でも表記可能 以下は1分ごと

ffmpeg -i input.mp4 -filter:v fps=fps=1/60:round=down image_%04d.jpg