如何使用 AVCaptureSession 录制我 Mac 的内部声音,而不是麦克风!
How to record my Mac's internal sound, not the microphone!, using AVCaptureSession?
我正在尝试实现一个具有屏幕录制功能的简单 macOS 应用程序。
我不想录制麦克风输入,而是录制从我的 Mac 扬声器发出的声音。示例:通过这种方式,我希望能够将 YouTube 视频录制到文件中。
这可以用 AVCaptureSession 实现吗?谷歌搜索显示捕获视频和微团的示例,但没有显示内部音频。
这是我必须捕获视频和麦克风的工作代码。我必须修改什么才能禁用麦克风并让内部 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)
我还没有找到一个简单的方法来做到这一点,但事实证明,如果我的机器上安装了另一个软件,可以让原始代码录制音频:Soundflower.
Soundflower is an open source kernel extension for MacOS, designed to create a virtual audio output device that can also act as an input.
鉴于已安装 Soundflower,可以使用 Applications / Utilities / Audio MIDI Setup
应用配置 macOS,将音频发送到虚拟和真实音频设备。这样上面的代码从 Soundflower 捕获音频,但您仍然可以在普通音频输出设备上听到它。
此处描述了 Applications / Utilities / Audio MIDI Setup
应用程序的设置:How can I send my computer's audio to multiple outputs?。
我正在尝试实现一个具有屏幕录制功能的简单 macOS 应用程序。
我不想录制麦克风输入,而是录制从我的 Mac 扬声器发出的声音。示例:通过这种方式,我希望能够将 YouTube 视频录制到文件中。
这可以用 AVCaptureSession 实现吗?谷歌搜索显示捕获视频和微团的示例,但没有显示内部音频。
这是我必须捕获视频和麦克风的工作代码。我必须修改什么才能禁用麦克风并让内部 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)
我还没有找到一个简单的方法来做到这一点,但事实证明,如果我的机器上安装了另一个软件,可以让原始代码录制音频:Soundflower.
Soundflower is an open source kernel extension for MacOS, designed to create a virtual audio output device that can also act as an input.
鉴于已安装 Soundflower,可以使用 Applications / Utilities / Audio MIDI Setup
应用配置 macOS,将音频发送到虚拟和真实音频设备。这样上面的代码从 Soundflower 捕获音频,但您仍然可以在普通音频输出设备上听到它。
此处描述了 Applications / Utilities / Audio MIDI Setup
应用程序的设置:How can I send my computer's audio to multiple outputs?。