2017/02/16

動画を切り出してアニメーションGIFを作る方法

[Android で Custom Progress Bar を作る方法](http://kokufu.blogspot.jp/2017/02/android-custom-progress-bar.html) を書いてて、アニメーションGIF を作った時の備忘録。

結局、[ffmpeg](https://ffmpeg.org/) で全フレームを静止画に変換し、各フレームを [ImageMagick](https://www.imagemagick.org/script/index.php) で処理してから、アニメーションGIFに変換するのがベストという結論に。 ### ffmpeg で全フレームを静止画にする ```console $ ffmpeg -i input.mp4 -r 15 %03d.bmp ``` `-r` はフレームレート ### ImageMagick で変換する 切り出すなら `crop`、サイズ変換なら `resize` 等で変換する`convert` の代わりに `mogrify` を使えば入力ファイルをそのまま変換できる。スクリプトで処理する時などは便利。。 ```console $ mkdir out $ convert -crop 500x500+120+120 '*.bmp' out/%03d.bmp ``` [ImageMagick](https://www.imagemagick.org/script/index.php) は連番処理機能を備えているので、こういう時便利。 ただし、[ffmpeg](https://ffmpeg.org/) が `1` からの連番なのに対し、[ImageMagick](https://www.imagemagick.org/script/index.php) は `0` からの連番になるため、ファイル名が一致しないのには注意。 今回の件では、この後 アニメーションGIFに変換しちゃうのでズレても関係ないけど。 > 参考 > - [Just another Ruby porter, 2012-1-c](http://jarp.does.notwork.org/diary/201201c.html#20120123) ### ImageMagick でアニメーションGIFにする [ImageMagick](https://www.imagemagick.org/script/index.php) にはアニメーションGIF の作成機能もある。 ```console $ cd out $ convert -delay 6 *.bmp animation.gif ``` なお、`-delay` の単位は `1/100` 秒。 よって、`100 / フレームレート[fps]` で求めることが出来る。

0 件のコメント: