
Docker + ffmpeg 動画から画像を抜き出す
ffmpegは動画の加工・変換などいろいろできるすごいやつ。
これにより動画から画像を抜き出したい。
しかし、インストールして環境が汚れるのは恐怖。
なのでDockerを使い、コンテナ上でffmpegを扱う。
Dockerは前回(DockerをWindows10で使う)インストールした。
1. Dockerイメージ ダウンロード
コマンドプロンプトから
1 | docker search ffmpeg |
と打つとDocker Hub(Dockerイメージが置いてあるとこ)にある、名前にffmpegと付いたDockerイメージを検索できる。
検索した結果jrottenberg/ffmpegが一番メジャーっぽいのでこれを使う。
1 | docker pull jrottenberg/ffmpeg |
と打つとjrottenberg/ffmpegイメージがダウンロードできる。
1 | docker images |
で確認。
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
表示された。ちゃんとある。
続いてちゃんと動くか試す。
1 | docker run --rm jrottenberg/ffmpeg |
と打つ。ちゃんと動くとjrottenberg/ffmpegで使えるコマンドの説明がたくさん表示される。--rmはコンテナの実行終了時にコンテナを消してくれるオプション。
2 コンテナ内とファイル共有
Dockerを使ってコンテナ上でアプリを起動した場合、その空間はコンテナ外から切り離されているため通常はコンテナの外にあるファイルを扱えない。
今回はffmpegを使って動画を加工したいのでそれだと困る。
なのでDockerの設定を変更してローカルファイルを扱えるようにする。
まずはDockerの設定画面を開く。

デスクトップ右下のクジラをクリック。

「Settings」をクリック。

「Resources」→「FILE SHARING」にコンテナと共有したいフォルダを設定。
今回はC:\Dockerとした。
「Apply & Restart」を押すと設定が変更される。
3. ffmpeg 動画から画像抜き出し
1 | docker run --rm -v C:/Docker/ffmpeg:/ffmpeg jrottenberg/ffmpeg -i /ffmpeg/test.mp4 -r 1 -f image2 /ffmpeg/img%03d.jpg |
とすると、画像がばーっと出てくる。
-v 「共有したいフォルダ」:「コンテナで使うフォルダ」としたので、コンテナの中で「共有したいフォルダ」の中のファイルが扱える。jrottenberg/ffmpeg -i /ffmpeg/test.mp4 -r 1 -f image2 /ffmpeg/img%03d.jpgの-iはなんか絶対いるやつ。/ffmpeg/test.mp4は入力ファイル名。-r 1は1秒に1枚切り出すという指定。-f image2は画像に変換するという指定。/ffmpeg/img%03d.jpgは出力ファイル名、%03dの部分が3桁の連番になってくれる。


