Debian

我可以只使用 ALSA 來選擇音效卡嗎?

  • February 28, 2022

如果我從alsamixerNvidia 音效卡中選擇它根本不起作用,並且我無法提高六個項目( 、 等)的S/PDIF音量S/PDIF 1在此處輸入圖像描述

一些資訊:

cat /proc/asound/cards
0 [PCH            ]: HDA-Intel - HDA Intel PCH
                     HDA Intel PCH at 0xf3310000 irq 31
1 [NVidia         ]: HDA-Intel - HDA NVidia
                     HDA NVidia at 0xf3080000 irq 17
Kernel: 5.10.0-11-amd64 
Distro: Debian GNU/Linux 11 (bullseye) 

要使用監聽音箱,我可以只使用 ALSA 嗎?

如果我開始pulseaudio,我可以使用它們。

# pactl list short sources
1   alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
2   alsa_input.pci-0000_00_1b.0.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
5   alsa_output.pci-0000_01_00.1.hdmi-stereo-extra2.monitor module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
# pactl list short sinks
1   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
4   alsa_output.pci-0000_01_00.1.hdmi-stereo-extra2 module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED

pasystray可以簡單地選擇水槽GP106 High Definition Audio Controller ...,但有時它不起作用。

PA執行時如果我選擇的HDA nvidia音效卡alsamixer和以前一樣。

這是/etc/asound.conf我做的:

defaults.pcm.card 1
defaults.ctl.card 1

那是為了選擇預設卡。

我可以更改正在使用的那個,alsavolume-icon但是在它顯示靜音圖示之後,我無法提高使用時的音量alsamixer

我可以讓它工作嗎?然後asound.conf我將其設為預設卡。

在這裡,ALSA 只提供實際硬體可以做的事情。對於 NVidia HDA 聲音晶片,它只為每個 S/PDIF 數字通道(通常與 HDMI 或 DisplayPort 數字顯示連接相關聯)提供開/關開關。

您應該能夠alsamixer通過按鍵來打開/關閉每個通道M,並使用左/右箭頭鍵在通道之間移動。僅當聲音晶片具有實際的混音器功能時,才會顯示音量滑塊(可使用向上/向下箭頭鍵調節)。僅以數字格式傳遞聲音的顯示卡和其他設備可能根本沒有模擬式混音器功能,因為它們通常只是用於標準格式數字音頻數據的“直管”。

如果您的意思是在使用 PulseAudio 時甚至看不到螢幕截圖中的顯示,請嘗試顯式設置音效卡編號,即alsamixer -c 0alsamixer -c 1

使用 Debian 目前的預設配置,如果您使用 PulseAudio,alsamixer不帶選項執行只會顯示 PulseAudio 的主音量控制,而不會顯示其他任何內容。但是如果您指定音效卡號,您仍然可以訪問 ALSA 驅動程序提供的設置。

PulseAudio 引入了軟體混音功能,允許您通過使用 CPU 修改數字聲音數據流以使其更柔和或更大聲來調整音量,或者將來自多個源的聲音混合到單個輸出中,即使流將要技術上只接受線路級聲音數據流的輸出設備,如 HDMI 音頻通道。

PulseAudio 還會在需要時進行採樣率轉換:如果您的監視器僅支持單一採樣率,則 ALSA 驅動程序層將拒絕播放任何使用不同採樣率的聲音數據的嘗試。

從技術上講,ALSA也可以進行軟體混音和採樣率轉換,只是 ALSA 調整軟體混音的方式通常涉及編輯.asoundrc文件,而 PulseAudio 允許輕鬆動態重新配置,即使在播放聲源時也是如此。結果,alsa-lib用於此目的的使用已失寵,而 PulseAudio 基本上已取而代之。

ALSA過去分為三個主要部分:

  • alsa-driver:實際的音效卡驅動程序(現在集成到 Linux 核心中)
  • alsa-lib:用於使用驅動程序的通用庫,可使用.asoundrc.
  • alsa-tools:使用者空間工具,如、alsamixer等。aplay``arecord

HDMI 顯示器和許多 USB 連接的聲音設備只接受一組離散的採樣頻率,因此在需要時自動轉換採樣率的能力變得越來越重要。這似乎是另一個alsa-lib失寵的原因。

要使用 ALSA 驅動程序介面選擇音效卡,您需要通過卡和設備編號(請參閱aplay -l可用選項)或輸出設備名稱(aplay -L分別參閱)指定設備。

不幸的是,將音效卡和設備編號或 ALSA 設備名稱輸入到使用 ALSA 驅動程序介面的應用程序的確切方法因應用程序而異:一些應用程序僅接受名稱,其他應用程序只能使用數字。命令行選項或配置項名稱也因應用程序而異:對於您期望它如何完成沒有單一的公認約定。

要使用監聽音箱,我可以只使用 ALSA 嗎?

大多數直接使用 ALSA 的應用程序都可以選擇輸出設備(通過命令行選項或通過配置對話框)。

您還可以在系統範圍 ( ) 或每個使用者 ( ) 中創建asoundrc配置文件,您可以在其中設置預設設備/etc/asound.conf``$HOME/.asoundrc

如果我從 alsamixer 中選擇 nvidia 音效卡,它根本不起作用

選擇其中的音效卡alsamixer僅用於獲取此音效卡的混音器設置。它不會使音效卡成為預設設置,也不會影響其他任何東西。

如果您安裝了 Pulseaudio,通常您還有一個 asoundrc 文件,該文件將pulse偽設備指定為預設設備,因此這可能與您希望單獨使用 ALSA 執行的操作相衝突。


調試 asoundrc 問題的幫助:My ~/.asoundrchas

pcm.!default "plughw:2,0"

為卡 2選擇自動plughw,由 確定aplay -L。您可能需要卡 1。從那一行開始,測試它是否可以在aplay沒有-D. 如果有效,請添加該ctl部分。


如果你的編解碼器(聲音硬體晶片)沒有音量控制,那麼它就沒有音量控制,所以你不能改變音量。

你可以在前面放一個“軟體音量控制”:

pcm.!default "mynvidia"
ctl.!default "mynvidia"

pcm.mynvidia {
 type softvol
 slave {
   pcm "plughw:2,0"
 }
 control {
   name "Master"
   card "NVidia"
 }
}

也許您也可以將plughw與符號卡名稱一起使用,但我自己沒有嘗試過。

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