備忘録です。最近よくLGTM画像を作っていて、その一環で動画からアニメーションGIFを生成することが多い。
このアニメーションGIFを4倍速にしたい。より正確には、元動画を4倍速にしたアニメーションGIFを作ることを考える。
ffmpegにいろいろなパラメータを渡しているけど、だいたいは綺麗なアニメーションGIFを作るためのパラメータなので、そこの解説は以下の記事に譲る。
setpts=PTS/4
ffmpegのドキュメントに setpts
というフィルターがあって、これが使えそうに見える。
$ 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にならない。カクカクするしループの瞬間に一瞬止まったような感じになる。
-itsscale 0.25
もっといい方法がないかと調べていたら以下のSuper Userの回答にたどり着いた。
$ 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
これなら滑らかかつ高速でよさそう。
便利
なめらかに動くアニメーションGIFを作れると嬉しくなる。