[FFmpeg] 動画をアニメーションGIFに変換する

短い動画ファイルをアニメーションGIFに変換することもできます。

動画をアニメーションGIF に変換する

動画(MP4)形式のファイルをアニメーションgifへ変換するコマンド

 ffmpeg -i INPUT.mp4 OUTPUT.gif

このままオプションなしで変換するとファイルサイズがかなり大きくなってしまうので、フレームレートや解像度などのオプションを設定してサイズ調整します。

容量を抑えたアニメGIFを作る

フレームレート -r オプションと、解像度 -vf を付けてサイズを小さくして出力しています。

  • -r 10 フレームレートを10にしています。
  • -vf scale=480:-1 は、アスペクト比を保ったまま横幅480pxにリサイズしています。
 ffmpeg -i INPUT.mp4 -vf scale=480:-1 -r 10 OUTPUT.gif

※アニメーションgifはファイルサイズが大きくなってしまいがちなので、出力されたファイルサイズを見て解像度やフレームレートを調整します。

ループさせない場合

-loop -1 を追加するとループが止まります。

 ffmpeg -i INPUT.mp4 -vf scale=480:-1 -r 10 -loop -1 OUTPUT.gif

キレイなアニメGIFを作る

できあがったアニメGIF の画質が気になる場合は、palettegenフィルターを活用すると画質が改善できるかもしれません。(※元動画のリサイズを最初にやっておくこと)

一行でまとめると、以下のようなコマンドになります。(&& で繋げています)

ffmpeg -i INPUT.mp4 -vf palettegen palette.png && ffmpeg -i INPUT.mp4 -i palette.png -lavfi paletteuse -r 10 OUTPUT.gif

上記コマンドの解説

  1. まず、palettegen で、対象の動画から256色をサンプリングしてパレットを作成します。

    ffmpeg -i INPUT.mp4 -vf palettegen palette.png
    
  2. つぎに、アニメGIFにしたい動画と、作成したパレットファイル (palettegen.png) を使って、アニメgif に変換します。

    ffmpeg -i INPUT.mp4 -i palette.png -lavfi paletteuse -r 10 OUTPUT.gif
    

実際はもう少し複雑な設定がありそうなのですが、まだここまでしか試していないのでひとまず基本的なことだけ書いておきます。

動画を一部切り取ってアニメーションGIF に変換する

長い動画の一部を切り取ってアニメーションGIFにする方法です。
(以下のコマンドは、「動画ファイルの冒頭20秒後から10秒間をフレームレート10でアニメーションGIFにする」というもの)

ffmpeg -i INPUT.mp4 -ss 20 -t 10 -r 10 OUTPUT.gif

参考: 動画を指定した時間でカット・トリミング・切り出しする方法

アニメーションGIF を動画にする

アニメーションGIF を動画にするのも簡単です。

 ffmpeg -i INPUT.gif -pix_fmt yuv420p OUTPUT.mp4

オプションに -pix_fmt yuv420p を付けて、gif のカラーフォーマットを動画で扱えるように変換しています。(おまじないのようなもの)