如何在 macOS 应用间传递音频:BlackHole 虚拟音频回环驱动完整指南
【免费下载链接】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
BlackHole 是一款现代的 macOS 音频回环(Audio Loopback)驱动,让应用把音频传给其他应用,不引入额外延迟。无论你是想录制系统声音、从 DAW 推流到会议软件,还是搭建多轨录音工作流,这篇指南都会带你从安装、验证到调优、排障一步步走完。
🎯 为什么需要 BlackHole:macOS 音频路由的真实痛点
先说一个很常见的需求:你想让 Zoom 听到 Logic Pro 正在播放的音乐。
你会发现做不到。macOS 里每个应用各自选择输入和输出设备,应用 A 的输出并不会自动变成应用 B 的输入。传统解决方式是外接声卡用线连回来,或者忍受各种转发的延迟和损失。
BlackHole 的解决思路简单直接:在系统里注册一个虚拟音频设备,充当应用之间的"音频管道"。
- 发送端应用把输出设备选成 BlackHole
- 接收端应用把输入设备选成 BlackHole
- 音频就这样从 A 流到了 B,且驱动本身零额外延迟
适合谁用?
- 音乐人 / 播客:把 DAW 的某个轨道直接送进视频会议软件
- 直播与推流:让 OBS、直播软件接收系统内其他应用的音频
- 系统声音录音:把桌面正在播放的声音录进 DAW 或录音软件
- 多轨混音:用 16 声道版本把多个应用分配到独立通道
⚙️ 它是怎么工作的:一根藏在系统里的"虚拟管道"
一句话概括:BlackHole 在 macOS 的 Core Audio 音频栈里注册成一个合法的音频设备,所有应用都把它当成一块普通"声卡"来读写。
你可以把它想象成一根虚拟管道:
- 管道一端是输出,写入什么声音,另一端就能听到
- 管道的另一端是输入,任何应用把它当麦克风用,读到的就是刚写入的声音
- 输出和输入在驱动内部直接镜像,数据在内核空间流转,这就是"零额外延迟"的来源
几个对理解有用的事实:
| 特性 | 说明 |
|---|---|
| 驱动形态 | HAL 音频插件,安装到/Library/Audio/Plug-Ins/HAL,不是内核扩展,不需要关闭系统安全设置 |
| 位深度 | 固定 32-bit float(Core Audio 系统级原生格式,对 24-bit 整数无损兼容) |
| 采样率 | 覆盖 8kHz 到 768kHz,常用 44.1kHz / 48kHz / 96kHz 都支持 |
| 隐藏镜像设备 | 每个 BlackHole 背后还有一个隐藏的镜像设备,可自定义成"纯输入"或"纯输出"设备(详见进阶部分) |
| 兼容性 | macOS 10.10 Yosemite 及以上,Intel 与 Apple Silicon 均有构建 |
📐 选哪个声道版本:按使用场景定数字
版本不是越大越好。声道数越多,音频栈处理的负载越大,部分应用也不认识高声道配置。够用即可。
| 版本 | 声道数 | 获取方式 | 适用场景 |
|---|---|---|---|
| BlackHole 2ch | 2 | Homebrew / 官方安装包 | 系统声音路由、录制、发送到会议软件(多数人首选) |
| BlackHole 16ch | 16 | Homebrew / 官方安装包 | 多轨录音、多个应用各占独立通道 |
| BlackHole 64ch | 64 | Homebrew / 官方安装包 | 专业音频制作、复杂路由矩阵 |
| BlackHole 128ch / 256ch | 128 / 256 | 官方安装包或源码构建 | 大型录音室、特殊项目需求 |
选型建议:
- 拿不准就选 2ch。绝大多数"应用间传声音"的场景两声道足够
- 需要同时录多个应用/多轨混音,上 16ch
- 采样率不必拉满:语音和会议用 44.1kHz 或 48kHz,母带级别再考虑 96kHz 以上。高声道 × 高采样率是性能杀手
🚀 三步上手:安装 → 验证 → 生效
第一步:安装 BlackHole 驱动
三种方式任选其一。
方式一:Homebrew(最省事)
brew install blackhole-16ch把16ch换成2ch或64ch即可,以官方仓库说明为准。
方式二:官方安装包
- 从官方渠道下载对应声道的
.pkg安装包 - 关闭所有正在运行的音频应用
- 打开并安装,安装完成后按提示重启电脑(0.6.1 起安装包会强制要求重启,这是 Apple 的推荐做法)
方式三:从源码编译(需要自定义声道、采样率、设备名时)
git clone https://gitcode.com/gh_mirrors/bl/BlackHole构建流程可参考 官方安装脚本,它演示了如何用xcodebuild为 2/16/64/128/256 声道分别构建、签名并打包安装包。
第二步:验证设备是否生效
打开"音频 MIDI 设置"(Audio MIDI Setup,Spotlight 搜"音频"即可找到),在左侧设备列表中应该能看到 BlackHole 条目:
逐项核对:
- 设备名下方显示
16 ins / 16 outs(或与你安装版本一致的声道数) - 格式显示
48,000 Hz、16 ch 32-bit Float - Master 音量滑块是拉满的(默认值 1.0),没有被静音
- 在发送和接收应用里都能在下拉列表中找到它
第三步:让音频流动起来
- 打开发送应用,把输出设备选为 BlackHole,声音发到通道 1-2
- 打开接收应用,把输入设备选为 BlackHole,从通道 1-2 读取
- 播放声音,在接收端确认能收到
能听到,说明整条链路已经通了。
🛠️ 典型场景演练:跟着做就能跑通
场景一:把 DAW 的音频送到 Zoom / Google Meet
目标:让会议里的人听到你的工程混音,而不是麦克风。
- 在 DAW(Logic Pro、GarageBand、Reaper 等)中,把输出设备设为 BlackHole
- 在会议软件中,把输入(麦克风)设备设为 BlackHole
- DAW 侧走通道 1-2 输出,会议软件侧从 1-2 接收
- 在 DAW 里播放,会议中即可听到混音;需要说话时再切回麦克风
场景二:用 DAW 录制系统声音
目标:把系统正在播放的声音录成文件。
- 打开"音频 MIDI 设置",左下角点
+,选择"创建多输出设备"(Multi-Output Device) - 勾选 Built-in Output 和 BlackHole,并将Built-in Output 设为主时钟(主设备)
- 右键新建的多输出设备,选择"使用此设备输出声音"
- 打开 DAW,输入设备选 BlackHole,轨道设为通道 1-2 输入
- 播放任意应用的声音,DAW 中即可监听并录音
场景三:边听边录,多轨混合多个应用
目标:自己通过扬声器正常听声音,同时 BlackHole 把声音送出去录制。
- 这正是"多输出设备"的用途:一个输出同时喂给扬声器和 BlackHole 两条路
- 用 16ch 版本时,可以把不同应用分配到不同通道对(如应用 A 走 1-2,应用 B 走 3-4),在 DAW 里分轨录制
- 关键设置:为非主时钟设备开启"漂移校正",避免运行一段时间后出现卡顿
🩺 遇到问题怎么办:按现象对照排查
现象一:BlackHole 完全没有声音
按顺序排查:
- 麦克风权限:系统设置 → 安全与隐私 → 隐私 → 麦克风,确认接收端应用已获得权限
- 音量:在"音频 MIDI 设置"中确认 BlackHole 输入和输出音量拉满、未静音
- 设备选对了吗:确认发送端输出、接收端输入都选的是 BlackHole,且通道号对应
- 多输出设备:如果用了 Multi-Output,Built-in Output 必须处于勾选状态且排在列表最上方(macOS 的已知限制)
现象二:多输出 / 聚合设备运行几分钟后卡顿
- 原因:各设备时钟有微小偏差,长时间累积后不同步
- 解决:在"音频 MIDI 设置"中,为除主时钟之外的所有设备勾选"漂移校正"(Drift Correction)
现象三:AirPods 参与聚合 / 多输出设备时不工作
- AirPods 的麦克风采样率较低,不能担任主时钟设备
- 改用**内置扬声器(静音状态)**或BlackHole 2ch作为主时钟——注意主时钟设备必须是 2 声道,16ch 版本不能胜任
现象四:安装包一直装不上
- 部分 macOS 版本对
.pkg所在目录有怪癖,从下载文件夹安装失败时,把它移到桌面(或反向操作)再双击安装 - 安装过程中确保没有音频应用占用设备
现象五:想卸载干净
优先使用与声道版本对应的官方 Uninstaller 安装包(如 BlackHole16chUninstaller.pkg)。手动卸载则是两步:
sudo rm -R /Library/Audio/Plug-Ins/HAL/BlackHole16ch.driver sudo killall -9 coreaudiod注意把16换成实际声道数,并且路径是系统级的/Library,不是~/Library。构建卸载包的流程可参考 官方卸载脚本,安装阶段的目录准备逻辑在 Installer/scripts/preinstall 中。
⚡ 进阶调优与周边生态
性能调优要点
- 声道数与采样率不要同时拉高,官方源码中也有同样的提醒,具体默认值以 BlackHole.c 为准
- 高声道场景下可以调大构建参数
kLatency_Frame_Size,给驱动留出最多 65536 帧的处理缓冲 - 自定义构建通过
xcodebuild的GCC_PREPROCESSOR_DEFINITIONS传入kNumber_Of_Channels、kSampleRates、kDriver_Name等常量,无需改动源码 - 不使用时可考虑直接卸载,减少音频栈常驻设备数量
镜像设备:拆出独立的输入 / 输出设备
BlackHole 默认带一个隐藏的镜像设备(所有输出同时出现在镜像设备的输入上)。通过kDevice_IsHidden、kDevice2_HasInput等构建常量,你可以把它改造成:
- 一个"纯输出"设备 + 一个"纯输入"设备,分别服务于发送端和接收端
- 隐藏镜像设备在幕后路由,用户界面上只看到一个方向,适合做应用内音频链路
周边生态与工具
macOS 原生音量条控制不了多输出设备,这些工具可以补位:
- MultiSoundChanger:为聚合 / 多输出设备调节音量的实用小工具
- BackgroundMusic:按应用设置音量、自动暂停、录制系统音频的音频管理工具
把构建流程接进 CI/CD
官方安装脚本 完整演示了"构建 → 签名 → 打.pkg→ 公证(notarize)→ 装订(staple)"的流水线,适合直接借鉴到自己的发布流程里,为不同声道版本批量产出安装包。
BlackHole 本身没有任何花哨的功能,它只做一件事:让应用之间的音频流动起来,且不添延迟。把声道版本选对、多输出设备的主时钟设对、漂移校正勾上,90% 的场景都能稳定工作。剩下 10% 的问题,基本都能在上文的排障清单里找到答案。
【免费下载链接】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),仅供参考