录制 Mac 正在播放的声音,听起来像是一个很基础的需求:想保存一段网页直播、记录视频会议的讨论、采集某个播放器的音频,或者给游戏画面配上操作解说。但在 macOS 上,这件事并没有想象中那么简单。系统默认只允许录音软件读取麦克风这类输入设备,而扬声器、耳机对应的是输出设备,普通应用默认拿不到正在播放的内容。于是出现了 DesktopAudio 这类工具——它做的事情,就是让 Mac 正在播放的声音能够被录制下来。这篇文章会从 macOS 音频链路说起,把一个可以实际运行的“系统录音”流程完整搭起来,再讲清楚参数、验证、排错和生产环境注意事项。
1. 先理解 macOS 音频链路:为什么系统声音录不下来
1.1 默认状态下,输出设备与输入设备是两条不同链路
macOS 的音频体系建立在 Core Audio 之上。系统把声音设备分为输入和输出两端:麦克风是输入设备,扬声器、耳机、蓝牙音箱是输出设备。播放器把音频数据交给 Core Audio,Core Audio 再送到默认输出设备;录音软件请求的却是输入设备,拿到的是麦克风或其他输入源的数据。
这两条链路在系统层面默认不互通。所以你在录音软件里看到的“麦克风”列表里,不会出现“系统正在播放的声音”这个选项。这不是某个 App 的限制,而是 macOS 音频架构的设计结果。要录制系统声音,必须先做一个“桥接”:让系统输出的数据,能出现在某个输入端口上。
理解这一点,能解释很多看似奇怪的现象。例如录屏软件可以录到画面,却经常录不到电脑内部声音;又例如把系统音量静音后,录音结果也跟着变静音。这些现象都指向同一个根因:系统声音不是天然可采集的视频轨或音频轨,它需要一个专门的采集入口。
1.2 虚拟声卡:把输出“送进”输入端口
虚拟声卡(Virtual Audio Device)就是这座桥。它不是一个物理设备,而是一个借助系统音频驱动接口实现的虚拟设备。BlackHole 是这类工具里非常有代表性的开源实现:安装后,系统里会出现一个名为 “BlackHole 2ch” 的设备,它同时具备输出和输入两端。
应用向 BlackHole 播放声音时,声音不会进入真实扬声器,而是直接落到 BlackHole 的输入端口。录音应用从这个输入端口读取数据,就能拿到系统正在播放的内容。整个过程没有接线、没有物理设备,纯粹是系统音频引擎内部的数据流转。
这里有一个容易误解的地方:BlackHole 本身不会“录音”,它只负责把数据从输出端搬到输入端。真正把数据落盘的任务,仍然要由录音软件或脚本完成。把虚拟声卡当成“一根虚拟音频线”来理解,比把它当成“录音机”更准确。
1.3 DesktopAudio 在整套方案里的位置
DesktopAudio 这类工具通常做的事情,是把上面这套流程封装成更简单的操作:要么提供图形界面,要么把“选择虚拟设备、设置采样率、开始录制、保存文件”几步串成一个命令行工具。工具外壳会变,核心链路不变。不管用 DesktopAudio、ffmpeg、Audacity,还是自己写脚本,最终都要依赖“虚拟音频设备 + 录音程序”的组合。
所以在实际踩坑的时候,不要一遇到问题就怀疑工具本身。如果系统链路没有问题、虚拟声卡工作正常、录音程序也读到了数据,那么改哪一层都是改封装,而不是改核心。下面先从最直接的方式把链路搭出来,再解释参数和排查手段。这样即使以后换一个录制工具,排查思路也完全复用。
补充一下,macOS 上出现过多个类似方案,了解它们能帮助选型:
| 方案 | 是否开源 | 维护状态 | 特点 |
|---|---|---|---|
| Soundflower | 开源 | 不再活跃维护 | 早期常用虚拟声卡,Apple Silicon 下存在兼容问题 |
| BlackHole | 开源 | 活跃 | 免费、稳定,支持多通道版本 |
| Loopback | 商业软件 | 活跃 | 面向多应用混音,易用性好 |
| Background Music | 开源 | 更新较慢 | 可调整单个应用音量,同时支持录音 |
2. 环境准备:在 Mac 上先搭好虚拟音频链路
2.1 确认 macOS 版本和芯片
开始前先确认 Mac 是哪一代系统、是 Intel 还是 Apple Silicon。查询方法:
sw_vers
uname -m
输出示例:
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79
arm64
arm64 表示 Apple Silicon, x86_64 表示 Intel。这个信息决定了后续安装驱动时是否要处理权限问题。BlackHole 的安装包在这两类芯片上都能用,但如果是自行编译或使用旧版驱动,一定要确认对应架构,否则会出现设备安装成功却无法识别的问题。
2.2 安装 Homebrew 作为基础包管理器
虚拟声卡和录音工具都用 Homebrew 安装,最省事。如果系统里还没有,执行官方安装命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEA
278




被折叠的 条评论
为什么被折叠?



