はじめに
普段アプリ開発をしているときに動作確認した結果をGifでPRに載せたりするのですが、
.mov
や.MP4
の動画ファイルからFFmpegでGifを生成するのを自動化できないかなーと思い、やってみました!
準備
動画ファイルからGifを生成するのにFFmpegを使用するので、ダウンロードしておきます。
Homebrewからでもインストールできます。
$ brew install ffmpeg
AutomatorでWorkflowを作成する
Macの作業を自動化するということで、今回は標準で用意されているAutomator
を使用します!
まずは、Automatorを起動して、フォルダアクションを新規作成します。
左上の検索欄に「シェルスクリプト」と入力してアクションを検索をして、「シェルスクリプトを実行」のアクションを右側にドラッグします。
「入力の引き渡し方法」を「引数として」に変更して、以下のスクリプトを書きます。
fpsやscaleなど、ffmpegの設定値の部分は、お好みで調整してください(*・ω・*)
# 1
originalFilePath=$1
# 2
if [[ $originalFilePath == **".mov" ]] || [[ $originalFilePath == **".MP4" ]] || [[ $originalFilePath == **".mp4" ]]; then
uuid=$(uuidgen)
uuidFilePath=$originalFilePath-$uuid
# 3
/usr/local/Cellar/ffmpeg/4.3.1_9/bin/ffmpeg -i $originalFilePath -filter_complex "[0:v] fps=20,scale=320:-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" $uuidFilePath.gif
fi
# 1
の行で、引数で受け取った動画ファイルのPATHを変数に格納しています。
# 2
のif文で、動画ファイルの拡張子を.mov
.MP4
.mp4
の3つに限定しています。
Gifファイルがデスクトップに追加された場合もWorkflowが動くので、条件を指定しないと、自動生成されたGifファイルから新しいGifファイルを作り出そうとして、無限にGifを作り続けてしまいます(´;ω;`)
# 3
でffmpegを実行していますが、/usr/local/Cellar/ffmpeg/4.3.1_9/bin/ffmpeg
の部分は、ffmpegが格納されているPATHを指定する必要があるので、適宜変更してください。
/Applications/ffmpeg
とかの場合もあるかもしれません。
「command + S」で、適当な名前を付けて保存します。
これで、保存して終了です!
デスクトップに.mov
や.MP4
またはmp4
のファイルが追加されると、gifを生成してくれるようになります。
さいごに
デスクトップに動画を追加したら、Gifを作ってくれるようになりました
↑のGifでは別のディレクトリからドラッグしてデスクトップに動画を追加していますが、
QuickTime Playerとかで画面収録をしたら、Desktopに動画保存されるので
そこから勝手にGif作ってくれるといった感じです\(。・o・。)/
ちなみに、iOSのアプリ開発であれば、
以下のようなxcrunコマンドでiPhone Simulatorの動画を撮ることもできるので、
その時にもデスクトップに動画ファイルを保存すれば勝手にGif作ってくれます!
xcrun simctl io booted recordVideo output.mov