JohnT的答案提供了良好的基础。我将继续介绍如何在系统上查找设备。使用“ aplay -l”获取系统上设备的列表。在HW:X,Y来自硬件的这种映射-在这种情况下,X是卡数,而Y是在设备数量。
$ aplay -l # note lower-case "L" option
**** List of PLAYBACK Hardware Devices ****
card 0: T71Space [Terratec Aureon 7.1-Space], device 0: ICE1724 [ICE1724]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: T71Space [Terratec Aureon 7.1-Space], device 1: IEC1724 IEC958 [IEC1724 IEC958]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: T71Space [Terratec Aureon 7.1-Space], device 2: ICE1724 Surrounds [ICE1724 Surround PCM]
Subdevices: 3/3
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
由于这些USB设备在每次插入时可能不一定总是获得相同的设备号,因此hw:X,Y设备可能会更改。最简单的答案是,对于台式机系统,请尝试GNOME / KDE / Xfce配置工具,并查看它们是否足够智能以接受更改。
如果您不使用台式机系统执行此复杂操作,则会变得很有趣。您也许可以使用设备别名代替“ hw:X,Y”-这就是“ aplay -L”的输出所显示的。“ something:CARD = FOO,DEV = Y”是别名,在不同的设备插件之间可能不会更改,而“ hw:X,Y”中的X可能会在其中变化。(假设您每次都使用相同的USB加密狗。)
$ aplay -L
default:CARD=CK804
NVidia CK804, NVidia CK804
Default Audio Device
front:CARD=CK804,DEV=0 # hw:0,0
NVidia CK804, NVidia CK804
Front speakers
surround40:CARD=CK804,DEV=0 # hw:0,1
NVidia CK804, NVidia CK804
4.0 Surround output to Front and Rear speakers
因此,您的aplay命令将变为“ aplay -D front:CARD = CK804,DEV = 0 somefile.wav”,并且您可以在.asoundrc中使用相同的设备名称。
如果您需要甚至在更低级别的实际内核设备上都更稳定的东西,则需要udev-它是允许将设备热插拔到系统中的系统。您可以为udev编写规则(这是手册页),该规则允许设备在插入时获得相同的设备名。