想象一下标准台式计算机。一对扬声器通过常见的 3.5 毫米立体声插孔 (AUX) 连接到此计算机。到目前为止一切正常。
现在,我们在大楼的另一个房间里有一个支持接收UPnP
流的扬声器。
如何配置基于 Debian 的系统以继续在经典立体声插孔上发出声音但另外还可以通过流式传输 UPnP
,这样我就可以同时给两个扬声器供电?
答案1
我将发布一个我一直在使用的黑客解决方法,直到专家告诉我们如何正确执行此操作:)公平警告,我所拥有的大部分内容都来自勤奋的货物崇拜,因此很有可能我没有遵循最佳方法实践,并且不要将这篇文章作为正确术语的指南。我的用例是,我必须为 MS Teams 找到不允许共享系统音频的解决方案,我将描述我当前的设置。
我假设您有pulseaudio,并且您可以在您的设置中找到支持 UPnP 的扬声器作为输出设备,而您唯一的问题是将音频发送到两个不同的地方。如果不是这种情况,那么下面的答案可能对您没有帮助。
您可以使用以下命令创建虚拟设备
pactl load-module module-null-sink sink_name=myduplexsink
这将创建一个空接收器,其作用就像一个可以将音频导入和导出的盒子。接收器名称可用于通过设置一些内容以编程方式保留您的设置,~/.pulse/default.pa
但我的设置不够可靠,我还没有抽出时间来使这一切自动化。
您还需要两个(我认为)环回,它们的作用就像连接设备的虚拟电缆:
pactl load-module module-loopback
pactl load-module module-loopback
环回无法命名;据我了解,如果您要自动化此操作,您将在创建时指定它们的源和接收器。
现在对于交互式解决方案,(安装并)打开pavucontrol
这是一个经过增强的pulseaudio配置面板。它有五个选项卡:
- 播放:在这里您应该看到任何程序正在创建您想要共享到两个地方的声音。在我的用例中,这是
mplayer
,我希望将其音频定向到空接收器(连同我的麦克风的输出)和我的耳机。这也是您指定创建的每个环回的接收器的选项卡。 - 录音:这是需要音频输入的程序出现的地方。在我的用例中,这是 MS Teams,但我认为在您的用例中没有。但此选项卡还配置每个环回的源。
- 输出设备:您应该在此处看到扬声器(我希望都是扬声器)和名为 Null Output 的空接收器。
- 输入设备:您应该在这里看到您的麦克风(如果有)以及每个“监视器”设备。对于每个输出设备,您都有一个可以用作输入的“监视器”。如果您的扬声器正在播放音乐,那么扬声器的监听器会将音乐作为音频信号传送。
- 配置:现在应该忽略它:P
所以我认为你应该做什么:
- 启动提供音频的程序(例如音乐软件)。在“播放”选项卡中
pavucontrol
找到与该节目对应的行,并将其发送到“空输出”。现在您有一个虚拟设备(空接收器),其中包含您想要分割的音频。 - 仍在“播放”选项卡中设置一个环回以使用扬声器(如果我的笔记本电脑有任何指示,称为“内置模拟立体声”),并设置另一个环回以使用 UPnP 扬声器作为接收器。
- 在“录制”选项卡中,将两个环回的源设置为“空输出监视器”。
现在,您已将输入音频输入空接收器,并将其同时朝向本地扬声器和 UPnP 扬声器。希望这正是您所需要的。
我已经根据以下内容将大部分内容一起破解了这个帖子。它简要提到,一旦您手动设置了工作配置,您就可以使用pacmd info
并挖掘您想要使用的音频设备的名称。这将允许您在pulseaudio启动时通过添加一些命令来自动重新创建配置~/.pulse/default.pa
。我还没能做到这一点,但主要是因为我有一套奇怪的耳机,根据具体情况,它可以在多个设备名称下被识别。这对您来说可能不是问题。因此,在这种情况下,您的新行将~/.pulse/default.pa
如下所示:
load-module module-null-sink sink_name=myduplexsink
load-module module-loopback source=myduplexsink.monitor sink=<device ID of your local speakers>
load-module module-loopback source=myduplexsink.monitor sink=<device ID of your UPnP speakers>
pacmd info
设备 ID 可能列在“[n] 个可用接收器”下的输出中。在您的情况下,n
可能至少有 3 个:两个扬声器 和myduplexsink
。您还可以在输出顶部看到“默认接收器名称”,它可能与您的本地扬声器相对应。您可能仍然需要手动将提供音频的软件定向到“空输出” pavucontrol
。
如果您的 UPnP 扬声器通过“录制”选项卡中显示的某个程序馈送,pavucontrol
则更容易:您可以直接告诉它从“空输出监视器”中提取音频,并且只需要一个环回即可馈送向您的本地扬声器发出相同的信号。