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

Baa*_*arn 8 gentoo alsa audio

我在我的系统上安装了 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
Run Code Online (Sandbox Code Playgroud)

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

那么我怎样才能检查我的问题到底在哪里呢?

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

Baa*_*arn 6

在 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
Run Code Online (Sandbox Code Playgroud)

如第 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 }
Run Code Online (Sandbox Code Playgroud)

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

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

pcm.!default {
        type  plug
        slave.pcm "hdmi1"
}
Run Code Online (Sandbox Code Playgroud)

现在一切都像一个魅力。