如何检查 HDMI 声音不起作用的原因

如何检查 HDMI 声音不起作用的原因

我在系统上安装了 Gentoo clean,除了 /home,但我删除了所有可能影响声音的隐藏文件夹(.mplayer .pulse* .config .esd_auth 等),对于新用户,adduser mistertest -m -G audio,video,users结果是相同的,没有当我在 mplayer 中播放文件时发出声音。

它是 Z68 芯片组,我在 CPU 中使用 Intel IGP H2000,所以这不应该是我主板上 spdif 连接器的问题,我认为我已经在内核中安装了所有正确的模块。我没有额外的硬件来检查我的声音是否正常工作(没有耳机或外部扬声器),但我认为问题要么是一些错误的配置,要么是内部 spdif(如果有的话)。

dronemother ~ # lsmod | grep snd
snd_hda_codec_hdmi     22705  1
snd_hda_codec_realtek   190506  1
snd_hda_intel          21727  3
snd_hda_codec          63422  3 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel
snd_hwdep               5726  1 snd_hda_codec
snd_pcm                69969  3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_timer              17697  1 snd_pcm
snd                    53814  13 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_    timer
soundcore               5009  1 snd
snd_page_alloc          6641  2 snd_hda_intel,snd_pcm

dronemother ~ # lspci -v
# cut other stuff away here    
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)
        Subsystem: ASRock Incorporation Device 1892
        Flags: bus master, fast devsel, latency 0, IRQ 46
        Memory at fe600000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [50] Power Management version 2
        Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
        Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
        Capabilities: [100] Virtual Channel
        Capabilities: [130] Root Complex Link
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd-hda-intel

我安装了pulseaudio、alsa-plugins、mplayer、mixer 和 pavucontrol。在 mplayer 中播放文件时没有出现任何错误,只是没有声音。

那么如何检查我的问题到底出在哪里呢?

编辑:我刚刚从 Ubuntu Live USB 记忆棒启动电脑,声音也不起作用。 (时间长一点,不能每天重启服务器,有些人依赖它的服务。)

答案1

在 gentoo IRC 上多次询问这个问题后,最后论坛,我被推向正确的方向并能够解决问题。

~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
  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

如第 2 行所述,这些是所有可用的播放设备。我相应地配置了我的 /etc/asound.conf 。 (也可以在每个用户的 ~/.asoundrc 中完成)

~ $ cat /etc/asound.conf
pcm.analog {
        type hw
        card 0
        device 0 }

pcm.digital {
        type hw
        card 0
        device 1 }

pcm.hdmi0 {
        type hw
        card 0
        device 3 }

pcm.hdmi1 {
        type hw
        card 0
        device 7 }

在每个条目中,点后面的部分是可以自由选择的本地别名。其他应用程序可以使用它来识别设备。使用aplay -D plug:hdmi1 ~/soundfile.wavfinally 播放声音(实际上你应该播放wav 文件,因为aplay 无法解码mp3 或类似文件)。

所以我将这几行附加到我的 /etc/asound.conf 中

pcm.!default {
        type  plug
        slave.pcm "hdmi1"
}

现在一切都像魅力一样。

相关内容