最近、技術記事を書くとき、特にフロントエンドについて書くときはGIF画像を必ず貼るようにしています。
それで必要になるのが、動画をGIF画像に変換するためのツールでした。
昔はGyazoを使っていたのですが、フリープランで使いまくっていたら上限に達して使えなくなったため、別の方法を検討していました。
そこで以下の記事を発見。
これでいくらでもGIFが生成できるようになりました。
ただ、如何せん叩くコマンドが3つもあるし、
当然ですが動画が長ければ長いほど1つ1つのコマンドの完了までに時間がかかります。
5回目にしてそろそろ面倒になってきたので、一発でGIFまで生成できるようにしました。
前提
この記事は、参考にした記事↑に書いてある
「3,ffmpegとimagemagickをインストール(ターミナルへコード入力)」までをやった上での話になります。
なので、そちらをみたことがない方は、まずそっちをご確認ください。
できたもの
参考させていただいた記事とできるものは、最終的に全く同じです。
GIF生成の過程で生まれたpngファイルはいらないので、それらは最後に削除しているくらいですね。
処理中なのかなんなのか分かるようにすればよかったが省略。
GIF内では手動ローディング?ということでカーソルがぐるぐるしてます。笑
動画はこちらにあります。
やったこと
まあほんとちょっとした工夫って感じです。
記事にする必要すらあるかって感じですが、まあ自分のメモ程度なのでいいでしょう。
エラーハンドリングとかしてません。
# !/bin/sh
# 現時点ではmp4とmov拡張子に対応しているよう
echo '変換するファイル名は?(拡張子付きで):'
read targetFileName
echo 'いくつにリサイズする?(1~100の数字で):'
read resizeSize
echo '作成するファイル名は?(gif拡張子なしで):'
read createdFileName
ffmpeg -i $targetFileName -an -r 10 %04d.png && \
convert *.png -resize $resizeSize% output_%04d.png && \
convert output_*.png $createdFileName.gif && \
find . -not -name '*.gif' -not -name '*.mov' -not -name '*.mp4' | xargs rm -rf
ほんとはpng系はtmpディレクトリでも作っといてそこに入れとき、
tmpディレクトリを最後に削除したかったが、なんかconvertコマンドのところでコケてできなかった・・・
このshellスクリプトを実行するコマンドを、
aliasに設定して使っています。
sh <上記のshellファイルがあるフルパス>
aliasを設定した場合は、以下を忘れずに
source ~/.zshrc
さいごに
久しぶりにshell書きました。
まあ全然大したことはないので、書いたと言えないんじゃないかレベルですが。
とりあえず3回コマンド打つ必要なくなったのでちょっと楽になりました。