alsa設置默認聲卡

首先說一下alsa的配置文件。alsa的配置文件是alsa.conf位於/usr/share/alsa目錄下,通常還有/usr/share/alsa/card和/usr/share/alsa/pcm兩個子目錄用來設置card相關的參數,別名以及一些PCM默認設置。以上配置文件,我等凡夫從不用修改,修改它們是大神的工作。

還有兩個配置文件/etc/asound.conf和~/.asoundrc,它倆有效是因爲它倆被alsa.conf引用。以下是alsa.conf的原文:

[plain] view plaincopy
  1. # pre-load the configuration files  
  2.   
  3. @hooks [  
  4.         {  
  5.                 func load  
  6.                 files [  
  7.                         {  
  8.                                 @func concat  
  9.                                 strings [  
  10.                                         { @func datadir }  
  11.                                         "/alsa.conf.d/"  
  12.                                 ]  
  13.                         }  
  14.                         "/etc/asound.conf"  
  15.                         "~/.asoundrc"  
  16.                 ]  
  17.                 errors false  
  18.         }  
  19. ]  

然後說我遇到的問題。爲了提高本人的臺式機的性能,在沒有換主板的情況下升級了CPU和顯卡。CPU沒有造成什麼影響,顯卡是淘來的微星R6750暴雪1G,芯片爲AMD Radeon HD 6750。由於它提供了一個HDMI接口,該接口還支持音頻輸出,於是麻煩出現了,在gentoo下,聲音不走板載的HDA VIA VT82xx集成聲卡,不知道走到哪裏出去了,反正我的耳機沒有聲音。

找了好多文檔,終於然我弄明白怎麼回事了。

首先,如果機器有多於一個聲卡,可以用下面的命令顯示出來:

[plain] view plaincopy
  1. $ cat /proc/asound/cards  
  2.  0 [Generic        ]: HDA-Intel - HD-Audio Generic  
  3.                       HD-Audio Generic at 0xfe9bc000 irq 25  
  4.  1 [VT82xx         ]: HDA-Intel - HDA VIA VT82xx  
  5.                       HDA VIA VT82xx at 0xfeafc000 irq 17  
其次,每一個聲卡有一個card number和一個device number,可以用下面命令顯示出來:

[plain] view plaincopy
  1. $ aplay -l  
  2. **** List of PLAYBACK Hardware Devices ****  
  3. card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]  
  4.   Subdevices: 1/1  
  5.   Subdevice #0: subdevice #0  
  6. card 1: VT82xx [HDA VIA VT82xx], device 0: AD1986A Analog [AD1986A Analog]  
  7.   Subdevices: 1/1  
  8.   Subdevice #0: subdevice #0  
最後,alsa設置了一個defaults設備,音頻播放軟件默認使用defaults設備輸出聲音。defaults設備定義在alsa.conf中,內容如下:

[plain] view plaincopy
  1. #  
  2. # defaults  
  3. #  
  4.   
  5. # show all name hints also for definitions without hint {} section  
  6. defaults.namehint.showall off  
  7. # show just basic name hints  
  8. defaults.namehint.basic on  
  9. # show extended name hints  
  10. defaults.namehint.extended off  
  11. #  
  12. defaults.ctl.card 0  
  13. defaults.pcm.card 0  
  14. defaults.pcm.device 0  
  15. defaults.pcm.subdevice -1  
  16. ……  
  17. ……  
  18. ……  

所以defaults會默認匹配card number和device number比較小的聲卡。比如我這裏(看上面aplay -l的輸出顯示),就會匹配到HDMI 0上。

如果要修改,則修改/etc/asound.conf或~/.asoundrc。比如我要把defaults匹配到card 1,device 0上,則添加一下幾行:

[plain] view plaincopy
  1. $ sudo vim /etc/asound.conf   
  2. defaults.pcm.card 1  
  3. defaults.pcm.device 3  
  4. defaults.ctl.card 1  

參考文檔:

[csdn blog]alsa config
[csdn blog]理解和使用Alsa的配置文件
[arch wiki]設置默認聲卡

發佈了24 篇原創文章 · 獲贊 53 · 訪問量 100萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章