Libertine 容器声音在一台机器上不起作用,在另一台机器上起作用

Oxw*_*ivi 6 sound lxc libertine

我有两台机器,A 和 B。B 是一台非常旧的机器,我已经在上面安装了 Libertine 中的应用程序,并且听起来效果很好。另一方面,在机器 A 上,声音根本不适用于 Libertine 容器。我该如何诊断?

有趣的是,在机器 A 上,我在 16.10 之前创建了自己的非特权 LXC 容器,声音确实可以工作,并在升级后继续工作;但它不适用于在全新 16.10 安装中使用相同 LXC 的 Libertine。

笔记

  • 两台机器都是完全库存的 Ubuntu,只有libertine并且libertine-scope已安装
  • 只有用于休眠的 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
Run Code Online (Sandbox Code Playgroud)

Eld*_*eek 4

一些研究表明,许多较新的系统(机器 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
Run Code Online (Sandbox Code Playgroud)

此输出应帮助您确定要将哪张卡作为默认输出。

查看您需要哪个音频输出(卡 0 设备 0 是 alsa 默认值,可能不是您需要的;在我的情况下,我需要指定卡 1)

使用以下命令在您的主目录中创建一个文件gedit ~/.asoundrc(可以随意用您最喜欢的文本编辑器替换 gedit)

添加以下行:

pcm.!default {

    type hw
    card *X*
}

ctl.!default {
    type hw           
    card *X*
}
Run Code Online (Sandbox Code Playgroud)

替换我们之前发现的卡号*X*

保存文件并重试。

更多可能适用的信息可在此处找到

编辑:我很高兴您能够在 Libertine 下获得 2 个音频通道。关于你的扩展问题。您可以检查 的输出amixer scontrols并确保您选择的输出支持 6 个音频通道,如果是这样,请使用alsamixer确保它们都没有静音,并且您处于 6 通道模式而不是 2 通道模式,如下所示。

alsamixer2channel

要更改通道模式,请alsamixer使用箭头键突出显示Channel如上所示,然后向上或向下箭头选择所需的模式。

资料来源:

man aplay

https://www.alsa-project.org/main/index.php/Asoundrc#The_.asoundrc_file_format