mac不支持原生逐应用音频路由,需通过“音频midi设置”创建多输出设备(如独立耳机与扬声器端点),再配合终端命令defaults write com.apple.sound.uiaudio绑定微信提示音至扬声器,并在游戏内或soundsource中指定耳机输出,实现音效隔离。

Mac上运行游戏时,你希望耳机只听游戏音效,但微信新消息“叮”一声仍从桌面扬声器响起——这不是音量混叠问题,而是系统未对不同应用做音频路由隔离。
用音频 MIDI 设置创建独立输出设备组
这一步是基础前提:必须先为耳机和扬声器分别建立两个逻辑上互不干扰的输出端点,后续才能按需分配应用。
打开“聚焦”(Command + 空格),输入“音频 MIDI 设置”,回车启动。
在左侧边栏底部点击“+” → 选择“创建多输出设备”。
右侧勾选你的蓝牙耳机(如“AirPods Pro”)→ 在“主设备”下拉菜单中选它 → 确保采样率统一为44.1 kHz → 关闭窗口。
再次点击“+” → 创建第二个多输出设备 → 这次只勾选“内建输出”(即扬声器)→ 命名为“系统提示专用” → 同样设采样率为44.1 kHz。
【必须关闭“平衡”滑块自动同步】:双击任一新建设备,在弹出窗口中取消勾选“将此设备用于声音输出”下方的“使用此设备播放警告声音和声音音效”——否则所有系统音效会强制走该设备,破坏分离目标。
给微信设置专属系统音效输出路径
系统级提示音(包括微信通知)只能绑定到“声音效果”标签页指定的单一设备,无法按App区分。因此要绕过UI限制,用终端命令锁定微信提示音出口。
第一步:确认当前扬声器设备标识符。打开终端,执行:
defaults read com.apple.sound.uiaudio
第二步:若返回值为空或不是“内建输出”,需手动写入。先查真实名称:
system_profiler SPAudioDataType | grep "Audio Device\|Name:"
第三步:找到含“Built-in Output”或“Internal Speakers”的那一行,复制完整设备名(含引号与冒号,例如"Built-in Output:0x00000000")。
第四步:执行绑定命令:
defaults write com.apple.sound.uiaudio "device" -string "Built-in Output:0x00000000"
第五步:立即刷新音频服务:
killall coreaudiod
让游戏走耳机而不影响其他应用
方法一:在游戏内设置音频输出设备
多数支持音频设备选择的游戏(如Steam平台游戏、Unity/Unreal引擎作品)会在“设置→音频→输出设备”中列出所有可用端点。从中选择你刚创建的“AirPods Pro多输出设备”即可。这一步仅影响该游戏进程,不影响系统或其他App。
方法二:用第三方工具强制重定向(适用于无设备选项的老游戏)
安装SoundSource(Rogue Amoeba出品),启动后点击菜单栏图标 → 在“应用程序”列表中找到你的游戏进程 → 点击右侧齿轮图标 → 选择“AirPods Pro多输出设备”作为输出目标。该设置重启游戏后仍保留。
方法三:终端临时切换(适合单次调试)
保持游戏正在运行,打开终端,输入:
afplay -d "AirPods Pro多输出设备" /System/Library/Sounds/Ping.aiff
这条命令会强制Ping音效从耳机发出,验证路由是否生效;实际游戏中无需重复执行,只需完成方法一或二即可。











