Arch-Linux
打開多個應用程序時 ALSA 不起作用
我正在編寫一些與聲音相關的 python 程序,所以我使用了使用 PortAudio 庫的 SoundDevice python 模組。我在帶有深度桌面的arch linux上。
如果我只是打開電腦並列印我得到的可用設備:
0 HDA Intel PCH: ALC887-VD Analog (hw:0,0), ALSA (2 in, 2 out) 1 HDA Intel PCH: ALC887-VD Digital (hw:0,1), ALSA (0 in, 2 out) 2 HDA Intel PCH: ALC887-VD Alt Analog (hw:0,2), ALSA (2 in, 0 out) 3 HDA ATI HDMI: 0 (hw:1,3), ALSA (0 in, 8 out) 4 sysdefault, ALSA (128 in, 128 out) 5 front, ALSA (0 in, 2 out) 6 surround40, ALSA (0 in, 2 out) 7 surround51, ALSA (0 in, 2 out) 8 surround71, ALSA (0 in, 2 out) 9 iec958, ALSA (0 in, 2 out) 10 spdif, ALSA (0 in, 2 out) 11 pulse, ALSA (32 in, 32 out) 12 dmixed, ALSA (0 in, 2 out) 13 dsnooped, ALSA (2 in, 0 out) 14 duplex, ALSA (2 in, 2 out) 15 dmix, ALSA (0 in, 2 out) * 16 default, ALSA (128 in, 128 out)
它說我正在使用 ALSA(128 進,128 出)。現在我將打開一個應用程序——比如說 Chromium——並播放一些音樂,然後繼續瀏覽網際網路。如果我現在列印可用的設備,我會得到:
0 HDA Intel PCH: ALC887-VD Analog (hw:0,0), ALSA (2 in, 0 out) < 1 HDA Intel PCH: ALC887-VD Digital (hw:0,1), ALSA (0 in, 2 out) 2 HDA Intel PCH: ALC887-VD Alt Analog (hw:0,2), ALSA (2 in, 0 out) 3 HDA ATI HDMI: 0 (hw:1,3), ALSA (0 in, 8 out) 4 sysdefault, ALSA (128 in, 0 out) 5 iec958, ALSA (0 in, 2 out) 6 spdif, ALSA (0 in, 2 out) 7 pulse, ALSA (32 in, 32 out) 8 dsnooped, ALSA (2 in, 0 out) 9 duplex, ALSA (2 in, 0 out) > 10 default, ALSA (128 in, 0 out)
它告訴我我使用 Intel 作為我的輸出和 ALSA (128 in, 0) 作為我的輸入。為什麼不像以前那樣有ALSA輸入輸出呢?
這發生在所有使用聲音的應用程序中,包括 Audacity。
我目前正在使用 pluse 作為替代方案,但據說 ALSA 更好,所以即使同時打開多個應用程序,我也想使用它。
編輯
這是編輯配置後的列表:
> 0 HDA Intel PCH: ALC887-VD Analog (hw:0,0), ALSA (2 in, 2 out) 1 HDA Intel PCH: ALC887-VD Digital (hw:0,1), ALSA (0 in, 2 out) 2 HDA Intel PCH: ALC887-VD Alt Analog (hw:0,2), ALSA (2 in, 0 out) 3 HDA ATI HDMI: 0 (hw:1,3), ALSA (0 in, 8 out) 4 sysdefault, ALSA (128 in, 128 out) 5 front, ALSA (0 in, 2 out) 6 surround40, ALSA (0 in, 2 out) 7 surround51, ALSA (0 in, 2 out) 8 surround71, ALSA (0 in, 2 out) 9 iec958, ALSA (0 in, 2 out) 10 spdif, ALSA (0 in, 2 out) 11 pulse, ALSA (32 in, 32 out) 12 dmix, ALSA (0 in, 2 out) < 13 default, ALSA (0 in, 128 out)
您需要輸出到
dmix
ALSA 設備而不是預設設備;允許將多個流混合併輸出到音效卡。在不支持硬體混音的聲音設備上自動設置;如您所見,它已在您的系統上設置。您可以在ALSA wiki上找到更多資訊。
您可以使用以下配置
dmix
將其配置為預設值pcm.!default { type plug slave.pcm "dmix" }
您仍然需要配置所有應用程序以使用 ALSA。還要注意,這
dmix
只是一個輸出設備;如果要管理多個輸入,則需要使用dsnoop
. ALSA wiki 有詳細的配置範例,您可以根據自己的特定設置(特別是預設的底層硬體設備)進行調整。