BlackHole 使用指南:3 步在 macOS 上搭好低延迟虚拟声卡环回
【免费下载链接】BlackHoleBlackHole is a modern macOS audio loopback driver that allows applications to pass audio to other applications with zero additional latency.项目地址: https://gitcode.com/gh_mirrors/bl/BlackHole
你正在用 OBS 开播,观众要听到游戏和网页里的声音,而你戴的耳机还得照常出声——两者要同时发生,就需要一条能把"系统声音"转成"麦克风输入"的通道。BlackHole 就是为此而生的 macOS 虚拟音频工具:一个开源虚拟驱动,在系统里创建出一块纯软件的虚拟声卡,让任意两个应用之间的声音直接互转。
装好之后,它以 "BlackHole 16ch" 之类的名字出现在系统音频设备列表中,自带一组输入端口和一组输出端口:A 应用把声音送到输出端,B 应用再从输入端取走,全程不经过真实硬件,也不需要关闭系统完整性保护(SIP)或加载内核扩展。
先装会用:一行命令安装 16ch 版
在终端执行(轻量需求选 2ch,多轨录制选 64ch,其余不变):
brew install blackhole-16ch按下面流程验证设备是否就位:
- 打开「音频 MIDI 设置」(聚焦搜索 Audio MIDI Setup 即可)
- 在左下角设备列表中找到BlackHole 16ch,应显示 16 ins / 16 outs
- 选中它,确认右下角格式为 48,000 Hz、32-bit float,与常用采样率保持一致
- 把主音量滑块拉到顶,避免音量在零位影响测试
- 任选一个播放器把输出切到 BlackHole 16ch,再用录音应用从它的输入端录 10 秒,回放确认有声
想自己编译的话,clone 仓库(git clone https://gitcode.com/gh_mirrors/bl/BlackHole)后用 xcodebuild 构建,将产物拷到/Library/Audio/Plug-Ins/HAL,再执行sudo killall -9 coreaudiod重启音频服务即可。
原理速览:Core Audio 虚拟驱动为何几乎零延迟
- 注册为一块"真"设备:它是 Core Audio 体系下的 AudioServerPlugIn(HAL 插件)虚拟设备驱动,由系统音频服务加载并向系统注册,任何应用都能在输入/输出列表里选它,而非内核扩展,因此无需改动系统安全设置。
- 内存里直接交接数据:驱动内部是一块 65536 帧的共享环形缓冲(Float32 采样),输出流写入、输入流读取,信号不绕道用户空间,也没有二次缓冲层。
- 同一时钟、零延迟帧:输入与输出共享内部固定时钟(默认 48 kHz),默认延迟帧数为 0,驱动本身几乎不排队等待,残余延迟只剩系统音频路径的固有量级。
选型速查:2ch / 16ch / 64ch 怎么挑
| 版本 | 通道 | 适合 |
|---|---|---|
| 2ch | 2 | 语音通话、OBS 只录系统声音 |
| 16ch | 16 | 直播混音、多轨录制,多数场景的推荐起点 |
| 64ch | 64 | stems 多轨、复杂混音工程 |
| 128ch / 256ch | 128 / 256 | 广播级大型制作,需自行编译 |
- Homebrew 只提供 2ch / 16ch / 64ch 三种包,128 与 256 通道需从源码构建
- 采样率覆盖 8 kHz ~ 768 kHz,共 12 档,44.1k、48k、96k、192k 等常用档位齐全
- 采样精度固定为 32-bit float,对 24-bit 整型是无损的,无需额外设置
- Intel 与 Apple Silicon 均有对应构建
直播/播客:OBS 用系统声音当麦克风
- 「音频 MIDI 设置」左下角点 "+" → 创建多输出设备
- 勾选「内建输出」与 BlackHole 16ch,且把内建输出排在第一位(多输出设备的 macOS 限制),两者采样率保持一致
- 为除主时钟设备以外的各项勾选 Drift Correction(漂移校正)
- 「系统设置 → 声音」中把默认输出切到这个多输出设备
- OBS 添加「音频输入采集」源,设备选 BlackHole 16ch,通道取 1–2
效果:观众在直播里听到电脑声音,你的监听耳机照常出声,麦克风可在 OBS 中单独混入。
音乐制作:macOS 录系统声音进 DAW
- 将源应用(播放器、软音源或另一台 DAW)的输出设备设为 BlackHole 16ch
- 在 GarageBand / Logic 中把项目输入设备设为 BlackHole 16ch,轨道输入选通道 1–2
- 多轨分录:给不同应用分配不同通道对,例如应用 A 走 1–2、应用 B 走 3–4,一次录音同时落下多轨
- 想边录边听,按上一节搭一个多输出设备做监听,避免录音时耳机没声音
教学录屏:同步录下软件操作的声音
- 被演示软件输出 → BlackHole 16ch(通道 1–2)
- 录屏工具(QuickTime、OBS 等)的音频输入选 BlackHole 16ch,画面与声音进入同一条录像
- 需要人声讲解时,讲解麦克风另占一对通道(如 3–4),后期可分轨调整响度
- 录屏工具若只支持双声道输入,先用 2ch 版跑通流程,再按需升级通道数
兼容性速查:支持的 macOS 版本
- 10.10 – 10.14(Yosemite 起):官方最低支持线
- 10.15 – 11(Catalina / Big Sur):Intel 与 Apple Silicon 双架构
- 12 起(Monterey 及更新):当前主流版本,完全支持
排错速查:无声、卡顿、升级后失效
| 现象 | 原因 | 处理 |
|---|---|---|
| 装完找不到设备 | 它是驱动而非 App,不会出现在「应用程序」文件夹 | 到「音频 MIDI 设置」或「系统设置 → 声音」的设备列表里找 |
| 选了设备仍无声 | 录音应用未获麦克风权限,或设备音量在零位 | 「系统设置 → 隐私与安全性 → 麦克风」授权;把输入/输出音量滑块拉到顶 |
| 多输出下内建扬声器没声 | macOS 限制:内建输出须排在多输出列表首位 | 将 Built-in Output 调整到第一位并保持勾选 |
| 多输出用几分钟后出现卡口/爆音 | 聚合成员之间采样时钟漂移 | 除主时钟设备外,为所有成员开启 Drift Correction |
| 安装包装到一半失败 | 部分系统版本在 Downloads 等特定目录安装 pkg 的已知问题 | 把 .pkg 移到桌面后重新双击安装 |
| 系统大版本升级后设备失效 | 音频服务状态需要刷新 | 重装对应通道版本,或执行sudo killall -9 coreaudiod |
开源可改:源码入口与二次开发
BlackHole 的价值,在于用一个可读性很强的单文件驱动,把"应用间传声"做成了系统级能力;项目以 GPL-3.0 开源,二次开发门槛很低:
- 驱动全部逻辑集中在 BlackHole/BlackHole.c:设备注册、环形缓冲读写、时钟与音量控制都在其中
- Installer/create_installer.sh 演示了一次构建 2/16/64/128/256 通道版本并完成签名、公证的完整流程;Uninstaller/create_uninstaller.sh 生成对应的卸载包
- 改几个编译期常量即可定制:
kNumber_Of_Channels定通道、kSampleRates定采样率、kDriver_Name定设备名;需要"只进不出"或"只出不进"的隐藏设备时,用镜像设备的 kDevice2 常量组合即可
【免费下载链接】BlackHoleBlackHole is a modern macOS audio loopback driver that allows applications to pass audio to other applications with zero additional latency.项目地址: https://gitcode.com/gh_mirrors/bl/BlackHole
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考