惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
C
Check Point Blog
D
Docker
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
量子位
有赞技术团队
有赞技术团队
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
M
MIT News - Artificial intelligence
B
Blog
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
月光博客
月光博客

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
在 Mac 上通过 Discord 共享屏幕的设置探索 - 少数派
2021-04-14 · via 少数派

背景

很早之前,我曾经写过一篇在 Mac 上用 Skype 来和朋友一起看电影的方法。主要的问题是 Mac 默认的音频输入和输出只有一个,这带来了一些二选一的问题。

  1. 只有一个输入源:麦克风和电脑的内放声音只能选择一个输入到 Skype,即朋友要么听到你的声音,要么听你电脑的声音。
  2. 只有一个输出源:如果把声音输入到 Skype 让朋友能听到声音,那么自己便听不到。
默认环境
Mac 的音频输入和输出只能二选一

现在回头看,当时的文章写的很凌乱,但还是在很长一段时间都贡献了我博客最大的流量(现在每天访问最多的是 iOS 后台播放 Youtube的文章……)。最近在 Discord 上有同样的二选一的问题,所以这里重新把解决方案更新并整理一下。文中的方法也可以灵活地用在其他录音环境中。

在 Mac 平台的 Discord 上,音频的输入默认只能选择麦克风,这导致通过共享屏幕来直播游戏或其他活动时,频道中的其他人无法听到电脑的声音。本次的的解决方案依然是使用免费的 soundflower (下载地址)。不使用更强大的 Loopback 主要是出于以下原因:

  • Soundflower 简单但已经足够了。
  • Loopback 的免费版本会降低音质。
  • 我没用过 Loopback。

注意 soundflower 目前不支持 M1 版本的 Mac。M1 版本 Mac 用户可以尝试使用 Balckhole(https://github.com/ExistentialAudio/BlackHole ),效果应该是一样的。

原理说明

我先来解释一下 soundflower 能够做什么。
Soundflower 可以生成两种虚拟的设备,一叫做「多输出设备」(Multiple output devices),一个叫做「聚集设备」(Aggregate devices)。
也许你从名字就可以大概猜到它们的用途。我们可以通过「多输出设备」来把一个声音输出给多个设备(所以你的耳机和 Discord 都可以接收到声音),以此来解决本文开头的第二个问题。而「聚集设备」则可以把多个输入源聚集起来,集中输入到一个地方去,这样就可以同时把麦克风和电脑的声音都塞给 Discord 或其他录音软件。

image.png
多输出设备和聚集设备的用途

通用配置

好了,那我们来开始设置吧。在下载并安装 Soundflwoer 之后我们通过 Mac 的「音频midi设置」来进行设置。你可以在启动台的「其他」中找到它,也可以直接通过 Spotlight 来打开。

我们首先来添加一个多输出设备。
点击左下角的「+」,选择「创建多输出设备」。
 

image.png


选中刚刚创建的多输出设备之后,在右边的界面可以选择要把 Mac 的声音输出给谁。这里可以选自己喜欢的设备,比如你的耳机或者音箱,但一定要选中 soundflower(2ch)。

image.png

类似地,我们通过左下角的「+」来创建聚集设备,并在右边选中你的麦克风和soundflower(2ch)。 

image.png

测试发现通过聚合设备来同时输入内放声音和麦克风声音的做法在 Discord 中并不生效(但在其他录音软中可用)。针对 Discord 的设置方法可以参考最后的补充部分。

原理复习

Soundflower 的设置就完成了。我再解释一下这个设置到底发生了什么。
在输出端,我们通过「多输出设备」,把电脑播放的声音分成了两份,一份交给了耳机(或其他你选择的输出设备),另一份交给了 soundflower(2ch)。而在输入端,我们同时把麦克风的声音和 soundflower(2ch) 拿到的声音信号打包作为一个输入源。

接下来就可以根据需要灵活地使用了。最直接的办法是通过右上角的喇叭图标进入「声音偏好设置」,把输入设置为「聚集设备」,把输出设置为「多输出设备」,就可以达成我们刚才所描述的图景。而 Discord 默认的音频输入输出与系统一致,应该已经生效了。如果有需要也可以单独在 Discord 中设置。

设置完成后的效果是,通过 Discord 共享屏幕,其他人可以听到你的声音和你电脑正在播放的声音;你自己也可以正常听到电脑播放的声音。

需要说明的是,soundflower 不能为每个程序单独控制音频流向(loopback 可以)。
另外在使用虚拟的设备之后,不能直接调整系统的音量,可以通过正在使用的播放软件单独控制音量,或者先设置好合适的音量再切换到虚拟设备。

遗憾的是,实际测试之后我们会发现 Discord 并不能按照预想的方式工作。在输入为聚合设备的时候,Discord 仍然只能获取其中一个输入源的声音信号(我的情况是只能使用 soundflower(2ch) 的信号,而麦克风的声音依然会被忽略)。这似乎是 Discord 的一个限制,因此聚合设备只适用于其他录音软件。

那 Discord 要怎么办?目前有两个选择,第一是使用 Loopback,我就不介绍了。如果你不想付费购买 Loopback,可以考虑一下我下面的做法。

其实原理也很简单,既然 Discord 只能使用一个输入源,那我们只要把电脑内部的声音和麦克风的声音都输入给 soundflower(2ch),然后把 soundflower(2ch) 作为 Discord 的声音输入源就行了。

把内放声音输入给 soundflower(2ch) 可以通过多输出设备做到,而曾经有一个免费软件 LineIn 软件可以将麦克风的声音输入至 soundflower(2ch),但这个软件很久没有更新,在当前的 macOS 上已经无法使用,我们只能换个思路。如果电脑可以即时地把麦克风的声音播放出来,麦克风录入的声音就可以作为电脑内放的声音通过多输出设备输入到 soundflower(2ch) 中,进而被 Disocrd 接收了。而这……不就是录音环境中的「监听」么?一个正常的录音软件应该都支持才对,听起来很可行,事实上我之前误以为 Discord 可以用聚合设备就是因为在测试的时候无意打开了一个录音软件并且回放了麦克风的声音。其实macOS 自带的录制软件 QuickTime 就支持监听,但它有两点不足:

  • QuickTime 的监听有一秒左右的延迟,这在实际使用中的影响非常明显
  • QuickTime 只有声音输入源的设置,而没有输出的设置。这将导致你必须一直听自己的声音。

因此我们需要一个 Plan B。它需要支持麦克风声音的监听,监听的延迟要低,最好还是免费的。巧了,GarageBand 刚好就是这样一款免费(甚至是自带)的相对专业的录音软件。下面我完整来说一下一些关键的设置。

首先我们还是需要用到刚刚创建的多输出设备来将电脑的声音可以同时输入到耳机和 soundflower(2ch) 中去,因此我们在声音偏好设置中将系统的声音输出设置为「多输出设备」。

然后我们打开 GarageBand,新建一个空白项目,在轨道类型选择第二项「使用麦克风...音频文件」,并在输入中选择「输入1+2」。

image.png
创建空白项目

在 库乐队->偏好设置->音频/MIDI 中,将输入设置为我们的麦克风(下图中的 iPad 就是我在用的麦克风),将输出设置为我们的「多输出设备」或者 soundflower(2ch)。

如果选择「多输出设备」,由于GarageBand 会把麦克风的声音同时输出到耳机和 soundflower(2ch) 中,所以会有监听效果,即我们可以通过耳机听到自己的声音(放心,别人不会听到回声);如果只选择 soundflower(2ch),则没有监听效果。

image.png
GarageBand 的音频设置

在 GarageBand 的主界面中,左边地监听按钮可以控制监听地开关,同时也可以方便地控制麦克风音量。在使用的过程中不需要开启录音,只要打开这个界面即可。你也可以将这个项目保存,在需要地时候直接打开即可。

image.png
通过 GarageBand 控制麦克风的音量

最后只要在Discord 的音频设置中将输入设置为 soundflower(2ch) 就大功告成了,Have Fun!