Mac音频内录的免费方案:Soundflower虚拟声卡从安装到多应用混音完整指南
【免费下载链接】SoundflowerMacOS system extension that allows applications to pass audio to other applications. Soundflower works on macOS Catalina.项目地址: https://gitcode.com/gh_mirrors/so/Soundflower
周五下午,你要交一段产品演示录屏,已经录了三遍,画面都挺好,但视频里浏览器播放的声音总是缺了一截,或者时不时有杂音。问题不在剪辑软件,而在 macOS 默认没有提供"录制系统正在播放的内容"这条路。
Soundflower是 macOS 的一枚内核级虚拟声卡(虚拟音频设备)。它在系统里创建一对虚拟输入/输出通道,让应用 A 的音频输出能被应用 B 直接当作输入读取,解决 Mac 上音频内录与跨应用路由这个核心问题。
先弄清它是什么:内核里的虚拟声卡
Soundflower 是一个内核扩展(KEXT),注册到 macOS 的 IOAudioFamily 音频框架后,系统会多出两个虚拟设备:Soundflower (2ch) 和 Soundflower (64ch),通道数在 Source/Info.plist 的 AudioEngines 段定义。它按 32 位浮点处理数据,支持 44.1kHz 到 192kHz 共六档采样率,每个引擎在内核里预留 2×8192 个样本的环形缓冲——这就是它延迟低、CPU 占用小的原因。
它的核心能力可以概括为:
- 跨应用音频路由:任意应用可以把输出指到虚拟设备,任意录制或混音应用可以把它当输入读走
- 双档通道宽度:2ch 满足日常内录,64ch 供多应用混音与多轨采集
- 无损直通:32 位浮点、最高 192kHz,中间环节不转码
- 完全免费:MIT 协议开源,可修改可商用
- 配套工具齐全:菜单栏控制器 SoundflowerBed 和多机组网工具 Soundfly
源码入口:
- 驱动核心:Source/SoundflowerDevice.cpp、Source/SoundflowerEngine.cpp
- 菜单栏控制器:SoundflowerBed/AppController.mm
- 安装/加载脚本:Tools/load.rb
验证环境并完成内核扩展安装
前置检查,两件事:
- 芯片:必须是 Intel Mac。Apple Silicon(M1/M2 及以后)暂不支持,截至 2025 年 10 月官方未提供适配
- 系统:macOS Catalina(10.15)及以上。仓库内最新版本为 2.0b2,诞生于 Catalina/Big Sur 时代,在更新的系统上加载内核扩展可能受限,以实际安装结果为准
⚠️ 它是不需要关闭 SIP(系统完整性保护)的签名内核扩展。安装后系统可能拦截一次,处理方式是在「系统设置 → 隐私与安全性」里解锁并允许来自 "Cycling '74" 的开发者证书,而不是去动 csrutil。
安装步骤:
- 获取官方签名的 2.0b2 安装包,或从源码构建:
git clone https://gitcode.com/gh_mirrors/so/Soundflower - 运行安装器,输入管理员密码完成拷贝
- 若提示"已阻止",打开「系统设置 → 隐私与安全性」,点击"允许"
- 重启电脑
30 秒验证法:打开"音频 MIDI 设置"应用,设备列表里应同时出现 Soundflower (2ch) 和 Soundflower (64ch),且采样率下拉框可选 44.1kHz/48kHz。两个都在即安装成功;缺了就去"隐私与安全性"里确认内核扩展是否被放行。
5分钟完成第一次系统声音内录
最高频的场景:把浏览器里的声音录进 QuickTime,同时自己还能听到。
- 「系统设置 → 声音 → 输出」:选 Soundflower (2ch)。注意,从这一刻起扬声器没声音了,声音全被导进虚拟通道
- 菜单栏的 SoundflowerBed(花朵图标):在 2ch 菜单里把输出路由设为内置扬声器或耳机,这样你录的同时能听到
- QuickTime Player →「文件 → 新建音频录制」
- 点录制按钮旁的下拉箭头,输入设备选 Soundflower (2ch)
- 播放浏览器音频,点红色录制按钮,几秒后停止并保存
得到的文件就是系统音频本身。内录、录屏、会议留痕,走的就是这条链路。
拆解核心能力与配套工具
内核驱动(Source/):两个音频引擎各自独立收发,64ch 设备把 64 个通道划给多个客户端,是后面混音玩法的基础。设备注册与音量、静音、增益控制在 Source/SoundflowerDevice.cpp 的 IOAudioDevice 子类里实现。
SoundflowerBed 菜单栏控制器:
- 输出路由:把虚拟设备"转接"到真实扬声器,解决内录时耳机无声的问题,这是它最常用的一键功能
- 缓冲区大小、采样率、音量与静音:都在菜单里直接调,不用进系统设置
- 进阶选项:菜单子项里还有通道克隆(cloning)与路由模式(routing)开关,做混音前可以先研究 SoundflowerBed/AudioThruEngine.cpp 里的直通算法
Soundfly 多机组网:把 A 机的音频输出经网络送到 B 机当输入,Soundfly/2.0/ 下包含发送端(sender)、接收端(receiver)、后台守护进程(SFDaemonManager.m)、偏好窗格和状态栏控制器,适合双机录音或远程监听。
排查高频故障:无声、消失、爆音
症状一:录出来是静音,或内录时完全没声音
可能原因:系统输出没指到 Soundflower,或 Bed 的输出路由还停在 None,声音进了虚拟通道却没有人接走。
解法:
- 「系统设置 → 声音 → 输出」确认已选 Soundflower (2ch)
- SoundflowerBed 的 2ch 菜单里,把输出路由设为真实播放设备
- 确认录制软件的输入设备选的是同一个虚拟设备
症状二:重启后设备列表里 Soundflower 不见了
可能原因:内核扩展被系统拦截未加载,或系统更新后需要重新放行。
解法:
- 打开「系统设置 → 隐私与安全性」,确认 Soundflower 的开发者证书已允许,然后重启
- 如果是源码构建的版本,重新运行仓库里的加载脚本,它会自动卸载旧版、拷贝并加载 kext:
cd Tools sudo ./load.rb症状三:录制爆音、卡顿,CPU 占用偏高
可能原因:缓冲区太小,或输入侧与输出侧设备采样率不一致,CoreAudio 被迫频繁重采样。
解法:
- SoundflowerBed 里调大缓冲区大小
- 打开"音频 MIDI 设置",把所有相关设备统一到同一采样率(推荐 48kHz)
- 卸载不用完的多轨应用,减少同时在跑的应用数量
进阶:搭多应用混音与跨机音频链路
场景一:64ch 多应用分轨混音
目标:多个应用同时输出,各占独立通道,一次录下全部再分轨。
配置要点:在"音频 MIDI 设置"选中 Soundflower (64ch);macOS 的 CoreAudio 会按应用打开顺序把通道对依次分给各输出应用(第一个应用拿 1-2 声道,第二个拿 3-4,以此类推);录制端按通道选取所需声轨。通道定义细节见 Source/Info.plist。
场景二:Soundfly 跨机音频链路
目标:A 机播放的音频实时出现在 B 机的输入设备里。
配置要点:A 机跑 sender、B 机跑 receiver,两者通过偏好窗格配置网络参数;守护进程负责后台常驻,状态栏图标可快速断开/重连。参考 Soundfly/2.0/SFCommunicationManager.m 了解通信层实现。
场景三:源码定制
目标:改缓冲策略、加功能,或自己出一版安装包。
关键文件:Source/SoundflowerEngine.cpp(核心音频处理)、SoundflowerBed/AudioThruEngine.cpp(Bed 的路由与缓冲逻辑)、Tools/installer.rb(生成签名安装包)。流程见 ReadMe.md:构建完成后由 Tools/load.rb 把 kext 装进 /System/Library/Extensions 并加载。
选型参考:Soundflower值不值得用
| 工具 | 费用 | 维护状态 | 适用场景 | 上手成本 |
|---|---|---|---|---|
| Soundflower | 免费(MIT) | 社区维护,停留在 2.0b2,仅 Intel Mac | 多通道混音、专业多轨采集,需要源码级定制 | 中,涉及内核扩展安装 |
| Loopback | 付费 | Rogue Amoeba 持续维护,支持 Apple Silicon | 全功能虚拟混音,需要图形界面精细控制 | 低,装完即用 |
| BlackHole | 免费 | 社区活跃维护,支持 Apple Silicon | 简单内录、替代 2ch 直通场景 | 低 |
一句话结论:Intel Mac 上需要免费的多通道混音和源码定制,它仍是首选;如果你的机器是 Apple Silicon,直接考虑 Loopback 或 BlackHole,别在它身上耗时间。
找到更多资料:官方文档与源码入口
如果还想知道更多:
- 官方文档:ReadMe.md,包含构建流程和最可靠的卸载方法(删除 /Library/Extensions 与 /System/Library/Extensions 下的 Soundflower.kext 后执行
sudo touch /Library/Extensions/再重启) - 源码与许可:驱动在 Source/,控制器在 SoundflowerBed/,MIT 许可全文见 License.txt
- 社区讨论:可前往项目官方仓库的 Discussions 板块提问
把系统输出切到 Soundflower,录下你的第一段系统声音,剩下的配置都可以按图索骥。
【免费下载链接】SoundflowerMacOS system extension that allows applications to pass audio to other applications. Soundflower works on macOS Catalina.项目地址: https://gitcode.com/gh_mirrors/so/Soundflower
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考