TL;DR
画面録画するとき、Macだと標準では内蔵マイクを入力にするので、Soundflowerや複数出力装置に音声切り替えをして録画している。私の環境では、Macbook Proのスピーカー、DELL~、Soundflower(2Ch)、Soundflower(64Ch)などがある。
録画のたびに音声を切り替えするのが面倒なのでAutomatorで切り替えするWorkflowを作った。
Menubarのサウンドのところが自動で切り替わっている様子。
Motivation
Macで画面録画するのに、毎回音声をSoundflower(または複数出力装置)に設定して、Shift+Command+5
するのが面倒。
画面録画するコマンド screencapture
は、screencapture -V 10 out.mov
など、オプションで秒数指定しないといけない。毎回指定するのはかなり面倒。また、標準では、Macbookの内蔵マイクを入力にしているので、動画のキャプチャなどに向いていない。Mac内で再生された音声を録音するためには、Soundflower (2Ch)、Soundflower (64Ch)を入力にする必要がある。(または複数出力装置)
-Gオプションを使えば、screencapture -V 10 -G SoundflowerEngine:0 out.mov
などでSoundflowerに指定できるが、(参照 list-av-capture-devices)、私の環境(Intel Macbook pro 2020, OS:Monterey)ではどちらでも音声を拾えなかった。
そこで、
(i) Menubarのサウンドを「複数出力装置」に設定→Shift+Command+5
で録画するAppleScript(アプリケーション)
(ii) movファイルが出力されたらサウンド設定を元の「Macbookのスピーカー」に戻すWorkflow
を作成した。
ついでにmovをmp4にするWorkflowも作ったが録画するたびにエンコードにCPUを使うのは面倒なので使うかはペンディング。 結局使わなかった。
(movはなぜか容量が大きくて、mp4にエンコードすると容量が小さくなる。酷いときにはmp4にエンコードしたら10分の1くらいにもになる...)
Procedure
(i) Menubarのサウンドを「複数出力装置」に設定→Shift+Command+5
で録画するAppleScript
Automator→アプリケーション→AppleScriptを実行
Better Touch Toolなどでショートカットを割り当てれば便利。
(ii) movファイルが出力されたらサウンド設定を元の「Macbookのスピーカー」に戻すWorkflow (フォルダアクション)
Automator→フォルダアクション→AppleScriptを実行
フォルダアクションで、次の場所に追加されたファイルやフォルダを受け取る:
のところを自分の環境で画面録画が保存されるフォルダにする。
(ついでにmovをmp4にするWorkflowも作ったが,,,これを使う場合はシェルスクリプトを実行
、入力の引き渡し方法のところを引数として
にすること)
最初に実行したらアラートが出て、FolderActionsDispatcherを許可しないといけない?当然、作ったアプリケーションの許可も。
Finderからフォルダアクションの設定も必要(かもしれない)。
Source
record.app
tell application "System Events"
tell application process "ControlCenter"
set volMenu to menu bar item "サウンド" of menu bar 1
tell volMenu to click
set controlWindow to window "コントロールセンター"
set outputsList to scroll area of controlWindow
set complexToggle to checkbox 1 of scroll area 1 of window "コントロールセンター" whose title contains "複数出力装置"
set complexToggleValue to value of complexToggle
tell complexToggle to click
tell volMenu to click
end tell
end tell
tell application "System Events"
key code 23 using {command down, shift down} -- command+shiftを押しながら5
end tell
(ii) movファイルが出力されたらサウンド設定を元の「Macbookのスピーカー」に戻すWorkflow
soundchange.workflow
tell application "System Events"
tell application process "ControlCenter"
set volMenu to menu bar item "サウンド" of menu bar 1
tell volMenu to click
set controlWindow to window "コントロールセンター"
set outputsList to scroll area of controlWindow
set complexToggle to checkbox 1 of scroll area 1 of window "コントロールセンター" whose title contains "MacBook Pro"
set complexToggleValue to value of complexToggle
tell complexToggle to click
tell volMenu to click
end tell
end tell
movをmp4にするWorkflowはこれ。
originPath=$1
newFilePath=${originPath/.mov/.mp4}
/usr/local/bin/ffmpeg -i $originPath $newFilePath
echo "$originPath"
originPath=$1
if [ -f ${originPath%.*}.mov ]; then mv ${originPath%.*}.mov ~/.Trash; fi
最後に
movファイルってなんであんなに重いの〜