问题:
播放音频时,我的音响系统听不到任何声音。
问题:
在我的机器音频插孔或 S/PDIF 输出上播放某些内容所需的最小程序集是什么?
我是怎么到那里的?
我的系统是一个最新的 Debian Stretch 系统,它是使用debootstrap
.该系统是一个英特尔NUC5CPYH据说有一个英特尔 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
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>
答案1
您检查过音量设置吗?系统默认设置被选择为安静或完全静音,因为人们对在新的、未配置的系统上全音量声音输出感到恼火。
由于/proc/asound/cards
表明您的芯片组集成声卡的名称是“PCH”,因此请尝试以下操作(alsamixer
如果需要,请先安装):
alsamixer -c PCH
这应该打开一个带有多个滑块的基于文本的混音器:使用箭头键来操纵它们。 M 键将在具有它们的通道上切换“静音”设置。
标有“PCM”的滑块需要处于最大状态才能获得正常的声音输出:“Master”滑块是用于调整整体音量级别的滑块。如果您发现名称中包含 S/PDIF 的通道,您可能需要切换其静音状态以获得 S/PDIF 输出。
找到合适的默认设置后,alsactl store
以 root 身份运行以将设置保存为新的系统默认设置。
您的桌面环境还可能将音频设置从一个会话存储到另一个会话,但设置良好的系统范围默认音量永远不会有坏处。
答案2
在没有声音的系统上安装 PulseAudio已经不起作用不可能解决很多问题。此外,如果 sox 实际上需要 Pulse,它会自动与 sox 一起安装。
PulseAudio 通过 ALSA 路由声音,ALSA 控制大多数系统上的声音硬件,而 ALSA 无法检测到任何声音硬件或对其配置错误,因此您遇到的问题比安装 Pulse 所能解决的更严重。 Pulse 允许应用程序启动和运行,但没有可以找到输出音频的设备(如果我对问题的解释正确的话),因此您听不到声音。
我会暂时先卸载 PulseAudio(如果需要的话,一旦声音正常工作就安装它)。
然后,检查您的计算机上是否运行了 OSS(另一种声音系统)。如果是,它将阻止 ALSA 与音频硬件正确连接。如果是,并且您不使用 OSS,请将其删除。我的 Debian (sid) 安装上的软件包名称是oss4-base
.
删除所有这些后,如果可以的话重新启动计算机,尽管除非安装了 OSS,否则这可能并不重要。
然后,运行aplay -l
(包的一部分alsa-utils
)并查看它的输出。在我的电脑上,它输出:
**** List of PLAYBACK Hardware Devices ****
card 0: MID [HDA Intel MID], device 0: CX20585 Analog [CX20585 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: MID [HDA Intel MID], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
如果您没有列出任何设备,则仍然遇到问题,如果没有更多信息,我不知道如何进行修复。
答案3
在我的系统上,我发现pulseaudio经常禁用唯一实际工作的音频输出。这是pulseaudio 中的一个错误,但我还没有足够详细地了解实际的错误是什么,所以我在很大程度上忽略了它。
我获得声音的方法是启动alsamixer
,这是一个管理 ALSA 音量级别的 CLI 工具,然后按“F6”选择实际的 ALSA 声卡而不是损坏的虚拟脉冲音频卡,然后启用混音speaker
器并将其音量从零。