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

-kで収録した動画のクリック表示

なお、静止画ではデフォルトでマウスカーソルが写らないが、動画ではカーソルも収録される。

-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

参考

ScreenCapture Command: Capture an image of the screen in macOS