screencaptureは静止画だけでなく、画面の動画も収録できる。-vオプションで収録を始め、-Vで収録する秒数を指定する。ここでは画面を収録する方法と、クリックの表示や音声の収録などの関連オプションをまとめる。
screencaptureの基本的な使い方は以下を参照。
参考: 【screencapture】コマンドで画面全体のスクリーンショットを撮る
-Vで秒数を指定して収録する
-V <秒数>の形式で指定すると、指定した秒数だけ画面を収録して終了する。-Vだけで収録モードになるため、-vは不要である。
$ screencapture -V 3 movie.mov
$ file movie.mov
movie.mov: ISO Media, Apple QuickTime movie, Apple QuickTime (.MOV/QT)
保存される形式はQuickTimeのムービー(H.264)である。ファイル名の拡張子を.mp4にしても、中身はQuickTimeのムービーになる。-tで形式を指定しても変わらない。
$ ffprobe -v error -show_entries format=duration:stream=codec_name,width,height -of compact movie.mov
stream|codec_name=h264|width=3440|height=1440
format|duration=3.000000
-V 0を指定すると、ほぼ長さ0の動画になる。数値以外を指定するとエラーになる。
$ screencapture -V abc movie.mov
screencapture: Invalid time specified
-vで収録を止めるまで収録する
-vだけを指定すると、止めるまで収録を続ける。
$ screencapture -v movie.mov
収録中は、メニューバーに画面共有中を示すアイコンが表示される。アイコンをクリックし、「共有を停止」を押すと収録が止まり、ファイルが保存される。
ターミナルでControl+Cを押して止めることもできる。Control+Cで止めた場合も、それまでの内容がファイルに保存される。
収録する範囲を指定する
静止画と同じく、-Rで範囲を指定できる。
$ screencapture -V 3 -R 200,150,800,500 movie.mov
$ ffprobe -v error -show_entries stream=width,height -of compact movie.mov
stream|width=800|height=500
参考: 【screencapture】-Rで範囲を指定して撮影する
ファイル名を複数指定しても、作成されるのは1つ目のファイルだけである。複数のディスプレイを接続している場合、ディスプレイごとのファイルには分かれない。-Dでディスプレイを指定できる。ディスプレイが1枚の環境で-D 2を指定すると、以下のエラーになる。
$ screencapture -V 3 -D 2 movie.mov
screencapture: Invalid display specified. Only 1 display, the only valid value is 1.
参考: 【screencapture】-D・-mで撮影するディスプレイを指定する
man screencaptureによると、-J videoを指定すると、対話モードで範囲を選択して収録するモードから始められる。
参考: 【screencapture】-iで範囲やウインドウを選択して撮影する
-kでクリックを表示する
-kを指定すると、収録した動画の中で、クリックした位置にマウスカーソルを囲む円が表示される。操作手順を説明する動画を作るときに便利である。
$ screencapture -V 6 -k -R 200,150,800,500 movie.mov

なお、静止画ではデフォルトでマウスカーソルが写らないが、動画ではカーソルも収録される。
-g・-Gで音声を収録する
デフォルトでは音声は収録されない。-gを指定すると、デフォルトの音声入力(マイクなど)の音声も収録する。
$ screencapture -V 3 -g movie.mov
$ ffprobe -v error -show_entries stream=codec_type,codec_name,sample_rate,channels -of compact movie.mov
stream|codec_name=h264|codec_type=video
stream|codec_name=aac|codec_type=audio|sample_rate=48000|channels=2
-G <ID>を指定すると、音声入力のデバイスを指定して収録する。IDには音声入力デバイスの固有ID(uniqueID)を指定する。固有IDは、JavaScript for Automation(JXA)からAVFoundationのAVCaptureDeviceを呼び出して調べられる。
$ osascript -l JavaScript -e 'ObjC.import("AVFoundation"); const a = $.NSClassFromString("AVCaptureDevice").devicesWithMediaType("soun"); const o = []; for (let i = 0; i < a.count; i++) { const d = a.objectAtIndex(i); o.push(d.uniqueID.js + " | " + d.localizedName.js) } o.join("\n")'
[uniqueID] | [デバイス名]
$ screencapture -V 3 -G "[uniqueID]" movie.mov
存在しないIDを指定するとエラーになる。
$ screencapture -V 3 -G foo movie.mov
screencapture: Capture audio device foo not found.
収録できない指定
-cでクリップボードに保存しようとすると、エラーになる。動画はファイルに保存する必要がある。
$ screencapture -V 3 -c
screencapture: invalid destination for screen recording
