Android常用的音频驱动节点介绍android手机驱动「Android常用的音频驱动节点介绍」
笔者主要是做Audio Framework层的系统开发工作,公司属于音视频会议行业,在定位解决音频方面的问题时,为了能大致定位问题到底是出在音频驱动层以下,还是Framework层,特将常用的音频驱动节点(功能主要涉及播放和录音)的调试方法记录下来备用。
查看设备加载的声卡信息:cat /proc/asound/cards
我司的设备上主要有2张声卡0和1,0是主板自带的,主要使用的是其Speaker;1是U MIC Bar(注意这里使用的MIC 并非主板上默认的mic跟手机等设备还有区别)
查看声卡下挂载的逻辑设备信息:ls -al /dev/snd
声卡下的逻辑设备包括控制器,定时器,音序器和PCM设备等,PCM设备又细分为录音和播放设备,其中录音设备是CxDxc(c是capture),播放设备是CxDxp(p是Playback),中间的两个xx表示第X张声卡的第X个设备。
可以看到我司的声卡0上有多个录音和播放设备,声卡1只有一个录音设备 pcmC1D0c 其实U Mic 就是从该节点读取的录音数据;当张声卡下面有多个逻辑设备时,要根据自己产品的实际情况来确定到底哪个节点用于播放,哪个节点用于录音,下面的例子笔者以自己公司产品为例,读者记得根据自己的产品更换第X张声卡的第X个设备等参数,千万别把这2个参数直接copy过去!!!
查看录音节点的状态:cat /proc/asound/card1/pcm0c/sub0/status
可以看到这时是正在录音状态,重复执行上述命令可以看到,这些数值是一直在不断增大的,尤其看hw_ptr 据说这是音频数据的读指针。
若没有录音,则获取状态时是close状态
查看播放设备节点的状态:cat /proc/asound/card0/pcm1p/sub0/status
上面是播放的状态,若不断有音频播出,重复执行上述指令,数值仍然会变大,尤其是hw_ptr写指针的值,会不断增长,若暂时没有声音输出,值将保持不变。
同样,若没有播放,则该节点是处于colse状态
使用tinyalsa工具测试录音/播放功能:
录音(-D 表示第几张声卡 ,-d表示声卡的第几个逻辑设备,再就是声道数,采样率,采样精度):tinycap /sdcard/test.pcm -D 1 -d 0 -c 8 -r 16000 -b 16 -p 768 -n 10
播放(仅支持wav格式,容器格式mp3,aac等不支持):tinyplay /sdcard/song.wav -D 0 -d 1
总结:通过这些音频驱动节点调试的手段,能大致定位音频问题出在驱动层以下,还是系统层,是辅助定位问题的有效手段,各位网友们看着随时取用~
海盐版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com