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

Rob*_*ore 4 ubuntu audio pulseaudio elementary-os output

我使用的是基于 Ubuntu 16.04.1 的 elementOS 0.4.1 Loki。

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

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

在此处输入图片说明

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

在此处输入图片说明

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

我已经尝试使用 sudo modprobe snd-dummy 做一些事情,但它不允许我将虚拟对象路由到耳机输出。

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

dir*_*rkt 9

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

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

pacmd load-module module-null-sink sink_name=game_sink sink_properties=device.description=Game-Sink
Run Code Online (Sandbox Code Playgroud)

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

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

pacmd load-module module-loopback source="game_sink.monitor" sink="your-headphone-sink"
Run Code Online (Sandbox Code Playgroud)

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

pacmd list-sinks | grep name:
Run Code Online (Sandbox Code Playgroud)

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