【FFmpeg】動画を Gif 画像に変換する

はてなブログGithubに資料として画像を載せるとき、Gif 画像が利用できます。ただ、変換サイトや動画編集ソフトだけでは限界があり、どうしてもサイズが大きくなってしまうことや細かく指定できないことがあります。色々使ってきた中では FFmpeg というツールが便利だったので、利用するためのコマンドをメモしておきます。

FFmpeg のセットアップ

まずはダウンロードです。Windows の環境で進めていきますが、LinuxMac でも利用できます。

ffmpeg.org

f:id:takunology:20210107024646j:plain

BtbN を選択すると Github の Release ページに飛びます。その中の win64-gpl.zip をクリックして Zip ファイルをダウンロードします。

f:id:takunology:20210107024923j:plain

ダウンロードできたら展開してください。展開先は分かりやすい場所がいいと思いますが、後に環境変数に登録するので C ドライブをおススメします。展開した後はフォルダの中に bin という名前のフォルダがあるので、そのパスをコピーしておいてください。

次に コントロールパネルシステムとセキュリティシステムシステムの詳細設定環境変数 をクリックします。システム環境変数Path を選択して 編集 をクリックします。編集画面にて 新規 をクリックし、先ほどコピーした bin フォルダのパスを入力します。

出来たらコマンドプロンプトffmpeg -version コマンドを実行して導入が出来ているか確認します。私の環境ではこんな感じに表示されます。(少し古いバージョンです。)

ffmpeg version n4.3.1-26-gca55240b8c Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3-win32 (GCC) 20200320

Gif 画像に変換する

今回変換する動画は前回の記事に載せた Minecraft 上で花火を打ち上げている動画です。

動画は 1920×1080 の 60fps (26.7MB) です。これを gif 画像に変換していきます。ちなみに、はてなブログの上限は 10MB なので、これより大きいファイルは載せられません。

そのまま変換

ffmpeg -i video.mp4 out.gif

特にオプションは無しの指定です。これで変換すると、確かにそのままの fps にはなりますがカクつきます。さらに、容量も増えるのでメリットは特に感じませんね。画像は約200MBあります。(笑)

fps を 20 に変更して変換

ffmpeg -i video.mp4 -r 20 out.gif

-r オプションで fps を指定できます。20fps でも結構ぬるぬる動きます。解像度は変更していないので、容量は約100MBです。

解像度を 720×405 で変換

ffmpeg -i video.mp4 -s 720x405 out.gif

-s オプションで解像度を指定できます。中途半端な値になっていますが、これで 16:9です。

16:9 のまま変換したい場合は比の計算式を使います。上記の場合だと、縦を 720 にしたいので

 \displaystyle{
16 : 9 = 720 : x\\
16x = 6480\\
x = 405
}

よって、16:9 のまま変換すると 720×405 になります。

解像度が 720×405 で fps を 10 にして変換

ffmpeg -i video.mp4 -s 720x405 -r 10 out.gif

サイズは 9.56MB で、結構ギリギリです。

f:id:takunology:20210107043615g:plain

おまけ(音声抽出)

音声だけを抽出することもできます。

ffmpeg -i video.mp4 -vn -acodec copy sound.aac

-vn オプションはビデオなし、-acodec オプションは音声劣化無しでそのまま抽出できます。