ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

BlackHole 完整教程:3 步打通 macOS 应用间音频零延迟传输

BlackHole 完整教程:3 步打通 macOS 应用间音频零延迟传输

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

在 macOS 上做直播、开网课或录屏时,你多半撞见过这样一个瞬间:想把 Spotify、浏览器或 Logic Pro 里的声音送给会议软件、或者录进文件,却发现系统里根本没有"A 应用把声音交给 B 应用"这条路。BlackHole 就是一枚macOS 音频环回驱动(virtual audio loopback driver):它在系统内部开出一条虚拟声卡通道,让任意应用能把音频直接"投递"给另一个应用,全程零额外延迟。

🗺️ 先用 30 秒看懂它到底是什么

很多人第一眼以为它是某个带界面的 App,其实相反——它不占桌面、不进「应用程序」文件夹,只以一个虚拟音频设备的身份安静地待在系统里。你唯一会"看见"它的地方,是Audio MIDI Setup、Sound Preferences和各种音频软件的输入/输出下拉列表。

它真正值钱的,是下面三个"零":

  • 零额外延迟:驱动层不叠加缓冲延迟,传声几乎是实时的;
  • 零内核扩展:不用装 kernel extension、不改系统安全策略,安装后重启 CoreAudio 即可用;
  • 零成本:GPLv3 开源,从 2 声道到 256 声道全免费。

能力上限也相当宽:采样率覆盖8kHz–768kHz(含 44.1kHz、48kHz、96kHz、192kHz 等),兼容macOS 10.10 及以上,且同时支持Intel 与 Apple Silicon。

装哪个版本,看你的声道需求:

版本声道数适合谁
blackhole-2ch2会议共享、播客、日常录音(多数人首选)
blackhole-16ch16DAW 多轨分轨、专业制作
blackhole-64ch64大型多轨工程

小贴士:声道不是越多越好。高声道 + 高采样率会吃资源,日常用途 2ch 就足够。

🚀 最短路径装好它

三条路任选,新手走第一条即可。

路径一:官方安装包(.pkg)

  1. 下载对应声道版本的安装包;
  2. 先关掉所有正在运行的音频应用;
  3. 双击按提示装完,按提示重启系统。

路径二:Homebrew(命令行友好)

brew install blackhole-2ch # 日常 2 声道 brew install blackhole-16ch # 专业 16 声道 brew install blackhole-64ch # 高级 64 声道

路径三:源码构建(想改参数的人)

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

用 Xcode 打开工程编译后,把生成的BlackHoleXch.driver放进/Library/Audio/Plug-Ins/HAL,再执行下面命令让 CoreAudio 重新识别:

sudo killall -9 coreaudiod

装完去哪确认?打开Audio MIDI Setup→Audio Devices,左侧列表里应能看到 BlackHole(例如 16 ins / 16 outs)。如果没出现,多半是上面那步coreaudiod没重启,或驱动没落进/Library/Audio/Plug-Ins/HAL。

如上图,右侧可以查看/调整它的Format(采样率 + 声道 + 32-bit Float)、Channel Volume与各通道音量。把 Master 与各通道都拉到顶,是排查"没声音"的第一步。

🎧 主线跑通:让"电脑的声音"真正流动起来

整个使用逻辑其实只有两个动作——发送端把输出指给 BlackHole,接收端把输入指给 BlackHole。下面以"一边听、一边把系统声音送给录音/会议软件"这条最常见的主线走完整:

  1. 发送端:在你想分享声音的应用(或系统默认输出)里,把输出设备设为BlackHole;
  2. 接收端:在会议软件或 DAW 里,把输入设备设为BlackHole,通道对齐即可收到;
  3. 想边听边传:单独把输出指给 BlackHole 时你自己就听不见了。这时新建一个Multi-Output 设备,把Built-in Output(真实喇叭)和BlackHole一起加进去,并把Built-in Output设为时钟源、排第一,其余设备勾选 drift correction。这样声音同时进你耳朵和 BlackHole。

这条主线通了之后,剩下的玩法只是"换发送端/接收端":

  • 直播垫音乐:播放器输出 → BlackHole → 推流软件输入,观众能听到你的歌单;
  • 网课/录屏抓系统音:Multi-Output 里把系统音同时送进 DAW 的 BlackHole 输入轨,边看边录;
  • DAW 多轨分轨:用 16ch/64ch,让不同应用各占一段声道,一个工程里各收各的;
  • 自动化音频回路:脚本或测试工具把信号从一端写进 BlackHole,再从另一端读回做校验。

🧩 三个编译开关,把它调成你想要的样子

BlackHole 的"身体参数"都藏在预编译常量里,构建时通过GCC_PREPROCESSOR_DEFINITIONS注入即可(详见 BlackHole/BlackHole.c 中的常量定义):

xcodebuild \ -project BlackHole.xcodeproj \ GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS \ kNumber_Of_Channels=8 \ kSampleRates="44100,48000" \ kLatency_Frame_Size=512'
常量作用建议
kNumber_Of_Channels声道总数按需 2/16/64,越高越吃资源
kSampleRates允许的采样率(逗号分隔)例如"44100,48000"
kLatency_Frame_Size驱动内部处理缓冲帧数默认 1024;高声道可调大更稳

还有一个不太起眼但很实用的功能——镜像设备(Mirror Device):通过kDevice2_*一组常量,可以让系统里出现第二个 BlackHole,并且把第一个做成"只有输入"、第二个做成"只有输出"。当某个应用只认输入或只认输出时,这种"一拆为二"的配置能省很多事。

想自己打包/签名/公证一个可分发的安装包,可以直接看仓库里现成的 CI 脚本 Installer/create_installer.sh;不想装回去时,Uninstaller/create_uninstaller.sh 提供了对应流程。

🚧 翻车自救手册(按症状对号入座)

症状 A:设备压根不出现

  • 先确认驱动真的落进了/Library/Audio/Plug-Ins/HAL/BlackHoleXch.driver(注意是根目录的/Library,不是~/Library);
  • 重启 CoreAudio:sudo killall -9 coreaudiod;
  • 确认 macOS 版本 ≥ 10.10。

症状 B:设备在,但就是没声音

  • 查System Preferences → Security & Privacy → Privacy → Microphone,给接收端应用(DAW 等)开麦克风权限;
  • 到Audio MIDI Setup把 BlackHole 的输入/输出 Master 与各通道都拉满;
  • 若用了 Multi-Output,记得Built-in Output必须启用且排在第一位。

症状 C:多输出/Aggregate 用了几分钟后爆音、卡顿

  • 典型是时钟漂移:除了时钟源(Master/Primary)之外,其余每个设备都要勾选 drift correction;
  • 个别 App 对 Multi-Output 天生不友好,已知如 Apple Podcasts、Apple Messages、HDHomeRun,这类场景建议改走系统默认输出。

安装脚本本身报错时,可尝试把.pkg从「下载」挪到「桌面」再双击(或反过来),部分系统版本在这个位置装不上。

📚 想再往深里看,去哪找

  • 功能、安装/卸载、用户与开发者指南:README.md
  • 各版本更新记录:CHANGELOG.md(当前 0.6.1,安装包已改为按 Apple 建议强制重启)
  • 构建与打包脚本:Installer/
  • 工程与编译配置:BlackHole.xcodeproj/

动手顺序建议:先装 2ch 把"发送端 → BlackHole → 接收端"这条主线跑通,再上 Multi-Output 解决"边听边传",最后才考虑多声道和自定义构建。三步走完,你就能在 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

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

RELATED READING

延伸阅读

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