我负责管理两台机器,A 和 B。B 是一台非常老旧的机器,我在上面安装了 Libertine 中的应用程序,声音效果非常好。另一方面,在机器 A 上,Libertine 容器的声音根本不起作用。我该如何诊断这个问题?
有趣的是,在机器 A 上,我在 16.10 之前创建了自己的非特权 LXC 容器,声音在其中可以工作,并且在升级后继续工作;但它在全新安装 16.10 上使用相同 LXC 的 Libertine 上不起作用。
笔记
- 两台机器都是 Ubuntu 原版,只
libertine
安装libertine-scope
了 - 仅针对 hibernate 的 conf 文件
gtk3
进行了编辑 - 声音设置中的声音测试有效,只有容器声音无效
编辑
我尝试speaker-test
在容器中运行。它在主机上运行产生正确的声音,但在容器上显示此错误:
$ libertine-launch container-name speaker-test -t wav -c 6
speaker-test 1.1.2
Playback device is default
Stream parameters are 48000Hz, S16_LE, 6 channels
WAV file(s)
ALSA lib pcm_dmix.c:1041:(snd_pcm_dmix_open) unable to open slave
Playback open error: -2,No such file or directory
答案1
一些研究表明,许多较新的系统(机器 A)通常都具有默认设置的 HDMI。您的较旧系统(机器 B)可能只有模拟音频,因此这是其默认设置。
发出命令aplay -l
来获取音频设备列表,您应该得到类似这样的输出:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC887-VD Analog [ALC887-VD Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 1: ALC887-VD Digital [ALC887-VD Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
这个输出应该可以帮助您确定哪张卡是您想要作为输出的默认卡。
查看您需要哪个音频输出(卡 0 设备 0 是 alsa 默认设置,可能不是您需要的;在我的情况下,我需要指定卡 1)
使用命令在你的主目录中创建一个文件gedit ~/.asoundrc
(你可以用你最喜欢的文本编辑器替换 gedit)
添加以下行:
pcm.!default {
type hw
card *X*
}
ctl.!default {
type hw
card *X*
}
用我们之前发现的卡号替换*X*
保存文件并重试。
有更多可能适用的信息可供参考这里
编辑:我很高兴您能够在 Libertine 下让 2 个音频通道正常工作。关于您扩展的问题。您可以检查的输出amixer scontrols
并确保您选择的输出支持 6 个音频通道,如果支持,请使用alsamixer
确保它们均未静音,并且您处于 6 通道模式而不是 2 通道模式,如下所示。
要更改频道模式,请alsamixer
使用箭头键突出显示Channel
(如上所示),然后按向上或向下箭头选择所需的模式。
资料来源:
man aplay
https://www.alsa-project.org/main/index.php/Asoundrc#The_.asoundrc_file_format