コマンド一発のMP4→GIF変換を作った

最終更新日

環境はUbuntu 18.04です (が,Windowsとかでもできるのかな?)

全体像はこんな感じ.

  1. mp4をアニメーションGIFアニメに変換するシェルスクリプトを作る
  2. シェルスクリプトをaliasで簡単に呼べるようにする

まず作り方を説明しますね.その後で内容について補足します.

1) シェルスクリプトを書く

使うシェルスクリプトは ffmpeg を使う.もしシステムに ffmpeg がまだインストールされていなければ,次のコマンドでインストールしておいてくださいね.

$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt install ffmpeg

で,作るスクリプトはこんな感じ.ちなみにこのスクリプトはこのサイトを参考に作りました (というかほとんど同じ).

#!/bin/sh
ffmpeg -i ${1} -vf "palettegen" -y ~/palette.png
ffmpeg -i ${1} -i ~/palette.png -lavfi "fps=12,scale=900:-1:flags=lanczos [x]; [x][1:v] paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" -y ${1}.gif
rm ~/palette.png

これを ~/.alias/mp4gif.sh として保存.最後にこのスクリプトファイルをプログラムとして実行可能にしておく.上手い人は chmod を使うんでしょうが,僕は chmod をいまいち分かってないので Nautilus から手作業で変更してみた.

実行可能にする

2) Alias に登録

3段階に分けて説明します.このやり方はこのサイトを参考にしました

2-1) Aliasを登録する

~/.bash_aliasesというファイルを作って,この内容を書きましょう.これはさっき作ったシェルスクリプトにエイリアスを登録する作業.

# MP4をGIFアニメに変換する
alias mp4gif='~/.alias/mp4gif.sh'

2-2) Alias登録を有効化する

次に /.bashrc を開いて,下記のコメントアウトを外す.

#if [ -f "${HOME}/.bash_aliases" ]; then
#source "${HOME}/.bash_aliases"
#fi

↑のやつを,↓にする.行頭の # を消すだけ.もしかすると最初からコメントアウトされてないかも.僕の場合はされてなかった気がする.

if [ -f "${HOME}/.bash_aliases" ]; then
source "${HOME}/.bash_aliases"
fi

2-3) 設定を反映する

最後に,端末で次を実行

$ source ~/.bashrc

使い方と詳しい説明

mp4ファイルがある場所で $ mp4gif FILENAME.mp4 を実行するだけ.そうすると同じディレクトリに FILENAME.mp4.gif というGIFアニメが作成されます!

mp4をGIFアニメに変換する際に,最適なカラーパレットを作成している.シェルスクリプトの中に palette.pngというファイルが登場してるけど,これがそのカラーパレット.動画の中で使われている色を最適な形で抽出してる.これのおかげで綺麗なアニメーションGIFを作れる!

aliasの登録の煩雑さは別にこれに限った話じゃない.aliasを登録したければ誰でもやる作業のはず.嬉しいニュースは,今後新しく alias を登録するときには ~/.bash_aliasesを編集するだけで済みますよ.

今回は ~/.bash_aliases に直接 ffmpeg でゴニョゴニョする内容を書くんじゃなくて,別のシェルスクリプトのファイル ~/.alias/mp4gif.sh を作ったのかというと,僕が ~/.bash_aliases に直接書いたコードで引数を取る方を知らないからです… 方法があればおしえてください!

コメントを残す

回れ右の内輪差をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む