Ошибка в проигрывании звука с помощью ALSA в контейнере LXC

Я использую хост Ubuntu 16.0.4 система для выполнения моего lxc контейнера. Я удалил pulseaudio поскольку я хотел использовать ALSA непосредственно.

После удаления pulseaudio от хост-машины, я смог играть звуки с помощью команды как одна ниже (на хост-машине):

aplay /usr/share/sounds/alsa/Rear_Right.wav

В lxc container, Я установил alsa libs и alsa utils. Когда я использую ту же команду как выше внутренней части контейнер, я получаю следующие ошибки:

ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4248:(_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:4248:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4248:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4727:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:654: audio open error: No such file or directory

Звуковые устройства в контейнере:

bash-4.2# ls -al /dev/snd/*
crw-rw---- 1 root   29 116,  5 Nov  1 17:21 /dev/snd/controlC0
crw-rw---- 1 root   29 116,  2 Nov  1 17:21 /dev/snd/controlC1
crw-rw---- 1 root   29 116, 10 Nov  1 17:21 /dev/snd/controlC2
crw-rw---- 1 root   29 116,  9 Nov  1 17:21 /dev/snd/hwC0D0
crw-rw---- 1 root   29 116, 13 Nov  1 17:21 /dev/snd/hwC2D0
crw-rw---- 1 root   29 116,  6 Nov  1 17:21 /dev/snd/pcmC0D3p
crw-rw---- 1 root   29 116,  7 Nov  1 17:21 /dev/snd/pcmC0D7p
crw-rw---- 1 root   29 116,  8 Nov  1 17:21 /dev/snd/pcmC0D8p
crw-rw---- 1 root   29 116,  4 Nov  1 17:21 /dev/snd/pcmC1D0c
crw-rw---- 1 root   29 116,  3 Nov  1 17:27 /dev/snd/pcmC1D0p
crw-rw---- 1 root   29 116, 11 Nov  1 17:21 /dev/snd/pcmC2D3p
crw-rw---- 1 root   29 116, 12 Nov  1 17:21 /dev/snd/pcmC2D7p
crw-rw---- 1 root   29 116,  1 Nov  1 17:21 /dev/snd/seq
crw-rw---- 1 root   29 116, 33 Nov  1 17:21 /dev/snd/timer

/dev/snd/by-id:
total 0
drwxr-xr-x 2 root root  60 Nov  1 17:21 .
drwxr-xr-x 4 root root 360 Nov  1 17:21 ..
lrwxrwxrwx 1 root root  12 Nov  1 17:21 usb-126c_4.1_amplifier-00 -> ../controlC1

/dev/snd/by-path:
total 0
drwxr-xr-x 2 root root 100 Nov  1 17:21 .
drwxr-xr-x 4 root root 360 Nov  1 17:21 ..
lrwxrwxrwx 1 root root  12 Nov  1 17:21 pci-0000:00:03.0 -> ../controlC0
lrwxrwxrwx 1 root root  12 Nov  1 17:21 pci-0000:00:14.0-usb-0:5:1.0 -> ../controlC1
lrwxrwxrwx 1 root root  12 Nov  1 17:21 pci-0000:01:00.1 -> ../controlC2
1
задан 2 November 2016 в 03:48

1 ответ

Я смог играть звуки наконец в lxc контейнер.

Первый, я должен удостовериться, что lxc устройство cgroup включено для звуковых устройств. Можно сделать это путем добавления следующего в контейнере config файл:

#Sound device nodes
lxc.cgroup.devices.allow = c 116:* rwm

lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir

Затем, так как я использую ALSA в хост-системе, чтобы играть звуки и хотеть использовать alsa снова в эти lxc container, удостоверьтесь, что alsa конфигурационный файл копируется в контейнере.

я скопировал alsa файл конфигурации с хоста в местоположении /etc/asound.conf внутренняя часть lxc контейнер. Причина того, чтобы сделать это состоит в том, потому что alsalib внутренняя часть контейнер должен иметь тот же configration для использования в качестве хост-машины.

После этого я смог играть звуки в контейнере. Я протестировал это путем выполнения следующего:

aplay /usr/share/sounds/alsa/Rear_Right.wav
2
ответ дан 7 December 2019 в 13:40

Другие вопросы по тегам:

Похожие вопросы: