如何用 1 个虚拟音频设备实现 macOS 应用独立音量:Background Music 完整指南

发布时间:2026/10/31 10:44:04

如何用 1 个虚拟音频设备实现 macOS 应用独立音量:Background Music 完整指南 如何用 1 个虚拟音频设备实现 macOS 应用独立音量Background Music 完整指南【免费下载链接】BackgroundMusicBackground Music, a macOS audio utility: automatically pause your music, set individual apps volumes and record system audio.项目地址: https://gitcode.com/gh_mirrors/ba/BackgroundMusic开会开到一半后台的音乐播放器还在放歌系统提示音比会议说话声还响——macOS 上每个 App 的音量难道就没法各管各的吗Background Music 是个开源的 macOS 音频工具靠一个虚拟音频设备实现应用独立音量顺带搞定音乐自动暂停和系统音频录制。这篇不急着讲安装先看装上是什么效果再拆开它为什么行得通最后动手。️ 效果前置装上 Background Music 后你能得到什么跑起来/Applications/Background Music.app菜单栏多一个图标点下去是这样一屏顶部一个开关形如Auto-pause Spotify勾上即生效Volumes区域System Sounds、Mail、Finder、Spotify、Firefox……每个应用一条独立音量滑块More Apps里还有完整列表Output Device区域直接切换音频输出设备不用进系统设置翻底部 Preferences 和 Quit还有一个容易忽略的行为应用启动时会把 Background Music 虚拟设备设为系统默认输出退出时自动还原。想开机自启的话去System Settings General Login Items里把它加进去。原理一个虚拟设备凭什么能拆分各应用的音量整个项目分三块BGMDriver、BGMApp、BGMXPCHelper。关键在前两个。BGMDriver是一个用户态的 Core Audio HAL 插件它对外暴露一个名为 Background Music 的虚拟设备同时充当输入和输出。BGMApp启动后把它设为默认输出于是所有应用的音频都先流进这个驱动。后面两个功能都建立在一个事实上在 Core Audio 把各路音频混音之前驱动能单独看到每个客户端也就是每个应用的音频流。独立音量的来源拖动某个 App 的滑块BGMApp把新音量值发给BGMDriver驱动直接改写该应用混音前的音频数据——不是混完再衰减所以各应用互不干扰自动暂停的来源你把某个播放器标记成音乐播放器后驱动会报告现在出声的不是它、是别的 AppBGMApp就发指令让播放器暂停那个 App 停声后自动恢复为什么你还能听到声音BGMApp监听虚拟设备的输入流把音频转发回你真实的输出设备这部分在 BGMPlayThrough.h 一带为什么装完不用重启驱动跑在用户态而非内核扩展装的时候只需重启一下coreaudiod音频进程想继续往下钻DEVELOPING.md 的 Summary 一节把上面这条链路讲得很细。如何安装 Background MusicHomebrew 和 build_and_install.sh 两条路前提是 macOS 10.13走源码编译的话需要 Xcode 10 或更高README 说通常不到一分钟就编完。路线 AHomebrew最省事brew install --cask background-music路线 B从源码构建git clone https://gitcode.com/gh_mirrors/ba/BackgroundMusic cd BackgroundMusic /bin/bash build_and_install.sh脚本会先列出即将安装的东西让你确认按y再要管理员密码然后编译并安装三个组件/Applications/Background Music.app/Library/Audio/Plug-Ins/HAL/Background Music Device.driverBGMXPCHelper.xpc及/Library/LaunchDaemons/com.bearisdriving.BGM.XPCHelper.plist最后一步是重启coreaudiod来加载驱动——声音会断一小截建议先把正在放的东西暂停。装完脚本会直接启动应用。想手动一步步装的仓库里的MANUAL-INSTALL.md有每步的xcodebuild命令。想卸干净的话cd /Applications/Background\ Music.app/Contents/Resources/ bash uninstall.sh三个高频用法自动暂停、录系统音频、切设备自动暂停支持哪些音乐播放器目前列表里有 8 个iTunes、Spotify、VLC、VOX、Decibel、Hermes、Swinsian、GPMDP。在菜单顶部勾上对应开关即可逻辑是别的 App 一出声就暂停对方停声就恢复正好覆盖会议来了音乐自动让位这个场景。用 QuickTime 录制系统音频确保 Background Music 正在运行打开 QuickTime Player选File New Audio Recording点录制按钮旁边的下拉箭头⌄输入设备选Background Music任何正在播放的系统声音都会被录下来做教程、存课程都适用。系统声音和麦克风一起录打开 Audio MIDI Setup在/Applications/Utilities/下点左下角创建聚合设备aggregate device勾选内置麦克风和 Background Music 设备然后在录音软件里选这个聚合设备当输入源。⚠️ 遇到问题先查这几个坑先交代两个已知边界应用音量拉过 50% 可能出现削波clipping正确姿势是系统主音量拉满、靠压低其他应用的相对音量来平衡输出端目前只支持立体声2 声道设备。声音突然没了切换默认输出设备Background Music 崩溃且音频全停时去System Settings Sound把默认输出设备换成别的。如果当前默认就是它就切走再切回来。为什么要允许麦克风访问首次运行会要麦克风权限。它并不真的在听你的麦克风——它是从虚拟设备的输入流里拿系统音频而 macOS 把这条路归类成麦克风。如果你当时点了拒绝去System Settings Security Privacy Privacy Microphone找到 Background Music 勾上。某个应用的滑块找不到或不生效到More Apps里找带(Helper)后缀的同名条目。不少会议、视频通话软件的实际出声方是它的 helper 进程改普通条目没用。另外一个小技巧如果有 App 的短促提示音刚好够长、总触发误暂停可以调大 BGMAutoPauseMusic.mm 里的kPauseDelayNSec常量——代价是音乐和其他声音的重叠时间变长别加太猛。拓展给自己要的音乐播放器加自动暂停支持想让列表外的播放器也被自动暂停先回答一个问题它支持 AppleScript并且提供isPlaying、isPaused、play、pause这几个事件吗不支持的话成本会高很多甚至要改播放器本身。支持的话路径很短实现BGMMusicPlayer协议、子类化BGMMusicPlayerBase通过BGMScriptingBridgeScripting Bridge跟目标 App 通信BGMMusicPlayer.h 里有完整说明BGMSpotify是最值得抄的作业最后把新类注册进BGMMusicPlayers.mm的initWithAudioDevices就行。下一步就这么做装完把系统主音量拉满先给最常抢戏的两三个应用调低相对音量想加自动暂停的播放器不在列表里的先确认它支不支持 AppleScript支持就从BGMMusicPlayer.h开始读起。【免费下载链接】BackgroundMusicBackground Music, a macOS audio utility: automatically pause your music, set individual apps volumes and record system audio.项目地址: https://gitcode.com/gh_mirrors/ba/BackgroundMusic创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/31 10:39:04

RK3588双路视觉实战:共享线程池实现YOLOv5s多路推理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/31 10:39:04

IT66612 HDMI一分二分配器硬件设计实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/31 11:44:08

AI图像翻译技术助力跨境电商图片本地化

1. 跨境卖家的多语言图片痛点解析 做跨境电商的朋友们都知道,产品图片本地化是个让人头疼的问题。去年帮一个做家居用品的客户做德国站优化时,他们团队为了把50张产品图翻译成德语,专门雇了两个兼职大学生,结果不仅花了三天时间&a…

2026/10/31 11:44:08

CPXS数据库实验5:SQL统计聚合与嵌套查询避坑指南

简介:《数据库实验5嵌套查询》是一份面向数据库课程学习者的实验报告文档,围绕数据统计查询与嵌套查询展开,适合正在完成SQL实验、复习SELECT语句及子查询用法的学生对照使用。包内共1个doc文件,约642KB,内容以实验目的…

2026/10/31 11:44:08

AI如何提升学术论文投稿成功率:智能匹配与缺陷检测

1. 论文投稿困境与AI解决方案的崛起 在学术圈摸爬滚打多年,我见过太多研究者面对期刊投稿时的无奈——平均每篇论文要经历2.7次拒稿才能最终发表。最近接触到的"虎贲等考AI"系统,正在用机器学习技术改变这个现状。这个智能平台能自动分析论文与…

2026/10/31 11:44:08

元分析实战指南:从原理到R代码,避开常见坑

前阵子有个同学跑来找我,说他手上的课题卡住了——实验排期排到三个月之后,数据一时半会儿出不来,毕业要求又摆在那儿,问我有没有不动手做实验也能推进的路子。我给他的建议是做一篇元分析。他第一反应是:"那不就…

2026/10/31 11:39:08

JSON在AI数据交互中的核心作用与实践

1. JSON:AI数据交互的通用语言 在AI系统间的数据交换领域,JSON(JavaScript Object Notation)已成为事实上的标准格式。这种轻量级的数据交换格式最初由Douglas Crockford在2001年正式提出,但它的设计理念可以追溯到更早…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/30 20:55:09

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑