SoundFlower
众所周知,QuickTime无法录制系统声音,在macOS之前的版本,和M1(Apple Silicon)没问世之前,SoundFlower一直都是首选!可惜SoundFlower的作者已经很久没有更新了,新版的macOS和新款的MacBook pro苦寻内录系统声音的解决方案久矣。
展示
BlackHole: 音频回传驱动程序
BlackHole是一个现代的macOS虚拟音频环回驱动程序,允许应用程序以零延迟的方式将音频传递给其他应用程序。
下载安装程序
特点
- 构建2、16、64、128、256个音频通道版本
- 可定制的通道数、延迟、隐藏设备
- 可定制的镜像设备,允许隐藏输入或输出
- 支持8kHz、16kHz、44.1kHz、48kHz、88.2kHz、96kHz、176.4kHz、192kHz、352.8kHz、384kHz、705.6kHz和768kHz采样率
- 零延迟驱动
- 兼容macOS Mavericks (10.9)和更新的版本。
- 为英特尔和Apple silicon 构建
安装说明
选项1:下载安装程序
- 下载最新的安装程序
- 关闭所有正在运行的音频应用程序
- 打开并安装软件包
选项2:通过brew软件安装
- 2ch:
brew install blackhole-2ch - 16ch:
brew install blackhole-16ch - 64ch:
brew install blackhole-64ch
卸载说明
选项1:使用卸载程序
选项2:手动卸载
-
用终端命令删除BlackHole驱动。
rm -R /Library/Audio/Plug-Ins/HAL/BlackHoleXch.driver请务必更换
X为2,16, 或64.注意,该根目录是
/Library不是/Users/user/Library. -
用终端命令重新启动CoreAudio
sudo launchctl kickstart -kp system/com.apple.audio.coreaudiod
欲了解更多具体细节请访问wiki
用户指南
Logic Pro X
GarageBand
Reaper
- Reaper to Zoom by Noah Liebman
录制系统音频
- 设置多输出设备
- 在 "Audio Midi Setup"→"Audio Devices "中,右击新创建的多重输出,选择 "Use This Device for Sound Output"。
- 打开数字音频工作站(DAW),如GarageBand,将输入设备设置为 "BlackHole"。
- 将轨道设置为从通道1-2输入
- 从另一个应用程序播放音频,并在DAW中监听或录音
在应用程序之间路由音频
- 在发送应用程序中设置输出驱动器为 "BlackHole"。
- 将音频输出到任何通道
- 打开接收应用程序,将输入设备设置为 "BlackHole"。
- 从相应的输出通道输入音频
开发者指南
所有非GPL-3.0的项目都需要一个许可证。
请支持我们的努力工作和持续发展。要申请许可证联系我们.
安装
要安装BlackHole,请将BlackHoleXch.driver文件夹复制到/Library/Audio/Plug-Ins/HAL,并使用sudo launchctl kickstart -kp system/com.apple.audio.coreaudiod重新启动CoreAudio。
定制BlackHole
以下预编译器常量可用于轻松定制BlackHole的构建。
kDriver_Name
kPlugIn_BundleID
kPlugIn_Icon
kDevice_Name
kDevice_IsHidden
kDevice_HasInput
kDevice_HasOutput
kDevice2_Name
kDevice2_IsHidden
kDevice2_HasInput
kDevice2_HasOutput
kLatency_Frame_Size
kNumber_Of_Channels
kSampleRates
它们可以在构建时通过xcodebuild使用GCC_PREPROCESSOR_DEFINITIONS指定。
例子。
xcodebuild \
-project BlackHole.xcodeproj \
GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS
kSomeConstant=value'
在使用字符串时,请确保转义任何引号。
重命名BlackHole
要定制BlackHole,需要改变以下常数。
- kDriver_Name
- kPlugIn_BundleID(注意,这必须与目标bundleID匹配)
- kPlugIn_Icon
这些可以使用xcodebuild指定为预编译器常量。
driverName = "BlackHole"
bundleID = "audio.existential.BlackHole"
icon = "BlackHole.icns"
xcodebuild \
-project BlackHole.xcodeproj \
-configuration Release \
PRODUCT_BUNDLE_IDENTIFIER=$bundleID \
GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS
kDriver_Name="'$driverName'"
kPlugIn_BundleID="'$bundleID'"
kPlugIn_Icon="'$icon'"'
定制通道、延时和采样率
kNumber_Of_Channels用于设置通道数量。在指定高通道数时要小心。尽管BlackHole被设计成在较高的通道数下非常有效,但你的计算机可能无法跟上。采样率也是一个因素。不要使用高采样率和高数量的通道。一些应用程序不知道如何处理高通道数。请谨慎行事。
kLatency_Frame_Size是驱动程序处理传入和传出的音频的时间,以帧为单位。它可以用来延迟BlackHole中的音频,最多65536帧。如果使用BlackHole的高通道数,这可能会有帮助。
kSampleRates设置音频设备的采样率或采样率。如果使用多个采样率,用", "分开。例如:44100, 48000。
镜像设备
默认情况下,BlackHole有一个隐藏的镜像音频设备。这些设备可以使用以下常数进行定制。
// Original Device
kDevice_IsHidden
kDevice_HasInput
kDevice_HasOutput
// Mirrored Device
kDevice2_IsHidden
kDevice2_HasInput
kDevice2_HasOutput
当所有设置为 "真 "时,第二个BlackHole会出现,其工作原理完全相同。输入和输出是镜像的,所以两个设备的输出都会进入两个设备的输入。
如果你需要一个单独的设备进行输入和输出,这很有用。
例子
// Original Device
kDevice_IsHidden=false
kDevice_HasInput=true
kDevice_HasOutput= false
// Mirrored Device
kDevice2_IsHidden=false
kDevice2_HasInput= false
kDevice2_HasOutput=true
在这种情况下,我们有两个BlackHole设备。一个将只有输入,另一个将只有输出。
在项目中使用的一种方法是隐藏镜像设备并在幕后使用它。这样,用户就会看到一个只有输入的设备,而把音频路由到他们场景后面的输出。
隐藏的音频设备可以用kAudioHardwarePropertyTranslateUIDToDevice来访问。
持续集成/持续部署
BlackHole可以被集成到你的CI/CD中。在github.com/Existential… 来看安装程序是如何建立、签署和公证的。
常见问题
为什么BlackHole没有显示在应用程序文件夹中?
BlackHole是一个虚拟的音频环回驱动程序。它只在 "音频MIDI设置"、"声音首选项 "或其他音频应用程序中显示出来。
我怎样才能在听音频的同时使用BlackHole?
我怎样才能改变多输出设备的音量?
不幸的是,macOS不支持改变多输出设备的音量,但你可以在音频MIDI设置中设置单个设备的音量。
为什么BlackHole没有播放东西?
- 检查 "系统偏好"->"安全和隐私"->"隐私"->"麦克风",确保你的数字音频工作站(DAW)有麦克风权限。
- 检查 "音频Midi设置 "中BlackHole输入和输出的音量是否全部调高。
- 如果你使用的是多输出设备,由于macOS的问题,内置输出必须被启用,并被列为多输出中的顶级设备。 详情见这里.
为什么在使用多输出或聚合时,音频在X分钟后会出现故障?
- 你需要为除时钟源设备外的所有设备启用漂移校正。
哪些应用程序不能使用多输出?
不幸的是,多路输出有很大的问题,有些应用程序根本就不能使用它们。这里有一个已知的列表。如果你有更多的补充,请让我知道。
- 苹果播客
- 苹果信息
- HDHomeRun
带有聚合/多输出的AirPods无法工作。
AirPods的麦克风以较低的采样率运行,这意味着它不应该被用作聚合或多输出设备的主/时钟设备。解决方案是使用你的内置扬声器(并使其静音)或BlackHole 2ch作为主/时钟设备。BlackHole 16ch不能作为主设备使用,因为主设备需要有2ch。
阅读讨论#146
我可以将BlackHole整合到我的应用程序中吗?
BlackHole是根据GPL-3.0许可的。只要您的应用程序也获得GPL-3.0许可,您就可以使用BlackHole。对于所有其他应用程序,请直接联系Existential Audio.