Macで録画したmovファイルをgifファイルに自動変換する(bash/fish)
はじめに
zennやqiitaに動画を上げる場合、macユーザーだと手元で録画した動画を、オンラインでの変換か ffmpeg
を利用して変換されている方が多いのではないでしょうか。
毎回、コマンドを打ったり、webを立ち上げるのが面倒だったので、録画したら自動で、gif
ファイルに変換できるようにしました。
解説では、fish
を利用しています。 bashは、こちらを参照してください。
録画後にデスクトップへの配置を検知してgifに変換する
Macの標準機能を利用して録画すると、Desktopに 画面収録 2023-1-1 11.11.11.mov
のような
ファイル名で mov
ファイルが出力されます。ファイル出力を検知して、検知したファイルが、mov
であればgif
に変換して同ディレクトりに出力します。
準備
brew install fswatch
brew install ffmpeg
以下のファイルを任意のフォルダに作成します。
fswatch
でデスクトップを監視して、拡張子が .mov
の場合に、 ffmpeg
を呼び出して git
ファイルを作成します。
ffmpeg
のパラメータはお好みに合わせて変更してください。
#!/opt/homebrew/bin/fish
fswatch -e ".*" -i ".mov" ~/Desktop | while read filePath;
set replacedFilePath (string replace .mov .gif $filePath)
if test -e $filePath
if test -e $replacedFilePath
echo 'exists.'
else
echo 'not exists.'
ffmpeg -i "$filePath" -r 30 -vf scale=680:-1 "$replacedFilePath"
osascript -e "display notification \"$replacedFilePath\" with title \"Conversion to gif completed.\" sound name \"default\""
end
end
end
if test -e $replacedFilePath
としているのは、fswatchで監視していると、録画して作成されてmov
ファイルが2回検知してしまうためです。(なぜかは分からないです。詳しい人教えてください。)
今回は、ログイン時に起動するようにしたいので、command
ファイルを作成します。
/{シェルを格納したディレクトリまでの絶対パス}/watch_desktop.sh
ここで、忘れずに実行ファイルと command
ファイルに実行権限をつけてください。
chmod 755 watch_desktop.sh
chmod 755 watch_desktop.command
command
をログイン時の項目として登録してください。
再起動して録画をしてみてください。gif
ファイルが作成されると思います。
変換完了を通知する
このままだと、作成できているか分かりにくいので、通知するようにしたいと思います。
AppleScript
を利用して通知します。
以下の、行を追加します。
ffmpeg -i "$filePath" -r 30 -vf scale=680:-1 "$replacedFilePath"
+ osascript -e "display notification \"$replacedFilePath\" with title \"Conversion to gif completed.\" sound name \"default\""
今度は、gif
ファイル変換後に、通知されるようになりました。
以下のようにMacの右上に通知されればOKです。
参考
Discussion