我搜索了好久,还是没找到“hw:0,0”是什么意思的解释。我该如何确定我的 USB 声卡的编号? 多普勒要求我输入如下内容:
audio_output {
type "alsa"
name "Sound Card"
device "hw:0,0" # optional
format "44100:16:2" # optional
}
如果我执行“alsamixer -c 1”,它会打开 USB 卡的音量控制,但这对我实际上没有帮助。
在哪里可以找到系统上的设备名称/编号列表?它们是否能适应硬件变化?如果我移除卡 2,卡 3 是否会变成卡 2?还有其他方法可以识别设备吗?在哪里可以找到有关这些内容的文档?
答案1
JohnT 的回答提供了很好的基础知识。我会继续介绍如何查找系统上的设备。使用aplay -l
获取系统上的设备列表。硬件:X,Y来自硬件的映射——在这种情况下,X是个卡片数,而是是个设备数字。
$ 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 设备每次插入时可能不总是获得相同的设备号,因此硬件:X,Y设备可能会发生变化。最简单的答案是,对于桌面系统,尝试 GNOME/KDE/Xfce 配置工具,看看它们是否足够智能,能够识别这些变化。
如果你不使用桌面系统,那么复杂的方法就会变得……有趣。你也许可以使用设备别名而不是硬件:X,Y——这就是输出显示的内容aplay -L
。某物:CARD=FOO,DEV=Ystuff 是别名,在不同的设备插件之间可能不会改变,其中X在硬件:X,Y有可能。(假设您每次都使用同一个 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 编写规则(这是手册页) 将允许设备在插入时获取相同的设备名称。
答案2
hw:0,0
指定默认声卡上的默认设备。要访问第二个声卡的第一个设备,您需要指定hw:1,0
。这些在您的中指定.asoundrc
。有关所有这些的更多信息这里。