ffmpeg で複数の動画から静止画書き出し、など。ワンライナー備忘録。
この記事は投稿されてから1年以上経っています。内容が古くなっているかもしれませんので、ご注意ください。
記事書き始め時点のバージョン
※ OS X Yosemite(10.10.5)
※ ffmpeg 2.8.6
静止画を書き出す
開始地点(-ss)はソースの指定(-i)より手前に置く
ということで、動画についての記述ですが、シークについては静止画もかわらないんじゃないかなとおもいますので、その方針に習いたいと思います。
1つだけ静止画を書き出す
$ ffmpeg -ss 1 -i aaa.mov -vframes 1 -f image2 %04d.png
- -i:ファイル指定
- -ss:抜き出し始点・・・1秒
- -vframes:指定したフレーム数だけ書き出し・・・1つ
- -f image2 %04d.png:書き出しファイル名・・・[0001.png]から連番
複数のファイルから静止画を書き出す
find と xargs とかで出来るかと思ったら出来なかった(よくわからなかった)。for 文を使うと出来た。
for i in `find . -name "*.mov"` ; do ffmpeg -ss 1 -i $i -vframes 1 -f image2 $i%04d.png ; done
ちょっとファイル名が残念な感じになりますが、まぁ。
画像大量過ぎる fps調整
1秒あたり30コマの動画で抽出対象時間を1分間にすると1800枚も画像ができてしまうので、フレームレートを落とす。
-r の後に fps で指定。
$ ffmpeg -ss 1 -r 5 -i aaa.mov -vframes 10 -f image2 %04d.png
0.1fps にしても代わり映えのない静止画が並ぶ、、、
画像大量過ぎる 特定フレーム抽出
$ ffmpeg ・・・
この辺を参考にさせていただいているのですが、うまく行かず・・・あとで調査を、。