linux——alsa中多个声卡设备时打开某一指定声卡的PCM设备

前言

  最近调试板子上的3个ADAU1761音频接口,使用pocketsphinx语音库调用alsa库的API接口打开指定的Mic进行录入语音时出现异常,默认情况只能打开第一个ADAU1761音频接口,想打开第二个或第三个ADAU1761音频接口时却出现错误,本文记录一下调试的过程。

PCM设备选择

  移植alsa lib 和alsa utils库后(移植教程见:传送门)可使用以下指令查看声卡设备和PCM设备,具体如下:

root@newboard_project:/# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ADAU1761 [ZED ADAU1761], device 0: 43c00000.axi-i2s-adau-hifi adau-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: ADAU1761_1 [ZED ADAU1761], device 0: 43c10000.axi-i2s-adau-hifi adau-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: ADAU1761_2 [ZED ADAU1761], device 0: 43c20000.axi-i2s-adau-hifi adau-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

root@newboard_project:/# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: ADAU1761 [ZED ADAU1761], device 0: 43c00000.axi-i2s-adau-hifi adau-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: ADAU1761_1 [ZED ADAU1761], device 0: 43c10000.axi-i2s-adau-hifi adau-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: ADAU1761_2 [ZED ADAU1761], device 0: 43c20000.axi-i2s-adau-hifi adau-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

root@newboard_project:/# ls -l /dev/snd
crw-rw----    1 root     root      116,   0 Jan  1 00:00 controlC0
crw-rw----    1 root     root      116,  32 Jan  1 00:00 controlC1
crw-rw----    1 root     root      116,  64 Jan  1 00:00 controlC2
crw-rw----    1 root     root      116,  24 Jan  1 00:00 pcmC0D0c
crw-rw----    1 root     root      116,  16 Jan  1 00:00 pcmC0D0p
crw-rw----    1 root     root      116,  56 Jan  1 00:00 pcmC1D0c
crw-rw----    1 root     root      116,  48 Jan  1 00:00 pcmC1D0p
crw-rw----    1 root     root      116,  88 Jan  1 00:00 pcmC2D0c
crw-rw----    1 root     root      116,  80 Jan  1 00:00 pcmC2D0p
crw-rw----    1 root     root      116,  33 Jan  1 00:00 timer

如上,共有三个声卡设备:
card 0: ADAU1761
card 1: ADAU1761_1
card 2: ADAU1761_2
在使用aplay和arecord指令进行播放和录音时可正常选择其中某一个声卡,如:

//使用ADAU1761_1录音
root@newboard_project:/# arecord -D hw:ADAU1761_1 -fS32_LE -d10 -c2 -r48000 s32_                    
le.wav                                                                                              
Recording WAVE 's32_le.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo

//使用ADAU1761播放
root@newboard_project:/# aplay -D hw:ADAU1761 -fS32_LE -c2 -r48000 s32_le.wav                       
Playing WAVE 's32_le.wav' : Signed 
  • 1
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值