gentoo alsapulseaudio - alsa 混音器工作; aplay 直接到 hw:1,0 有效;对任何已配置的 PCM 的播放均不起作用

gentoo alsapulseaudio - alsa 混音器工作; aplay 直接到 hw:1,0 有效;对任何已配置的 PCM 的播放均不起作用

当pulseaudio守护进程是不是运行时,我可以使用 aplay 将声音发送到扬声器

aplay -Dhw:1,0 sample.wav

当我按照上面的方式播放时,alsamixer 似乎可以按照我的预期控制卡上的音量;特别是主通道和前置通道会影响上面播放的样本的音量。

当我执行 aplay -L 时,它列出了许多 PCM。当我选择其中一个 PCM 进行播放时,根本没有声音。如果pulseaudio正在运行,aplay会默默地失败。如果pulseaudio 未运行,则会失败并显示错误2,无法打开文件。

大多数声音应用程序似乎不允许声音硬件的低级规格,因此除了通过 aplay 之外,我根本无法获得任何声音。我认为问题在于较高级别的 PCM 名称未正确映射到硬件设备。

我会注意到,没有pulseaudio的旧内核在这台机器上没有声音问题。

这些不产生声音:

aplay -Dfront sample.wav
aplay -Dpulse sample.wav

aplay -L 输出:

null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
hdmi:CARD=HDMI,DEV=0
    HDA Intel HDMI, HDMI 0
    HDMI Audio Output
hdmi:CARD=HDMI,DEV=1
    HDA Intel HDMI, HDMI 1
    HDMI Audio Output
hdmi:CARD=HDMI,DEV=2
    HDA Intel HDMI, HDMI 2
    HDMI Audio Output
default:CARD=PCH
    HDA Intel PCH, ALC892 Analog
    Default Audio Device
sysdefault:CARD=PCH
    HDA Intel PCH, ALC892 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    Front speakers
surround21:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=PCH,DEV=0
    HDA Intel PCH, ALC892 Digital
    IEC958 (S/PDIF) Digital Audio Output

aplay -l 输出

card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

答案1

对我来说,答案是 Pulseaudio 要么误解了 udev,要么 udev 给了它错误的配置——我对这两者都没有足够的了解来决定这个问题。如果我更改 Pulse 音频 default.pa 来显式设置硬件配置而不是从 udev 获取它,它就会起作用。

在default.pa中,我必须取消注释这两行:

load-module module-alsa-sink device=hw:1,0
load-module module-alsa-source device=hw:1,0

并评论这些行:

### Automatically load driver modules depending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect
#.else
### Use the static hardware detection module (for systems that lack udev support)
#load-module module-detect
#.endif

答案2

您必须使用完整的设备名称来选择正确的卡:

aplay -D front:CARD=PCH,DEV=0 sample.wav

要更改默认卡,请将类似的内容添加到全局/etc/asound.conf或您的~/.asoundrc

defaults.ctl.card "PCH"
defaults.pcm.card "PCH"

要使 PulseAudio 使用正确的卡,您必须对其进行配置(尝试pavucontrol)。

相关内容