如何判断我的系统默认声音输出是卡 2 和设备 0,而不是卡 2 设备 3、7 或 1?
我这样做了,但是没有声音。
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Device [C-Media USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
Subdevices: 0/1
Subdevice #0: subdevice #0
$ cat /etc/asound.conf
#pcm.!default {
# type plug;
# slave { pcm "hw:2" }
#}
pcm.!default {
type hw
card 2
device 0
}
答案1
如果您发现您的声卡不断切换索引,您将无法defaults.pcm.card 2
在/etc/asound.conf
.一种(复杂的)方法可能有效,那就是使用您想要的优先级配置声音内核模块。
这种方法描述于Debian 错误 #614113:
- 跑步
alsamixer
;- 使用 F6 并研究可用的声音设备
- 设置在设备上播放的正确级别;
- 运行一些允许选择声音设备的声音播放器(
audacious
例如);- 使用您的声音设备(重复步骤 2,3)并决定默认值;
- 退出
alsamixer
和播放器;- 以 root 身份登录;
- 运行
lsmod | grep snd
并尝试了解哪些模块对应于物理声音设备;- 如果不确定步骤 2 中是否正确确定模块:转到
/sys/module
并检查名称以“snd”开头的所有目录。该目录的名称与模块完全相同。如果您将在检查目录中看到“drivers”目录 - 那么检查目录的名称是与物理声音设备对应的模块的名称。记住(用记事本写下)所有此类模块。- 为您在步骤 2 和 3 中找到的每个模块运行
modinfo <module name> | grep desc
。阅读说明并决定该模块的优先级。这将是相应声音设备的优先级。- 去
/etc/modprobe.d
;- 创造
snd_cards_priorities.conf
;向 snd_cards_priorities.conf 写入如下内容:
alias snd-card-0 <module for highest priority card> options <module for highest priority card> index=0 alias snd-card-1 <module for lower priority card> options <module for lower priority card> index=1
- 保存存档;
- 使用命令重新启动 alsa
/usr/sbin/alsa force-reload
;- 运行
cat /proc/asound/cards
命令并检查声音设备的顺序是否正确(设备 #0 具有最高优先级);- 重复步骤9、10几次,检查声音设备顺序没有改变;
退出根;
运行
alsamixer
并配置您的默认声音设备,退出alsamixer
。- 使用您最喜欢的声音播放器来测试您的新配置。
答案2
要设置默认设备,您不应重新定义设备default
,而只需将以下内容放入/etc/asound.conf
:
defaults.pcm.card 2 # or better "PCH"
defaults.pcm.device 0
这仅适用于实际使用默认设备而未显式指定设备的程序。如果某些程序(如 PulseAudio 或 VLC)已针对某些特定输出设备进行配置,则必须更改该配置。