我正在看这个例子如何向 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
我的问题是如何添加二(或更多)设备以及如何添加虚拟设备?
编辑:
我尝试了组合两个水槽的说明:
$pacmd load-module module-combine-sink sink_name=combined2 sink_properties=device.description="Combined with a null sink" slaves=combined,MyTestSink
但我得到了错误Module load failed
。语法有问题或者还有什么问题?我combined and MyTestSink
在 的输出中显示了名称$pacmd list-sinks
。
答案1
该示例看起来不完整。您可以使用该slaves
选项将多个接收器添加到组合接收器中:
load-module module-combine-sink sink_name=combination-sink sink_properties=device.description=myCombinationSink slaves=sink1,sink2[,...] channels=2
其中sink1
等是您想要组合的水槽。
另外,通常您不需要加载 ALSA 硬件的模块,它们应该自动加载。
用于list-sinks
获取可用接收器的列表(或者pavucontrol
如果您喜欢 GUI,则使用)。
编辑
hw:0,0
是一个阿尔萨斯设备的名称。这些module-alsa-*
模块使 ALSA 设备可用脉冲音频源和汇。当您使用引用现有源/接收器的其他 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
所以,在我的系统上:
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
重复一遍:不,你不能hw:1
使用Pulseaudio 之类的名称。这些都是ALSA 名称为了ALSA设备通过访问ALSA 库。您可以在 Pulseaudio 中的一处使用它们,即当加载ALSA 模块(module-alsa-devices
或)时,使 ALSA 设备可用于 Pulseaudio。module-aslsa-card
在其他地方,您可以使用从上面的列表命令获取的 Pulseaudio 接收器名称(或者通过加载提供类似接收器的模块module-null-sink
并给它们命名)。
编辑
我不确定你所说的“绝对名称”是什么意思。该名称是提供接收器的模块选择设置的名称。它通常可以在加载模块时指定为参数,也可以在未指定时由模块选择,就像在 Pulseaudio 时默认加载模块时为 ALSA 接收器所做的那样(使用硬件位置)开始。但这一切并不重要:只需看看您拥有什么水槽,然后使用正确的水槽即可。如果您加载其他模块,请根据需要为接收器命名。