FFmpegとAutomatorでgif変換を自動化する

mp4やmovなどの動画ファイルを、gifファイルに変換する操作の自動化を行いました。

使用したソフトはFFmpegAutomatorです。

こんな風にmp4形式やmov形式の動画ファイルを右クリックしたメニューの中に「gifに変換」という項目を追加し、選択すると同じフォルダ内に同名のgifファイルを作成してくれます。

FFmpeg

FFmpegはコマンドから動画ファイルを簡単にファイル形式変換/トリミング/クロップ/解像度変更などできるソフト。

公式サイトはこちら。
https://ffmpeg.org/

先日、個人的によく使うコマンド集をまとめたのでよければこちらも見てみてください。

FFmpegで個人的によく使うコマンド一覧
FFmpegという便利なフリーソフトがあります。コマンドでmp4やmov、gifなどの動画ファイルが簡単にファイル形式変換/トリミング/クロップ/解像度変更などできる優れものです。公式サイトはこちら完全に自分のための備忘録ですが、個人的によ...

Automator

AutomatorはMacにデフォルトで入っているアプリで、よく使う作業を登録して自動化することができるものです。

ちゃんと使いこなせれば相当な作業効率化が図れます。

公式ガイドはこちら。
https://support.apple.com/ja-jp/guide/automator/welcome/mac

FFmpegとAutomatorでgif変換を自動化する

それでは本題です。

まずAutomatorを起動し、クイックアクションを新規作成します。

左のアクションの中からシェルスクリプトを探し、右側のスペースにドラッグ&ドロップします。

検索欄に「シェル」などと入力すると一発で見つかります。

右側上部の「ワークフローが受け取る現在の項目」をムービーファイルに変更します。

検索対象はFinder.appでも良いですが、すべてのアプリケーションでも問題ないかと思います。

次に「シェルスクリプトを実行」内を設定します。

「シェル」が「/bin/bash」になっていることを確認し、「入力の引き渡し方法」を「引数として」に変更します。

その下のテキストエリアに書かれているものを全削除し、以下のコードを入力します。

for file in ${@}
do

	DIRNAME=`dirname ${file}`
	BASENAME=`basename ${file}`
	BASENAME=${BASENAME%.*}

	/usr/local/bin/ffmpeg -i ${file} -filter_complex "[0:v] fps=30,scale=480:-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" ${DIRNAME}/${BASENAME}.gif

done

「fps=30」の部分はフレームレートの指定、「scale=480:-1」の部分は解像度の指定を行っています。

scaleは「横:縦」で表記し、-1と指定した方はアスペクト比固定で自動調整されます。

適当に名前をつけてクイックアクションを保存したら完了。

Finderを開いて適当な動画ファイルを右クリックし、「クイックアクション」の中に先ほど名前をつけた項目があることを確認してください。

この方法だとフレームレートや解像度を動的に指定することはできないため、下の画像のようによく使うものを複数種類用意しておくと便利かと思います。

自分はgif変換の他にも、再生速度の変更をクイックアクションに登録しています。

他の操作を登録する際には、こちらも参考にしてみてください。
https://unity-yuji.xyz/ffmpeg-useful-command-option-mp4-gif/

コメント