如何创建虚拟音频输出并在基于 Ubuntu 的发行版中路由它

如何创建虚拟音频输出并在基于 Ubuntu 的发行版中路由它

我使用的是elementaryOS 0.4.1 Loki,它基于Ubuntu 16.04.1。

我想用OBS,一个屏幕录像机,用于记录游戏过程以及来自同一视频游戏的声音。我还想在玩游戏时在后台使用语音聊天应用程序,但我不希望 OBS 记录任何内容。

OBS无法选择性地忽略某些节目的音频,但它可以录制来自指定输入设备的声音。

在此输入图像描述

我想创建一个虚拟输入并使用 pavucontrol 的输出列表将我的语音聊天应用程序路由到该输入,这样 OBS 就不会拾取它。同时,我希望此输入播放到耳机/线路输出端口。

在此输入图像描述

我知道这可以在 Windows 中使用 Virtual Audio Cables 等软件来完成,但我不知道如何在 Linux 中做同样的事情。

我已经尝试使用 sudo modprobe snd-dummy 执行某些操作,但它不允许我将虚拟设备路由到耳机输出。

我应该如何处理这个问题?

答案1

让我再说一遍:单个程序或一组程序A(游戏)应同时向OBS和耳机输出声音,而另一个程序或一组程序B(语音聊天)应仅向耳机输出声音,所有这些都在Pulseaudio上等级。正确的?

不要使用snd-dummy,它适用于 ALSA 级别。相反,在 Pulseaudio 级别上创建一个“空接收器”:

pacmd load-module module-null-sink sink_name=game_sink sink_properties=device.description=Game-Sink

使用pavucontrol或者(如果可以的话)elementary OS 的声音配置将所有 A 组声音输出切换到该接收器。 Pulseaudio 中的每个接收器都配有相应的“监视器”源(您可以在包含的 OBS 菜单中看到这些源),因此请设置 OBS 以从“游戏接收器监视器”进行录制。

这仅处理 A 组的录音,但不会将其输出到耳机。为此,您需要从上述监听源到耳机接收器的环回:

pacmd load-module module-loopback source="game_sink.monitor" sink="your-headphone-sink"

您可以找到所有接收器的名称,包括耳机接收器,

pacmd list-sinks | grep name:

使用名称作为参数时省略尖括号。

相关内容