ffmpeg

ffmpegを使って動画から画像を抽出保存する方法

動画から画像を保存する方法ffmpeg
この記事は約3分で読めます。
書いた人
あいりゅー(irilyuu)

メインはMacOS/iPadOS/麻雀/Siriショートカットです。遊戯王は気分次第で更新。

あいりゅー(irilyuu)をフォローする

このページについて

このページではffmpegを使って動画から静止画を抽出・保存する方法を紹介しています。

ffmpegのインストール

ffmpegのインストール・基本的な使い方についてを御覧ください。

ffmpegで画像を抽出

ffmpegを使って動画から画像を抽出するには以下のオプションを使います。

%06d.jpg

これは「6桁の名前ルール.jpgで連番保存」という処理記述になります。これで保存すると画像の名前は000001.jpgという名前になり、続く2枚目の画像は0000002.jpgになります。

3桁で保存したい場合は%03d.jpgとなりますし、png形式で保存したい場合は%06d.pngとなります。

ffmpegで画像を抽出・保存する記述

実際に動画から画像を保存・抽出する際に使う記述は以下の通り。

ffmpeg -i 動画.mp4 出力フォルダ/%06d.jpg
  • -i 入力ファイルがあることを示すオプション
  • 動画.mp4 画像抽出を行いたい動画のフルパスを入力。ターミナルに動画をドラッグ&ドロップでOK。
  • 出力フォルダ 画像を保存したいフォルダを指定。これもフルパスですが、動画と同じくターミナルにドラッグ&ドロップでOK。
  • /%06d.jpg /はフォルダの以下に保存するというもので必須。これがないと保存先はルートディレクトリが選ばれます。探すのが手間なので自分はすべて画像保存用のフォルダを作成して指定してました。

これを実行すると指定したフォルダに画像が大量に保存されるはずです。フレームレートや秒数による指定をしない場合、動画の開始から終了まですべてを抽出します。

参考までに16秒の動画ですらこの記述によって959枚の画像が抽出されます。なので保存枚数を少し減らしたいと思う方は以下を参照してください。

ffmpegで指定した区間の画像を抽出

動画の秒数指定でx秒からy秒までの区間だけを画像として抽出する記述が以下。

ffmpeg -i 動画.mp4 -ss x -t y 出力フォルダ/%06d.jpg
  • -ss 動画の開始からx秒の地点を編集スタートに指定。
  • -t 動画のy秒地点を編集終了に指定。

16秒の動画の1秒から2秒までを画像として抽出する場合は以下のようになります。

ffmpeg -i 動画.mp4 -ss 1 -t 2 出力フォルダ/%06d.jpg

たった2秒の区間でしたが、結果は120枚の画像が出力されました。これは元の動画のFPS(1秒あたりに使っている画像の枚数)が60枚だったので、2秒で120枚保存されています。ちなみに-ss 1 -t 1と指定して実行すると、60枚の画像を出力することが出来ます。

ffmpegでフレームレートを指定して画像保存

今度は秒数ではなく、フレームレートを指定した出力方法です。

ffmpeg -i 動画.mp4 -r 1 出力フォルダ/%06d.jpg
  • -r フレームレートを指定するオプションです。1にすると「1秒で1枚の画像」という意味になります。

結果的に16秒の動画で18枚の画像が出力されました。これについてはよくわかりません。

ffmpegで色々指定して画像保存

最後に、ここまでの内容をまとめた出力を行いたいと思います。元の動画は16秒で、シンプルに画像出力すると959枚も出るので正直多すぎです。なので「フレームレートを1にして4秒から6秒の区間のみを保存」をやってみます。記述は以下。

ffmpeg -i 動画.mp4 -r 1 -ss 4 -t 6 出力フォルダ/%06d.jpg

結果、出力された画像の枚数は6枚。このように出力する区間を指定することで、ほしい部分のみを抽出することも可能です。

ffmpegの関連記事

その他のオプションや使い方などは以下をどうぞ。

ffmpeg使い方・オプション一覧

タイトルとURLをコピーしました