はてなブログやGithubに資料として画像を載せるとき、Gif 画像が利用できます。ただ、変換サイトや動画編集ソフトだけでは限界があり、どうしてもサイズが大きくなってしまうことや細かく指定できないことがあります。色々使ってきた中では FFmpeg というツールが便利だったので、利用するためのコマンドをメモしておきます。
FFmpeg のセットアップ
まずはダウンロードです。Windows の環境で進めていきますが、Linux や Mac でも利用できます。
BtbN
を選択すると Github の Release ページに飛びます。その中の win64-gpl.zip
をクリックして Zip ファイルをダウンロードします。
ダウンロードできたら展開してください。展開先は分かりやすい場所がいいと思いますが、後に環境変数に登録するので 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 にしたいので
よって、16:9 のまま変換すると 720×405 になります。
解像度が 720×405 で fps を 10 にして変換
ffmpeg -i video.mp4 -s 720x405 -r 10 out.gif
サイズは 9.56MB で、結構ギリギリです。
おまけ(音声抽出)
音声だけを抽出することもできます。
ffmpeg -i video.mp4 -vn -acodec copy sound.aac
-vn
オプションはビデオなし、-acodec
オプションは音声劣化無しでそのまま抽出できます。