ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

macOS 应用间传音频?BlackHole 虚拟音频回环驱动从安装到路由的完整指南

macOS 应用间传音频?BlackHole 虚拟音频回环驱动从安装到路由的完整指南

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 上的虚拟音频回环驱动:应用 A 输出到它,应用 B 就能从它读入,驱动本身不增加延迟。本文按"装好 → 确认设备 → 搭第一条路由 → 录系统声音"的顺序,带你 10 分钟跑通整条链路。

两分钟装好 BlackHole:一行 Homebrew 命令或官方安装包

先选声道版本

  • 官方提供 2、16、64、128、256 五种声道数的构建,Homebrew 源里收录了前三种(blackhole-2ch、blackhole-16ch、blackhole-64ch)
  • 大多数录音与路由场景用 16ch 就够;声道不是越多越好,高采样率叠多声道可能拖累系统性能

方式一:Homebrew 安装

brew install blackhole-16ch

方式二:官方 .pkg 安装包

  1. 下载最新安装包(当前版本 0.6.1,2025-02-06 发布,变更历史见 CHANGELOG.md)
  2. 关闭所有正在运行的音频应用
  3. 双击打开安装包完成安装,安装程序会提示重启系统

两点可以放心:驱动文件落在系统根目录的/Library/Audio/Plug-Ins/HAL,安装过程不使用内核扩展、不改动系统安全设置;兼容 macOS 10.10 Yosemite 及以上,Intel 与 Apple Silicon 通吃。

安装后去哪儿找它:在 Audio MIDI Setup 确认设备

BlackHole 不会出现在"应用程序"文件夹——它是 HAL 音频驱动,不是 App,只在系统音频层面可见。

  1. 打开"应用程序 → 实用工具 → 音频MIDI设置"(Audio MIDI Setup)
  2. 左侧设备列表应出现 BlackHole,16ch 版本显示16 ins / 16 outs
  3. 选中它,右侧 Format 显示48,000 Hz / 16 ch 32-bit Float

关于格式:驱动使用 32-bit float,对 24-bit 整数音频无损,所有应用均可正常播放录制,无需在驱动层调整位深。采样率支持 8 kHz 到 768 kHz 共 12 档,日常场景 48 kHz 足够。

第一条路由怎么搭:把发送端和接收端都对准 BlackHole

这是最小可用配置,全程只动两个应用的设备设置:

  • 发送应用:输出设备选择 "BlackHole",把音频输出到 1–2 通道
  • 接收应用:输入设备选择 "BlackHole",从对应的通道读入
  • 多个应用同时写入 BlackHole 时,声音会被混音叠加(sum)
  • 播放前把 BlackHole 的输入、输出主音量都拉满,它的主音量可调范围是 -64 dB 到 0 dB

把系统声音录进 DAW:多输出设备的五步配置

只把输出指向 BlackHole 时你自己听不到声音。要让"耳朵"和"录音"同时工作,需要建一个多输出设备:

  1. 在 Audio MIDI Setup 左下角点 "+",选"创建多输出设备"
  2. 勾选 BlackHole 和 Built-in Output;注意 Built-in Output 必须启用且排在列表第一位(macOS 的已知限制)
  3. 在 Audio Devices 中右键新建的多输出设备,选 "Use This Device For Sound Output"
  4. 打开 GarageBand 等 DAW,输入设备设为 "BlackHole"
  5. 新建轨道,输入通道选 1–2,在其他应用里播放音频,即可监听或录制

两个已知限制,官方 FAQ 有明确记录:

  • 多输出设备本身无法调音量,macOS 只允许在 Audio MIDI Setup 里调成员设备的音量
  • Apple Podcasts、Apple Messages、HDHomeRun 对多输出设备兼容不佳,录制时换应用或换思路

没声音、有爆音、AirPods 连不上:三类高频问题的排查顺序

录音软件收不到任何声音

  1. 打开"系统偏好设置 → 安全性与隐私 → 隐私 → 麦克风",确认 DAW 已获麦克风权限(BlackHole 以输入设备身份出现,走的是麦克风权限)
  2. 确认 Audio MIDI Setup 中 BlackHole 的输入、输出音量都在最大值
  3. 若走了多输出设备,确认 Built-in Output 已启用且排在第一位

播放几分钟开始出现爆音或卡顿

时钟漂移导致。在 Audio MIDI Setup 中,除主时钟设备(Clock Source)外,给其余所有设备打开 drift correction(漂移校正)。

AirPods 在多输出设备里不工作

AirPods 的麦克风工作在较低采样率,不能担任主时钟设备。解决办法:用内置扬声器(可以静音)或 BlackHole 2ch 作为主时钟设备——BlackHole 16ch 不行,主时钟设备要求 2 声道。

另外,个别 macOS 版本在 Downloads 目录安装 .pkg 会失败,把安装包挪到桌面(或反向操作)再试一次即可。

进阶定制:镜像设备、声道数与采样率怎么改

核心驱动代码集中在 BlackHole.c 一个文件里,行为全部由预处理器常量决定,通过xcodebuild的GCC_PREPROCESSOR_DEFINITIONS在构建时传入。需要源码时:

git clone https://gitcode.com/gh_mirrors/bl/BlackHole

三个最常用的编译常量

  • kNumber_Of_Channels:声道数。README 明确提醒:不要在高声道数下再用高采样率
  • kSampleRates:采样率,多个值用逗号分隔,例如kSampleRates='44100,48000'
  • kLatency_Frame_Size:驱动内部缓冲帧数,最多 65536 帧,可在 BlackHole 内部给音频加延时,适合高声道数场景

镜像设备:拆出独立的输入设备和输出设备

驱动默认自带一个隐藏的镜像设备(源码中kDevice2_IsHidden默认为 true)。通过kDevice_IsHidden、kDevice_HasInput、kDevice_HasOutput及对应的kDevice2_*常量,可以把它配成"一个仅输入、一个仅输出"的成对设备,适合需要输入输出路径分离的应用集成场景。

打包、签名、公证的完整流程见 Installer/create_installer.sh。许可方面:BlackHole 采用 GPL-3.0 协议(见 LICENSE),如果你的应用不是 GPL-3.0,集成前需联系 Existential Audio 获取授权。

干净卸载:删除驱动并重启 CoreAudio

  • 官方为 2ch、16ch、64ch 各提供了独立的 Uninstaller 安装包,双击运行即可
  • 手动卸载只需要两条命令:
rm -R /Library/Audio/Plug-Ins/HAL/BlackHoleXch.driver

把X替换为2、16或64。注意路径是系统根目录的/Library,不是~/Library。

sudo killall -9 coreaudiod

执行完回到 Audio MIDI Setup,确认设备列表里已经找不到 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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进