勘ですが AVFoundation の AVCaptureDevice
クラスの uniqueID
で取得できるユニーク ID ではないかと思ったので調べてみました。
devices.swift
import Cocoa
import AVFoundation
let session = AVCaptureDevice.DiscoverySession.init(deviceTypes: [.builtInMicrophone, .externalUnknown], mediaType: nil, position: .unspecified)
for device in session.devices {
print("\(device.localizedName) -> \(device.uniqueID)")
}
上記のコードを devices.swift として保存して swift devices.swift
を実行するとオーディオデバイス名とユニーク ID が表示されます。
% swift devices.swift
MacBook Pro Microphone -> BuiltInMicrophoneDevice
内蔵マイクのユニーク ID を -G BuiltInMicrophoneDevice
で指定してキャプチャーすると音声入りの動画を保存できました。 ID に適当な文字列を指定するとエラーが出るので、ユニーク ID を指定するので合っているようです。
% screencapture -V 3 -G BuiltInMicrophoneDevice out.mov
GVA encoder info: recomputed for fps: 55.045872, gop size in pics: 55, gop size in sec: 1.000000
GVA encoder info: recomputed for fps: 55.045872, gop size in pics: 55, gop size in sec: 1.000000
% screencapture -V 3 -G XYZ out2.mov
screencapture: Capture audio device XYZ not found.
手元で swift devices.swift
を実行して(Xcode のインストールが必要です) Soundflower のユニーク ID を確認してみてください。デバイスによってはユニーク ID は 0x802000000123abcd
のような16進数になることもあります。
Like!