我刚刚在我的 Debian SID 计算机上进行了 dist 升级,声音就消失了。
我可以在 root 中播放音频文件,但不能以普通用户身份播放。我检查过我在“音频”组中。我检查过是否有任何东西通过运行而静音阿尔萨混合器,但所有线路均已启动并正在运行。
这是我在计算机上的音频输出:
$ lspci | grep Audio
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
我有一个未插入的 HDMI 输出(NVIDIA 控制器)。我的音频接头连接到我的英特尔控制器上。我跑步时可以看到这个司机阿尔萨混合器,但只能看到我的显卡的 HDMI 输出帕武控制输出设备。
列出我的音频接收器时,我只得到一个空设备:
$ pacmd list-sinks
1 sink(s) available.
* index: 2
name: <auto_null>
driver: <module-null-sink.c>
flags: DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY
state: IDLE
suspend cause:
priority: 1000
volume: front-left: 56362 / 86% / -3,93 dB, front-right: 55706 / 85% / -4,23 dB
balance -0,01
base volume: 65536 / 100% / 0,00 dB
volume steps: 65537
muted: no
current latency: 5,63 ms
max request: 6 KiB
max rewind: 6 KiB
monitor source: 2
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stéréo
used by: 0
linked by: 1
configured latency: 40,00 ms; range is 0,50 .. 2000,00 ms
module: 20
properties:
device.description = "Sortie factice"
device.class = "abstract"
device.icon_name = "audio-card"
我不太了解声音系统在 Debian 中是如何工作的,但我想我明白我的普通用户没有访问 Intel 芯片的权利。从这里开始,我被困住了,不知道该怎么办......
编辑:
我设法通过禁用 alsamixer 中的自动静音来恢复声音。此设置在系统更新期间已发生某种程度的更改。
但重启后,问题又出现了,但自动静音仍然关闭。
感谢 dirkt 的回答,我想我已经找到了这个问题的根源:运行时aplay-L作为普通用户和 root 用户,我注意到一些差异:
$ aplay -L
default
Playback/recording through the PulseAudio sound server
sysdefault:CARD=PCH
HDA Intel PCH, ALC887-VD Analog
Default Audio Device
$ sudo aplay -L
default:CARD=PCH
HDA Intel PCH, ALC887-VD Analog
Default Audio Device
sysdefault:CARD=PCH
HDA Intel PCH, ALC887-VD Analog
Default Audio Device
看来以简单用户运行时默认卡不一样。选择时可以有一些声音系统默认值代替默认普通用户卡。
$ aplay -D sysdefault sound.wav
但现在,我有点卡住了。我想我已经查明了问题的根源,但不知道如何解决它......
答案1
我通过运行以下命令解决了这个问题:
sudo apt-get remove --purge timidity
请确保这只会删除胆怯和胆怯守护进程。据我了解,守护进程在启动时获取一些资源并阻止其他服务找到声卡。我认为胆怯与 MIDI 文件有关,因此请确保在卸载软件包时不需要它,并确保您知道要卸载的内容。
希望这可以解决某些用户的问题。当上述问题解决后,您可能希望将来重新安装 timidity。
答案2
声音简要概述:声音硬件由内核驱动程序(以前是 ALSA 的一部分)管理,ALSA 提供了访问内核驱动程序的库(这就是您在 alsamixer 中看到的),Pulseaudio 运行在 ALSA 之上。原因之一是,无需额外的努力,ALSA 设备只能由单个程序使用,而 Pulseaudio 通过提供传输层允许多个程序使用硬件。
Pulseaudio 没有接收器意味着 Pulseaudio 无法获取 ALSA 设备,可能是因为 (1) 权限错误,(2) 其他东西已经在使用它们,(3) 完全不同的东西出了问题。
因此,第一步是停止 Pulseaudio,然后使用它aplay -L
来查看您的 ALSA 设备,并尝试aplay -D ... audio_file.wav
查看是否可以直接访问该设备。根据结果,下一步是查看是什么阻止了设备(其他东西已经更早启动并正在使用它),或者找出为什么 Pulseaudio 不使用 ALSA 设备(例如加载模块 alsa 卡直接使用pacmd
,查看错误消息/日志条目)。如何停止 Pulseaudio 取决于您如何启动它,可能使用 systemd,也可能通过桌面系统登录。
使用等检查正在运行的进程的命令行ps axu
可能会给出有关上述几点的提示,并且还将确保 Pulseaudio 已正确停止,并且不会自行重新启动。
答案3
问题解决:升级后,不知道为什么,输出是自动静音的。我只需要在 alsamixer 中更改它。
有时,不需要深入挖掘。
答案4
实际上,问题来自于您拥有 PulseAudio 和带有 blob 的 NVidia GPU。
解决方案包括通过在 /etc/pulse/daemon.conf 中插入垃圾(仅在文件末尾插入一个字母)来阻止 PulseAudio 启动。然后你将只能通过 AlsaMixer 设置音量,但至少声音会回来。
我已针对此问题提出了#918522 票证。请随意贡献。