大家好,我使用笔记本电脑 + 外接显示器,我需要使用显示器扬声器,但在查看命令 [ aplay -l ] 结果 = 时,我在 alsamixer 中看不到 HDMI 卡
[void@base ~]$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CX20757 Analog [CX20757 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [BenQ EX2710]
Subdevices: 1/1
Subdevice #0: subdevice #0
并在查看命令时
[void@base ~]$ cat /proc/asound/modules
0 snd_hda_intel
其他事情:我正在使用 void-base 系统和一些 xorg 服务和 dwm 窗口管理器
好吧,我需要知道如何将 HDM 卡设置为默认声卡
答案1
请注意,在这种情况下,只有一张声卡 ( card 0
),具有多个输出设备,其中之一是 HDMI 输出。
PulseAudio/Pipewire
如果您使用 PulseAudio 或 Pipewire,它们应该如果您选择一次,会自动记住每个音频制作应用程序所选择的输出设备pavucontrol
,并且对于之前未生成音频的程序,他们将使用用或类似的 PulseAudio 配置工具标记为“后备”的输出。
如果您需要在命令行上执行此操作,请首先确保使用正确的卡配置文件。用于pactl list cards
查找卡名称和每个卡的可用配置文件:
pactl set-card-profile <card name> <profile name>
对于集成在英特尔芯片组中的高清音频,它可能是这样的:
pactl set-card-profile alsa_card.pci-0000_00_1f.3 output:hdmi-stereo+input:analog-stereo
然后运行pactl list sinks
并找到水槽名称和端口名称对于您的声卡。在输出中,它将如下所示:
Sink #<sink number>
State: SUSPENDED
Name: <here's the sink name you're looking for>
[...some stuff indented at this level...]
Properties:
[...a lot of stuff indented at this level...]
Ports:
<here are the port names>
Active Port: <something>
Formats:
[...]
由于您显然已将高清音频集成到英特尔芯片组中,因此接收器名称很可能是alsa_output.pci-0000_00_1f.3.hdmi-stereo
。然后在该接收器的部分中找到该接收器可用的端口名称Ports:
。它可能是类似的东西hdmi-output-0
。
一旦知道了名称,就可以在命令中使用它们,如下所示:
pactl set-sink-port <sink name or number> <port name>
即可能是这样的:
pactl set-sink-port alsa_output.pci-0000_00_1f.3.hdmi-stereo hdmi-output-0
set-sink-port
对于 PulseAudio,您可以通过将命令添加到以下位置将其设置为系统范围的默认值/etc/pulse/default.pa
:
set-card-profile alsa_card.pci-0000_00_1f.3 output:hdmi-stereo+input:analog-stereo
set-sink-port alsa_output.pci-0000_00_1f.3.hdmi-stereo hdmi-output-0
但请注意,任何记住的每用户和每应用程序设置通常都会覆盖系统范围的 PulseAudio 默认值。
普通ALSA
如果您只使用普通的 ALSA,那么您可以在您的 中放置类似的内容~/.asoundrc
:
defaults.pcm.!card 0
defaults.ctl.!card 0
defaults.pcm.!device 3
defaults.ctl.!device 3