當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
)。