答案1
首先,备份你的 PulseAudio 配置$sudo cp /etc/pulse/default.pa /etc/pulse/default.pa.bak
完成后,我们将检查硬件播放设备列表,并记下我们正在寻找的设备$ aplay -l
。您的输出应如下所示:
记下卡 ID和您想要一起接收的输出的设备 ID。现在我们将尝试使用alsa-sink 模块(您确实应该点击此链接)。打开任何文本编辑器并复制/粘贴:
load-module module-alsa-sink device="hw:[CARD_ID],[DEVICE_ID]" sink_name=vsink_[CARD_ID][DEVICE_ID] sink_properties="device.description='HDMI [DEVICE_ID] VSINK' device.icon_name='audio-card'"
将[CARD_ID]
和更改[DEVICE_ID]
为您在上一步中记下的。您应该拥有与要合并的输出一样多的此代码行,以及它们各自的CARD_ID
和DEVICE_ID
。
完成此步骤后,我们将使用联合接收器模块(你也应该遵循这个)这样我们就可以把输出“粘合”在一起。将其复制并粘贴到你的编辑器中:
load-module module-combine-sink sink_name=combined_vsink slaves=[first vskink name],[second vsink name],[n vsink name] sink_properties="device.description='[a name for your combined vsink' device.icon_name='audio-card-symbolic'"
最后你应该得到类似这样的结果:
完成配置后,我们必须将其加载到 PulseAudio 配置中(我们首先对其进行了备份)。打开它进行编辑gedit admin:///etc/pulse/default.pa
,然后搜索此部分:
### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
#load-module module-alsa-sink
...
...
如果您以前从未编辑过此文件,则部分中可能还有几行注释。 在该部分的最后一行之后,粘贴您的行。 您将在下面看到我的模拟代码,粘贴后您的文件应如下所示:
### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
load-module module-alsa-sink device="hw:0,0" sink_name=vsink_00 sink_properties="device.description='HDMI0:0 VSINK' device.icon_name='audio-card'"
load-module module-alsa-sink device="hw:0,1" sink_name=vsink_01 sink_properties="device.description='HDMI0:1 VSINK' device.icon_name='audio-card'"
load-module module-combine-sink sink_name=combined_vsink0 slaves=vsink_00,vsink_01 sink_properties="device.description='HDMI0:0 + HDMI0:1' device.icon_name='audio-card-symbolic'"
现在我们已经完成了,为了使它能够持续工作,我们必须停用 PulseAudioudev-detect 模块(我保证这是最后一个)这样它就不会覆盖我们在尝试配置系统时手动所做的更改。你会发现一个类似这样的部分,确保注释掉它的所有行:
### Automatically load driver modules depending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect
#.else
### Use the static hardware detection module (for systems that lack udev support)
#load-module module-detect
#.endif
现在,为了完成我们的编辑,只需在文件的最后一行将新的接收器设置为默认接收器:
set-default-sink combined_vsink0
保存文件,然后让我们重新启动 PulseAudio 并检查一切是否正常工作pulseaudio --kill && pulseaudio --start
,然后确保检查您的级别是否设置正确,alsamixer
因为它有时会默认加载静音的新输出。完成后,检查您的系统设置以选择新创建的输出。
如果您遇到任何问题,您可以随时使用我确信您在第一步创建的备份文件恢复您的 PulseAudio 配置。
答案2
简化辉煌接受的答案,复制粘贴以下函数:
# $@: List of sinks to combine, as `CARD_ID:DEVICE_ID`
__os_audio_sinks_combine() {
unset sink_names
for i; do
curr_sink_id="${i%%:*}"
curr_device_id="${i#*:}"
curr_device_name="hw:${curr_sink_id},${curr_device_id}"
curr_sink_name="vsink_${curr_sink_id}${curr_device_id}"
test -n "${sink_names}" && sink_names="${sink_names},"
sink_names="${sink_names}${curr_sink_name}"
curr_device_desc="HDMI ${curr_device_id} VSINK"
echo "load-module module-alsa-sink device=\"${curr_device_name}\" sink_name=${curr_sink_name} sink_properties=\"device.description='${curr_device_id}' device.icon_name='audio-card'\""
done
echo "load-module module-combine-sink sink_name=combined_vsink slaves=${sink_names} sink_properties=\"device.description='comb_vsink' device.icon_name='audio-card-symbolic'\""
}
然后,如上所述,(1)备份配置,(2)找到要组合的各个接收器,(3)生成配置(使用 自动复制到剪贴板xclip
)和(4)如上所述进行编辑:
sudo cp /etc/pulse/default.pa /etc/pulse/default.pa.bak
aplay -l
__os_audio_sinks_combine 0:9 0:10 | xclip -sel clipboard
sudo editor /etc/pulse/default.pa
答案3
这可以通过使用脉冲音频 CLI 创建合并其他两个接收器(您的声卡)的新接收器来实现。
首先获取水槽的名称:
pacmd list-sinks
然后创建一个新的接收器
pacmd load-module module-combine-sink sink_name=combined slaves=sink1-name,sink2-name
其中 sink1-name 和 sink2-name 是第一个命令输出中的接收器名称
你现在应该有一个新的接收器,你可以选择将声音输出到两个设备