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

環境はUbuntu 18.04です (が,Windowsとかでもできるのかな?)
全体像はこんな感じ.
- mp4をアニメーションGIFアニメに変換するシェルスクリプトを作る
- シェルスクリプトを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
に直接書いたコードで引数を取る方を知らないからです… 方法があればおしえてください!