AppleScriptを使ってMac画面収録動画をGIFに自動変換


動機

Mac で画面を収録する方法によると、

macOS Mojave では、キーボードの「shift + command (⌘) + 5」キーを押すと、画面の静止画を取り込んだり動画で撮影したりするために必要なコントロールが全部表示されます。

ただ、この方法で作成する動画が .mov 形式で、BlogやPull Requestにはそのままでは使えないので、FFmpegを使って手動でGIFに変換していました。

これが結構手間で画像を貼り付けるモチベーションが下がるので、今回、Apple Scriptを使い自動化しました。誰かの手間が少しでも省けたら嬉しいです。

Gyazo などのツールでも画像を作成してくれるサービスを使わないの?
長めの尺のアニメーションを撮りたい時もあった為です。

セットアップ

  • python3
  • ffmpeg

をインストールします。

GitからソースをDL

こちらのソースをローカルにDLしてください。

私は、iCloud自動同期されたくないので、画面収録される場所を、デスクトップではなく、~/workspace/capture/ としていますが、デスクトップや別の場所に変更されている方はパスを変更してください。

※ 「shift + command (⌘) + 5」で表示されるツールバーのオプションにて保存先変更が可能です。

Pythonのインストールパスを変更

Apple Scriptを実行した際に、フルパスで指定する必要があったため、以下のように指定しています。各自の環境に合わせて修正してください。

  • scripts/convert.sh
~/.pyenv/shims/python convert.py

カスタム Apple Script作成

アプリケーション > ユーティリティ > スクリプトエディタ で開いて任意のスクリプトを作成できます。
書き出しの際は、複数のフォーマットを選べますが、今回は、スクリプトを選んでください。拡張子が、.script で出力されればOKです。

property dialog_timeout : 30 -- set the amount of time before dialogs auto-answer.

on adding folder items to this_folder after receiving added_items
    try
        do shell script "~/workspace/capture/scripts/convert.sh"
    end try
end adding folder items to

名前は何でも大丈夫です。

作成したファイルを、/Library/Scripts/Folder Action Scripts にコピーしてください。

フォルダアクションの設定

画面収録されるフォルダを選んで、右クリック→サービス→フォルダアクション設定にてフォルダアクションを設定可能です。

ここで設定できるのは、/Library/Scripts/Folder Action Scripts に配置されているものだけのようなので注意してください。

動作

動画収録して、~/workspace/capture/*.mov ファイルが保存されると、Apple Scriptが動き、
~/workspace/capture/converted にGIF画像が保存されます。
※オリジナルの *.mov ファイルを削除していますので、残したい方は scripts/convert.py を変更してください。

参考