Soundshine app icon

Soundshine

← 返回博客

为什么 macOS 不让你分享系统声音(以及 30 秒修复方法)

你在 Zoom 通话里想播一段 YouTube 视频让所有人都能听到。按下播放,参与者什么都听不到。或者你想用 QuickTime 录屏,最终视频里没有系统声音,只有死寂。你在「系统设置」里翻、查 Zoom 的音频选项、戳 QuickTime 的菜单。什么都没有。

这不是 bug,是 Apple 有意的设计选择。macOS 就是不允许 App 捕获电脑上正在播的音频。如果你想过为什么这件事在 Windows 上能用、在 Mac 上像不可能,下面是水面下到底在发生什么。

macOS 如何处理音频

Mac 上的每个声音都通过一个叫 CoreAudio 的系统。它的核心是 HAL(硬件抽象层)。HAL 是软件和音频硬件之间的看门人。Spotify 放歌时,CoreAudio 通过 HAL 把音频送到输出设备(扬声器或耳机)。Zoom 需要你的声音时,它向 HAL 请求一个输入设备(麦克风)的音频。

关键点是:CoreAudio 把输入和输出当作完全分开的世界。音频流出到扬声器。音频流入自麦克风。两者之间没有内建的桥梁。没有方式让 App 说「给我现在通过扬声器播放的内容」,因为那条路径系统里根本不存在。

这和 Windows 不同。Windows 有一个叫 WASAPI 回环捕获的功能,直接构建在音频栈里。WASAPI 回环让任何 App 都能截入去扬声器的音频流并作为输入读取。这就是为什么 Windows 上的 App 能提供「Stereo Mix」或「What U Hear」作为录音源。

macOS 选择不包含类似的东西。

为什么 Apple 把它锁死

Apple 从未发表官方解释,但理由很清晰,只要看 macOS 在隐私和安全上一以贯之的方式。

允许任何 App 悄无声息捕获所有系统声音会是严重的隐私问题。想象后台进程在你不知情时录下 FaceTime 通话、语音消息或机密视频会议的声音。通过不提供回环路径,Apple 确保没有 App 能在你没明确装一个系统级驱动并授权它的情况下偷听别的 App 的音频。

这和 macOS 要求按 App 批准屏幕录制、麦克风和摄像头访问的哲学一致。Apple 偏爱默认锁死、让用户主动启用,而不是默认敞开门。

代价是合法用例 —— 比如在视频通话里分享一首歌或录带系统声音的教程 —— 变得让人挫败。你找不到明显方式做一件感觉应该很基本的事。

虚拟音频驱动做什么

既然 macOS 不会替你创建回环路径,解决方案是用虚拟音频驱动自己造一条。

虚拟音频驱动是一个 CoreAudio 插件,同时向 HAL 注册自己为输出设备和输入设备。当你把系统声音路由到这只虚拟输出时,驱动把那段音频拿到对应的虚拟输入侧。任何能从麦克风读取的 App(Zoom、QuickTime、OBS、Discord)现在都能通过把虚拟设备选为输入源来拾取系统声音。

技术上,驱动创建一个环形缓冲区,坐在输出侧和输入侧之间。写到输出的音频样本从输入读回。对 macOS 其余部分来说,它看起来像一只普通麦克风。但那只「麦克风」实际上承载着 Mac 在播的内容。

这不是黑客行为或漏洞利用。Apple 的 CoreAudio 框架明确支持第三方 HAL 插件。这是扩展 macOS 音频能力的官方途径。驱动装在 /Library/Audio/Plug-Ins/HAL/,需要管理员密码 —— 这就是为什么虚拟音频工具在配置时要求提升权限。

Mac 音频回环工具简史

虚拟音频设备在 macOS 上的需求不新。人们绕开这个限制已经十多年了。

Soundflower 是最早的方案之一。它是一个开源内核扩展,在 macOS 上创建虚拟音频设备。多年来它是论坛和教程上的标准答案。但 Soundflower 被原作者放弃,而 Apple 逐步淘汰内核扩展,Soundflower 越来越不稳。在现代版本 macOS 上,它常常装不上或引起音频故障。

BlackHole 接过 Soundflower 的接力。它是积极维护的开源虚拟音频驱动,在当前 macOS 上工作。BlackHole 扎实,但它是原始音频管道。你把系统声音路由到 BlackHole 后,扬声器里就听不到了,除非用 Apple 的 Audio MIDI Setup 工具手动建多输出设备。对擅长这种配置的人,BlackHole 工作得很好。对其他人,这是一个让人困惑的过程,要在多个音频设备之间杂耍,并寄希望于一切配对。

Rogue Amoeba 出品的 Loopback 是一款付费 App($99),提供一个精致界面用于创建带逐 App 路由的虚拟音频设备。强大,但面向需要对哪个 App 把音频送到哪里有精细控制的音频专业人士。对一个只想在 Zoom 通话里分享系统声音的人,Loopback 感觉像是要烤面包却买了商业厨房。

现代修复

Soundshine 走更简单的路。它装一个轻量 CoreAudio HAL 驱动,给你一只携带系统声音的虚拟麦克风。没有终端命令、不用在 Audio MIDI Setup 里配多输出设备、也没有复杂路由图要弄清楚。

你装上 Soundshine,引导式配置向导大约 30 秒装好驱动。之后,一个菜单栏图标给你一个单一开关来开关音频路由。打开时,「Soundshine Microphone」出现在任何 App 的麦克风输入里。在 Zoom、Google Meet、QuickTime、OBS 或别的什么里选它,系统声音就流过去。

扬声器全程照常工作。Soundshine 同时把音频直通到真输出设备,所以你听到参与者听到的一切。音频端到端保持数字状态,以 48 kHz、32 位浮点立体声,没有质量损失。

总结

macOS 不让你分享系统声音,因为 Apple 有意在音频输出和输入之间不留回环路径。这是隐私优先的设计决定,不太可能改变。修复是用虚拟音频驱动创建 CoreAudio 不肯创建的桥梁。

如果你想要那个修复的最简单版本,不需手动配置、不需音频工程背景,试试 Soundshine

把任何声音路由到任何应用

Soundshine 将系统声音变成一个虚拟麦克风,让每个 App 直接拿来用。无需命令行,无需内核扩展。

免费下载