私が歌川です

@utgwkk が書いている

ffmpegで高速なアニメーションGIFを作る

備忘録です。最近よくLGTM画像を作っていて、その一環で動画からアニメーションGIFを生成することが多い。

gyazo.com

このアニメーションGIFを4倍速にしたい。より正確には、元動画を4倍速にしたアニメーションGIFを作ることを考える。

ffmpegにいろいろなパラメータを渡しているけど、だいたいは綺麗なアニメーションGIFを作るためのパラメータなので、そこの解説は以下の記事に譲る。

life.craftz.dog

setpts=PTS/4

ffmpegのドキュメントに setpts というフィルターがあって、これが使えそうに見える。

FFmpeg Filters Documentation

$ ffmpeg -i momoi-lgtm.mp4 -i palette.png -lavfi "setpts=PTS/4,fps=48,scale=900:-1:flags=lanczos [x]; [x][1:v] paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" -framerate 12 -y -plays 0 -f gif out.gif

けどこれだと綺麗なアニメーションGIFにならない。カクカクするしループの瞬間に一瞬止まったような感じになる。

gyazo.com

-itsscale 0.25

もっといい方法がないかと調べていたら以下のSuper Userの回答にたどり着いた。

superuser.com

$ ffmpeg -itsscale 0.25 -i momoi-lgtm.mp4 -i palette.png -lavfi "fps=48,scale=900:-1:flags=lanczos [x]; [x][1:v] paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" -framerate 12 -y -plays 0 -f gif out.gif

これなら滑らかかつ高速でよさそう。

gyazo.com

便利

なめらかに動くアニメーションGIFを作れると嬉しくなる。

gyazo.com

www.youtube.com