PulseAudio - 同时输出 - 添加两个设备

use*_*525 4 linux pulseaudio

我正在观看这个有关如何向 PulseAudio 添加同步模式支持的示例。该示例展示了如何仅添加一个设备(即硬件设备):

### Load analog device
load-module module-alsa-sink device=hw:0,0
load-module module-combine-sink sink_name=combined
set-default-sink combined
Run Code Online (Sandbox Code Playgroud)

我的问题是如何添加两个(或更多)设备以及如何添加虚拟设备?

编辑:


我尝试了组合两个水槽的说明:

$pacmd load-module module-combine-sink sink_name=combined2 sink_properties=device.description="Combined with a null sink" slaves=combined,MyTestSink
Run Code Online (Sandbox Code Playgroud)

但我得到了错误Module load failed。语法有问题或者还有什么问题?我combined and MyTestSink在 的输出中显示了名称$pacmd list-sinks

dir*_*rkt 5

该示例看起来不完整。您可以使用该slaves选项将多个接收器添加到组合接收器中:

load-module module-combine-sink sink_name=combination-sink sink_properties=device.description=myCombinationSink slaves=sink1,sink2[,...] channels=2
Run Code Online (Sandbox Code Playgroud)

其中sink1等是您想要组合的水槽。

另外,通常您不需要加载 ALSA 硬件的模块,它们应该自动加载。

用于list-sinks获取可用接收器的列表(或者pavucontrol如果您喜欢 GUI,则使用)。

编辑

hw:0,0是设备的ALSA名称。这些module-alsa-*模块使 ALSA 设备可用作Pulseaudio源和接收器。当您使用引用现有源/接收器的其他 Pulseaudio 模块时,您当然可以使用 Pulseaudio 名称(参见pacmd list-sinks等,不带尖括号)。ALSA 名称与 Pulseaudio 无关。

我不确定你所说的“虚拟设备”是什么意思。Pulseaudio 有各种不同类型的源和接收器。其中一些对应于通过 ALSA 提供的物理硬件,其中一些对应于网络上的流音频,其中一些对应于物理蓝牙设备(不通过 ALSA),而另一些则两者都不是。Pulseaudio 并不关心它们是什么,它们只是源和接收器,并且它们都不被称为“虚拟”。

编辑

我的系统上的接收器名称:

$ pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
name: <alsa_output.usb-Roland_UA-25EX-00.analog-stereo>

$ pactl list short sinks
0       alsa_output.pci-0000_00_1b.0.analog-stereo      module-alsa-card.c     s16le 2ch 44100Hz        IDLE
1       alsa_output.usb-Roland_UA-25EX-00.analog-stereo module-alsa-card.c     s16le 2ch 44100Hz        RUNNING
Run Code Online (Sandbox Code Playgroud)

所以,在我的系统上:

pacmd load-module module-combine-sink sink_name=combined sink_properties=device.description=CombinedSink slaves=alsa_output.pci-0000_00_1b.0.analog-stereo,alsa_output.usb-Roland_UA-25EX-00.analog-stereo
Run Code Online (Sandbox Code Playgroud)

重复一遍:不,您不能使用 Pulseaudio 之类的名称hw:1。这些是通过ALSA 库访问的ALSA 设备ALSA 名称。您可以在 Pulseaudio 中的一处使用它们,即当加载 ALSA 模块(或)时,使 ALSA 设备可用于 Pulseaudio。在其他地方,您可以使用从上面的列表命令获取的 Pulseaudio 接收器名称(或者通过加载提供类似接收器的模块并给它们命名)。module-alsa-devicesmodule-aslsa-cardmodule-null-sink

编辑

我不确定你所说的“绝对名称”是什么意思。该名称是提供接收器的模块选择设置的名称。它通常可以在加载模块时指定为参数,或者可以在未指定时由模块选择,就像在 Pulseaudio 时默认加载模块时为 ALSA 接收器所做的那样(使用硬件位置)开始。但这一切并不重要:只需看看您拥有什么水槽,然后使用正确的水槽即可。如果您加载其他模块,请根据需要为接收器命名。