Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9463676
  • 博文数量: 1750
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20091
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1750)

文章存档

2024年(26)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Android平台

2016-05-19 17:25:49

http://blog.csdn.net/lophyxp/article/details/14228735

如果有多张声卡, snd_pcm_open 打开的时候需要指定该卡,  aplay -l 或者 cat /proc/asound/cards 可以判断 卡号, 
 ./arecord -D plughw:1,0 -d 100 -c 1 -f S16_LE -r 8000 -t raw foobar.raw
plughw:1,0  1,0 即为card 1, subdevice 0的声卡部分.


首先说一下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 plain copy
  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 plain copy
  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 plain copy
  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 plain copy
  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 plain copy
  1. $ sudo vim /etc/asound.conf   
  2. defaults.pcm.card 1  
  3. defaults.pcm.device 3  
  4. defaults.ctl.card 1  
阅读(8556) | 评论(0) | 转发(0) |
0

上一篇:bluez

下一篇:软硬件开发之 RUFF

给主人留下些什么吧!~~