我正在尝试实现一个具有屏幕录制功能的简单macOS应用。
我不想记录麦克风输入,而是要记录Mac扬声器发出的声音。示例:通过这种方式,我希望能够将YouTube视频录制到文件中。
AVCaptureSession是否可能? Googling展示了捕获视频和麦克风的示例,而不捕获内部音频。
这是捕获视频和麦克风所必须的工作代码。要禁用麦克风并获得扬声器内部PC的声音,我需要进行哪些修改?
session = AVCaptureSession()
session.sessionPreset = AVCaptureSession.Preset.high
movieFileOutput = AVCaptureMovieFileOutput()
let displayId: CGDirectDisplayID = CGDirectDisplayID(CGMainDisplayID())
let audioDevice = AVCaptureDevice.default(for: .audio)!
let audioInput = try! AVCaptureDeviceInput(device: audioDevice)
let videoInput: AVCaptureScreenInput = AVCaptureScreenInput(displayID: displayId)!
session.addInput(videoInput)
session.addInput(audioInput)
session.addOutput(movieFileOutput)
session.startRunning()
movieFileOutput.startRecording(to: self.destinationUrl, recordingDelegate: self)
答案 0 :(得分:0)
我还没有找到一种简便的方法,但是事实证明,如果我的计算机上安装了另一软件:Soundflower,可以使原始代码记录音频。
Soundflower是MacOS的开源内核扩展,旨在创建虚拟音频输出设备,该设备也可以用作输入。
鉴于已安装Soundflower,可以使用Applications / Utilities / Audio MIDI Setup
应用程序配置macOS,以将音频发送到虚拟和真实音频设备。这样,上面的代码捕获了Soundflower中的音频,但是您仍然可以在常规音频输出设备上听到它。
此处描述了Applications / Utilities / Audio MIDI Setup
应用程序的设置:How can I send my computer's audio to multiple outputs?。