模拟声卡ALSA sd-dummy(Docker-内核重建-ALSA sd-dummy)

时间:2019-09-11 04:57:56

标签: linux docker linux-kernel alsa pulseaudio

我正在使用没有ALSA的snd-dummy模块可用的docker映像。我需要模拟声卡。我不需要(或不想)听音频。

基于我所做的许多搜索,我相当确定我想使用ALSA的snd-dummy模块来模拟声卡,本质上是/ dev / null。

查看ALSA Matrix:Module-dummy指南,它指出,如果“ modinfo soundcore”返回您具有此模块,则无需重新编译内核。

在我的情况下,我没有“ soundcore”或“ sound”可用。我知道这意味着我必须重新编译内核。对我来说,重新编译docker映像的内核是一个新概念。 Docker对我来说是一个新概念。

在某种程度上,我需要将ALSA的snd-dummy模块安装到Linux docker映像上,该映像没有将音芯/声音编译到内核中。

Docker映像: https://github.com/fcwu/docker-ubuntu-vnc-desktop

ALSA Matrix snd-dummy: https://www.alsa-project.org/main/index.php/Matrix:Module-dummy

这对我来说是一个潜在的解决方案吗?: https://github.com/torvalds/linux/blob/master/sound/drivers/dummy.c

编辑:

将〜/ .asoundrc替换为以下内容并运行“ alsactl restore”时,我得到以下输出。另外,我的主机的音量也受影响。

# .asoundrc

pcm.dummy {
   type hw
   card 0
}

ctl.dummy {
   type hw
   card 0
}

  

$实际还原

     

alactl:load_state:1683:无法打开/var/lib/alsa/asound.state   读取:没有这样的文件或目录找到硬件:“ HDA-Intel”   “ Realtek ALC269VB”“ HDA:10ec0269,10280446,00100100   HDA:80862805,80860101,00100000“” 0x1028“” 0x0446“硬件是

     

使用通用方法初始化发现硬件:“虚拟”“虚拟”

     

混合器“”“”“”“硬件使用通用方法初始化

1 个答案:

答案 0 :(得分:1)

我认为解决方案是将声音设备安装到docker中,这里的问题是您必须使用privileged

docker run  -v /dev/snd:/dev/snd --privileged myImage ...

更新 您还可以插入内核模块snd-aloop并指定2作为主机上声音循环设备的索引:

sudo modprobe snd-aloop index=2
docker run -it --rm -p 6080:80 --device /dev/snd -e ALSADEV=hw:2,0 dorowu/ubuntu-desktop-lxde-vnc