ffmpeg：動画ファイルから連番画像をつくる

# やりたいこと
動画ファイルから連番のpngをつくりたい。
コマンドプロンプトからFFmpegコマンドを実行して、動画から画像ファイルに変換する。

# 環境
* Windows11 64bit

# ffmpegとは
FFmpeg（エフエフエムペグ）は動画や音声を変換できるコマンドラインツール。クロスプラットフォームなので、Unix系やMacでも使用できる。
出典：[FFmpeg - Wikipedia](https://ja.wikipedia.org/wiki/FFmpeg)

# ffmpegの準備
## ダウンロード
HPからFFmpegをダウンロードする。

1. 公式サイト [https://ffmpeg.org/](https://ffmpeg.org/) へ行き、「Download」をクリックする
	![hp_FFmpeg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/9a6c1826-bef4-df53-976c-618707f6dccf.png)

1. 「Windowsのマーク」→「Windows builds by BtbN」をクリックする
	![Windows_builds_by_BtbN.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/b068b354-a8dc-6aca-28c4-eb56d9eac369.png)

1. windowsのファイルを選びダウンロードする
今回は「ffmpeg-master-latest-win64-gpl.zip」を選択。
	![download_zip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/1d350b7d-e586-a26e-1891-730a14e1f4db.png)

1. ダウンロードしたzipファイルを解凍し、適当なフォルダに格納する
	![unzip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/30bd4d13-0c34-417e-52fd-ea8801b90aef.png)

## 環境変数にPATHを追加
解凍したexeファイルのフルパスを指定すればコマンドを使用できる。
例：`> C:\Program Files\ffmpeg\bin\ffmpeg.exe ffmpeg ...`

が、いちいちフルパスを入力するのは面倒なので、PATHに追加することで「ffmpeg」とだけ入力すればコマンドを実行できるように環境変数にPATHを追加する。

1. 「Win」マークを押し検索窓に「Path」などと入力し、「システム環境変数の編集」をクリックする
	![edit_environment_variables.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/e3704e9e-6d66-16ac-4121-47a9f190d240.png)

1. 「環境変数」をクリックする
	![environment_variables.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/0088ed4f-39a6-99ed-e891-d7dda2b49950.png)

1. 「〇〇のユーザー環境変数」もしくは「システム環境変数」から「Path」を選択し、「編集」をクリックする
	![system_environment_variables.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/40405371-d48f-75f7-2da0-baeacc60265d.png)

	システム環境変数とユーザ環境変数の違いは以下。好きな方を選ぶ。
	* システム環境変数：PC上のユーザ全員に適応する
	* ユーザ環境変数：今ログイン中のユーザのみに適応する

1. 「新規」をクリックし、先ほど解凍したファイルのexeファイルが格納されているパスを記入し「OK」をクリックする
	![edit_system_environment_variables.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/cc9a1ef9-7e98-d8da-d1c6-bdd5071a75ca.png)

1. 環境設定が完了すれば、コマンドプロンプトで「ffmpeg」と入力すればコマンドが使えるようになる
	![command_ffmpeg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/97b1fa8d-d0af-3f9f-9175-6bba366e2d74.png)

# ffmpegコマンドの実行
## ffmpegコマンドの構文

```comand
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
```

## ffmpegを使って動画から連番画像をつくる例
コマンドプロンプト上でffmpegコマンドを実行すれば、動画ファイルから連番画像をエクスポートできる。
以下は「D:\sample\ファイル名.mp4」から1秒あたり30枚の画像を「D:\sample\image001.png」からの連番でエクスポートする例。

```bat
rem フォルダ名
SET folder_path=D:\sample

rem ファイル名
SET file_name=test.mp4

rem 動画ファイルから連番画像をエクスポート
ffmpeg -i "%folder_path%\%file_name%" -r 30 "%folder_path%\image%03d.png"
```

以下オプションの説明。

* -i \<filename>
	* 入力ファイルのパス

* -r \<rate>
	* フレームレート（1秒あたりの枚数）を指定値に変換する。指定しない場合は入力ファイルの値を継承

これで動画から連番画像がエクスポートされる。

![export.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/027a11d4-7e26-d108-ff6c-fcee36e176d5.png)

出典：[ffmpeg Documentation](https://ffmpeg.org/ffmpeg.html)
出典：[最新ffmpegのオプションまとめ - MobileHackerz Knowledgebase Wiki](http://mobilehackerz.jp/archive/wiki/index.php?%BA%C7%BF%B7ffmpeg%A4%CE%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3%A4%DE%A4%C8%A4%E1)