「動画から連続写真を取り出したい」
「動画から指定した範囲の画像を抽出したい」
このような場合には、この記事の内容が参考になります。
この記事では、動画から静止画を切り出して保存する方法を解説しています。
本記事の内容
- 動画から静止画を切り出すために必要なツール
- FFmpegを使って動画から静止画を切り出す方法
- FFmpegを使って動画から範囲指定で静止画を切り出す方法
それでは、上記に沿って解説していきます。
動画から静止画を切り出すために必要なツール
動画から静止画を切り出すには、いろいろな方法があります。
今回は、FFmpegを使った方法を説明します。
FFmpegはコマンドラインツールです。
そのため、GUIツールに慣れている人からすると抵抗があるかもしれません。
しかし、恐れることは全くありません。
FFmpegの使い方は簡単であり、多くの情報が公開されています。
もしFFmpegのインストールがまだの方は、これを機会にインストールしてみてください。
FFmpegのインストールについては、以下が参考になります。
以上、動画から静止画を切り出すために必要なツールを説明しました。
次は、FFmpegを使って動画から静止画を切り出す方法を説明します。
FFmpegを使って動画から静止画を切り出す方法
Windows環境を前提に説明を行います。
まず、動画を用意しましょう。
ここでは、Pexelsから8秒の動画をダウンロードします。
https://www.pexels.com/ja-jp/video/5617135/
サイズは、以下を選択。
ダウンロードした動画ファイルを適当なディレクトリの下に配置します。
動画ファイル以外には何もありません。
この場所でコマンドプロンプト(もしくはPowerShell)を起動させます。
そして、次のコマンドを実行します。
ffmpeg -i input_video.mp4 -vf fps=1 output_image_%04d.png
処理はすぐに終わります。
処理完了後、画像が生成されていることを確認できます。
コマンドにおいて、「-vf fps=1」は説明しておきましょう。
これは、1秒ごとに1枚の画像を抽出することを指定しています。
8秒の動画のため、8枚の画像が抽出されています。
「-vf fps=0.5」の場合、2秒ごとに1枚の画像が抽出されます。
8秒の動画のため、4枚の画像になります。
「-vf fps=2」の場合、0.5秒ごとに1枚の画像が抽出されます。
8秒の動画のため、16枚の画像になります。
フレームレートが高かければ、動画は滑らかになりますよね。
そして、その分だけ画像枚数も必要になります。
その考え方で画像を切り出しているということです。
以上、FFmpegを使って動画から静止画を切り出す方法を説明しました。
次は、FFmpegを使って動画から範囲指定で静止画を切り出す方法を説明します。
FFmpegを使って動画から範囲指定で静止画を切り出す方法
次は、範囲を指定して動画から画像を切り出してみましょう。
先ほどの動画を対象にして、範囲は3秒から2秒間とします。
ffmpeg -i input_video.mp4 -ss 00:00:03 -t 00:00:02 -vf fps=1 output_image_%04d.png
「-ss 00:00:03」は、抽出を開始する時間を指定しています。
3秒目から抽出開始ということです。
「-t 00:00:02」は、抽出する持続時間の指定となります。
2秒間の範囲を対象にしています。
上記コマンドの結果は、以下。
「-vf fps=1」であるため、1秒間に1枚の画像が切り出されることになります。
2秒間の間切り出されるため、合計で2枚の画像が切り出されたということです。
では、「-vf fps=3」を試してみましょう。
想定では、2 x 3 = 6 で6枚の画像が切り出されるはずです。
ffmpeg -i input_video.mp4 -ss 00:00:03 -t 00:00:02 -vf fps=3 output_image_%04d.png
結果は、想定通りに2秒の間の画像が6枚切り出されました。
以上、FFmpegを使って動画から範囲指定で静止画を切り出す方法を説明しました。