Linux

PulseAudio - 同時輸出 - 添加兩個設備

  • March 31, 2022

我正在觀看如何向 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

該範例看起來不完整。您可以使用該slaves選項將多個接收器添加到組合接收器:

load-module module-combine-sink sink_name=combination-sink sink_properties=device.description=myCombinationSink slaves=sink1,sink2[,...] channels=2

where sink1etc. 是您要組合的接收器。

此外,通常您不需要為 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

所以,在我的系統上:

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:1Pulseaudio 之類的名稱。這些是通過ALSA 庫訪問的ALSA 設備的****ALSA 名稱。您可以在 Pulseaudio 中的一個地方使用它們,即當載入 ALSA 模組(或)時,使 ALSA 設備可用於 Pulseaudio。在其他任何地方,您都使用從上面的列表命令獲得的 Pulseaudio 接收器名稱(或通過載入提供接收器的模組並為其命名)。module-alsa-devices``module-aslsa-card``module-null-sink

編輯

我不確定您所說的“絕對名稱”是什麼意思。該名稱是提供接收器的模組選擇設置的任何名稱。它通常可以在載入模組時指定為參數,也可以在未指定時由模組選擇,就像在 Pulseaudio 時預設載入模組時為 ALSA 接收器(使用硬體位置)所做的那樣開始。但這一切都無關緊要:只要看看你有什麼水槽,然後使用正確的水槽。如果您載入其他模組,請命名接收器,如果您願意的話。

引用自:https://unix.stackexchange.com/questions/443013