2017/02/16

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

Android で Custom Progress Bar を作る方法 を書いてて、アニメーションGIF を作った時の備忘録。

結局、ffmpeg で全フレームを静止画に変換し、各フレームを ImageMagick で処理してから、アニメーションGIFに変換するのがベストという結論に。

ffmpeg で全フレームを静止画にする

1
$ ffmpeg -i input.mp4 -r 15 %03d.bmp

-r はフレームレート

ImageMagick で変換する

切り出すなら crop、サイズ変換なら resize 等で変換する1

1
2
$ mkdir out
$ convert -crop 500x500+120+120 '*.bmp' out/%03d.bmp

ImageMagick は連番処理機能を備えているので、こういう時便利。 ただし、ffmpeg1 からの連番なのに対し、ImageMagick0 からの連番になるため、ファイル名が一致しないのには注意。 今回の件では、この後 アニメーションGIFに変換しちゃうのでズレても関係ないけど。

参考

ImageMagick でアニメーションGIFにする

ImageMagick にはアニメーションGIF の作成機能もある。

1
2
$ cd out
$ convert -delay 6 *.bmp animation.gif

なお、-delay の単位は 1/100 秒。 よって、100 / フレームレート[fps] で求めることが出来る。

  1. convert の代わりに mogrify を使えば入力ファイルをそのまま変換できる。スクリプトで処理する時などは便利。 
?

0 件のコメント: