Edited at

ffmpegを使ったgifの作り方をちょっと詳しく解説してみる

More than 1 year has passed since last update.


はじめに

gifアニメって面白いですよね.

LGTM用にgifアニメを使って感情を表現したり,ふざけてみたり :hamster: :hamster:

他にプルリクで成果物をgifアニメとして貼っておくとどんなものなのか伝わりやすいので,よく作ってます.

さて,ここではいつもどんな風に作っているかまとめていきたいと思います.

手順としては

1. 作りたいアニメーション用の動画ファイルを作成

2. ffmpegコマンドで変換

でなにか味気ないけど終了!

1.の動画ファイル作成では,自分はMacを使っているのでQuickTimeの新規画面収録で取りたい範囲を指定してmp4ファイルを作成している.

次にffmpegコマンドをつかうのだけど,まずは導入方法から入っていきましょう.


ffmpegコマンド導入

これをたたくだけ.

$ brew install ffmpeg


使い方

コマンドのテンプレートは以下.

$ ffmpeg -i input.mp4 -vf scale=width:height -r rate output.gif

オプション
説明

-i
入力ファイルのパス

-vf scale
video optionでfiltergraphにscaleを使う

-r
フレームレート指定

filtergraphを挟むことで, デコードとエンコードの間に処理を挟むことができるようだ.

サイズを調節したいので, scale filter利用する.

-vf scale=320:240とすることで, 320×240サイズの画像ができる.

また,アスペクト比を維持したい場合は, -vf scale=320:-1の様にwidthかheightのどちらかを-1に指定することで可能だ.

(※詳しくはwiki:Scaling (resizing) with ffmpegを参照してみてください.)

出力ファイルの形式はoutputファイルの拡張子から推測して判断されるので,gifにしたい場合は.gifをつけるだけでOK.

-fオプションをつけることで,強制的に指定することもできる. (※参考:Main-options)

最後にいつも叩いているコマンドをサンプルとして載せておきます.

$ ffmpeg -i input.mp4 -vf scale=250:-1 -r 10 output.gif


参考

ffmpeg Documentation