このページについて
このページではffmpegを利用して動画をgifに変換する方法を解説しています。
ffmpegのインストール
ffmpegのインストール・基本的な使い方についてを御覧ください。
ffmpegでgifに変換する
ffmpegでgifへ変換するにはいくつかの注意点があります。まずはgifの仕様からですが、gifそのものは256色しか使えません。そしてgifはループ再生する事もできますが、それについても書いておきます。
シンプルに変換する場合は拡張子を変更するだけで可能です。
ffmpeg -i movie.mp4 after.gif
ただしこれで生成した場合、元の動画よりも容量がでかくなります。これはWebにアップロードするには適さないので、少し軽量化します。
gifの軽量化
一番お手軽なのは-rを利用する方法と映像の縦・横を変更する方法。
フレームレートの変更
ffmpeg -i movie.mp4 -r 30 after.gif
基本的に-rでフレームレートを指定するだけである程度は軽量化できます。-rの後の数値を変更することで適用されます。
映像の縦横を変更
映像の縦横を変更し、容量を削減するには以下。
ffmpeg -i movie.mp4 -vf scale=w:h 出力.gif
これは-rと同時に使うことも出来るので、妥協できる範囲まで絞ると良いと思います。-vf scale=の後のwには横サイズを、hには縦サイズを入力します。横1000の縦600にするには1000:600となります。
元動画の横サイズを自動で半分とかいう使い方をするには、-vf scale=iw/2:-1と記入します。
色味がおかしい場合
ffmpegでgif化すると、色味がおかしい場合があります。これはgifの仕様上、256色しか使えないためですね。そこでpalettegenとpaletteuseを使って、使用する色を動画から抽出して最適化しようというのが、この項目の内容。
ただしこれを実行すると色味は超キレイになりますが、gifの容量は増えます。色味を取るか容量の削減を取るかは用途によります。
ffmpeg -i movie.mp4 -filter_complex "split[a],palettegen,[a]paletteuse" 出力.gif
このように記述することで、動画から使われている色を元にパレットを作成→そのパレットを使ってgif作成という流れになります。
色も容量も取りたい
パレットを使う以上、どうしても容量は増えてしまいます。なのでscaleを使ったり、他のところで容量を削減する必要があります。例として、scaleとsplitのpalettegenとpaletteuseを使ってgifを作成する記述が以下です。
ffmpeg -i movie.mp4 -filter_complex "scale=iw/2:-1,split[a],palettegen,[a]paletteuse" 出力.gif
ただしこれも容量を大幅に削減出来るわけではなく、paletteを使っている以上は容量が大きくなりがちです。
ffmpegで作ったgifの参考比較
ffmpegで実際に作ったgifの参考と比較です。
元動画→movie.mp4(fps30、横1920、縦1342)容量は13MBです。
iPad ProでMJの対局の様子を撮影したものを一部切り抜き、フレームレートを30にしたものがベースとなっています。
オプション | 容量 | 出来栄え(主観) |
gif化のみ | 101.39MB | 色味が変わる |
palette使用 | 888.9MB | 色味はキレイだが容量はすごい |
fps15のみ | 71.7MB | 容量は少ないが見た目はお察し |
fps15とパレット使用 | 480.5MB | fps30よりは容量は減るし見た目もいいが、それでも容量はすごい |
scaleを半分にしてgif | 28MB | エンコード速度は爆速だが見た目はやはり |
scale半分とパレット使用 | 214.8MB | 容量は増えるがキレイはキレイ |
色々と試してみて、結局の所gifでなければならない場面以外は超軽量mp4で良いと思います。gif化しなければならない場合はパレットを使用して出来栄えを取るか、出来栄えを捨てて軽量化を取るか、スケールを変更してパレットを使用して容量も画質も妥協するかは自由です。
参考程度にパレットを使用したgifから切り抜いた1枚と、パレットを使用していないgifから切り抜いた1枚をそれぞれ掲載しておきます。
以下はパレット使用したやつです。分かる人には分かると思いますが、ドラ表示牌の白です。
パレット使用時 | パレット未使用時 |
![]() | ![]() |
かなりじっくり見比べると、全体的に点が目立つと思います。
ffmpegの関連記事
その他のオプションや使い方などは以下をどうぞ。