最近遇到需求,需要在有多个声卡的设备上,指定某个声卡播放声音。
首先声卡的ID并不是固定的,通过ID来指定肯定是不行的。如果是不同厂商的声卡,可以使用声卡名来获取需要使用的声卡。但实际情况往往是声卡名都是相同的,那么如何找到需要使用的声卡呢?
在网上能收到一个类似的问题“固定usb端口”,大概方法是给ttyUSB*
指定别名。
但对于声卡设备其位置并不在/sys/class/tty
下,而是在/sys/class/sound
下,固定usb端口的方法并不适用。
最终只能通在程序中根据usb端口的名字绑定声卡。
树莓派上usb端口名字如图:
一般来说树莓派usb端口名字都是不变的,如果实际应用中你设备上的名字不一样可以通过插拔声卡的方式获取。
在知道每个usb端口名字之后,就可以通过获取声卡信息来绑定声卡了。
cat /proc/asound/card1/stream0
输出如下
USB Device 0x41e:0x30d3 at usb-3f980000.usb-1.1.2, full speed : USB Audio
Playback:
Status: Stop
Interface 1
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 1 OUT (ADAPTIVE)
Rates: 48000, 44100
Capture:
Status: Stop
Interface 2
Altset 1
Format: S16_LE
Channels: 1
Endpoint: 2 IN (ASYNC)
Rates: 48000, 44100
第一行usb-3f980000.usb-1.1.2
这个就是usb端口名
发表评论 (对文章评论)