我无法通过 HDMI 将声音输出到电视上。
当我进入声音设置时,HDMI 设备没有出现。
~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CONEXANT Analog [CONEXANT Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
我不知道视频信息是否有帮助,但无论如何:
~$ sudo lshw -C video
*-display
description: VGA compatible controller
product: 2nd Generation Core Processor Family Integrated Graphics Controller
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 09
width: 64 bits
clock: 33MHz
capabilities: msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:46 memory:d0000000-d03fffff memory:c0000000-cfffffff ioport:5000(size=64)
有什么建议给我吗?
答案1
据我所知,您可能需要更改默认的 pulseaudio 配置。备份文件/etc/pulse/default.pa
并编辑它。查找其中的部分
### Automatically load driver modules edepending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect.so
.else
### Use the static hardware detection module (for systems that lack udev/nal support)
load-module module-detect
.endif
并将其更改为(如果有必要,尝试将 hw:0,3 更改为 hw:0,7 或 hw:0,8 - 这是根据您的aplay -l
输出):
### Automatically load driver modules edepending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect.so
#.else
### Use the static hardware detection module (for systems that lack udev/nal support)
#load-module module-detect
#.endif
load-module module-alsa-sink device=hw:0,3 sink_name=hdmi
然后重新启动 pulseaudio 服务器。如果它是按用户运行的,请键入 ,pulseaudio --kill
然后键入pulseaudio --start
。如果它作为系统服务运行,请键入sudo service pulseaudio restart
。要检查这一点,请运行ps -ef | grep pulse
并查看哪个用户(左列)启动了 pulseaudio 应用程序:如果它是 root,则它是系统服务,如果它是您的用户,则使用 kill 和 start 方法。在试验配置文件时,您可以使用它来运行它以pulseaudio -vvv
查看调试信息。
请注意,此配置仅用于查看您是否可以让 hdmi 输出工作。在您找到要使用哪个 hw:0,# 之后,例如,如果您的 hdmi 输出与 配合使用load-module module-alsa-sink device=hw:0,7 sink_name=hdmi
,请尝试取消注释 module-udev-detect/module-detect 模块的加载,以便 pulseaudio 可以检测到它现在检测到的任何内容,您最终应该得到类似这样的结果:
### Automatically load driver modules edepending on the hardware available
#.ifexists module-udev-detect.so
load-module module-udev-detect.so
.else
### Use the static hardware detection module (for systems that lack udev/nal support)
load-module module-detect
#.endif
load-module module-alsa-sink device=hw:0,7 sink_name=hdmi
我建议您使用它pavucontrol
来选择/查看 pulseaudio 的输出设备。
答案2
在 X1 (2017) 上,我可以使用以下命令在 HDMI 和模拟音频输出之间切换
pactl set-card-profile 0 output:hdmi-stereo+input:analog-stereo
我可以切换回来使用
pactl set-card-profile 0 output:analog-stereo+input:analog-stereo
我在 arch wiki 中找到了这些命令https://wiki.archlinux.org/index.php/PulseAudio/Examples#Automatically_switch_audio_to_HDMI