问题:
播放音频时,我的音响系统听不到任何声音。
问题:
在我的机器音频插孔或 S/PDIF 输出上播放某些东西所需的最少程序集是什么?
我是怎么到那里的?
我的系统是一个最新的 Debian Stretch 系统,它是用debootstrap
. 该系统是一个Intel NUC5CPYH,据说有一个Intel Braswell 芯片组。
我跑了
apt-get install --no-install-recommends sox libsox-fmt-all
安装sox
音频播放器。当我尝试播放文件时,我得到了
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM default
play FAIL formats: can't open output file `default': snd_pcm_open error: No such file or directory
所以,在查看了 and 的依赖关系之后sox
,libsox-fmt-all
我跑了
apt-get install libsndio6.1 pulseaudio
现在,sox
当被要求这样做时,它的输出似乎可以正常播放文件,但我的音响系统上没有任何声音输出。(音响系统设置得很好。)
编辑#1
的输出cat /proc/asound/cards
是
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0x81414000 irq 313
编辑#2
的输出aplay -l
是
aplay: device_list:270: no soundcards found...
解决方案
我让它工作了。现在我可以说有两个问题:
- 我的用户没有足够的权限访问声音设备。(这个对另一个问题的回答告诉我。)
- 我的声音设备已静音。(我将告诉我的答案标记为“正确”)
所以,总而言之,我必须采取的步骤是
apt-get install --no-install-recommends sox libsox-fmt-all alsa-utils
- 将自己添加到
audio
组中:usermod --append --groups audio <username>
- 更改 alsa 音量:
alsamixer
- 播放歌曲
sox
:play <filename>
你检查过音量设置吗?系统默认设置为安静或完全静音,因为人们对新的未配置系统上的全音量声音输出感到恼火。
由于
/proc/asound/cards
表明您的芯片组集成声卡的名称是“PCH”,请尝试以下操作(alsamixer
如有必要,请先安装):这应该会打开一个带有多个滑块的基于文本的混音器:使用箭头键来操作它们。M 键将切换具有它们的通道上的“静音”设置。
标有“PCM”的滑块需要完全打开才能获得正常的声音输出:“主”滑块是用于调节整体音量的滑块。如果您发现名称中包含 S/PDIF 的通道,您可能需要切换其静音状态以获得 S/PDIF 输出。
找到好的默认设置后,
alsactl store
以 root 身份运行以将设置保存为新的系统默认设置。您的桌面环境也可能将您的音频设置从一个会话存储到另一个会话,但设置良好的系统范围的默认音量永远不会受到伤害。
在没有声音的系统上安装 PulseAudio并不能解决很多问题。此外,如果 sox 确实需要 Pulse,它会与 sox 一起自动安装。
PulseAudio 通过 ALSA 路由声音,该 ALSA 控制大多数系统上的声音硬件,而 ALSA 无法检测到任何声音硬件或对其配置错误,因此您遇到的问题比安装 pulse 解决的问题更深。Pulse 允许应用程序启动和运行,但没有可以找到输出音频的设备(如果我对问题的解释是正确的),因此您听不到声音。
我会暂时先卸载 PulseAudio(如果需要,一旦声音正常就安装它)。
然后,检查您的机器上是否运行 OSS(另一个声音系统)。如果是,它将阻止 ALSA 与音频硬件正确连接。如果是,并且您不使用 OSS,请将其删除。我的 Debian (sid) 安装上的软件包名称是
oss4-base
.删除所有这些后,如果可以,请重新启动计算机,尽管除非安装了 OSS,否则这可能无关紧要。
然后,运行
aplay -l
(alsa-utils
包的一部分)并查看它的输出。在我的电脑上,它输出:如果您没有列出任何设备,那么您仍然遇到问题我不知道如何在没有更多信息的情况下进行修复。
在我的系统上,我发现 pulseaudio 经常禁用唯一实际工作的音频输出。这是pulseaudio中的一个错误,但我没有详细了解实际错误是什么,所以我大部分时间都忽略了它。
我获得声音的方法是启动
alsamixer
一个用于管理 ALSA 音量级别的 CLI 工具,然后按“F6”选择实际的 ALSA 声卡而不是损坏的虚拟脉冲音频卡,然后启用speaker
混音器并将其音量从零。