linux - 模拟声卡 ALSA snd-dummy (Docker - Kernel Rebuild - ALSA snd-dummy)

标签 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 镜像上,该镜像没有将 soundcore/sound 编译到内核中。

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

ALSA 矩阵 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
}

$ alsactl restore

alsactl: load_state:1683: Cannot open /var/lib/alsa/asound.state for reading: No such file or directory Found hardware: "HDA-Intel" "Realtek ALC269VB" "HDA:10ec0269,10280446,00100100 HDA:80862805,80860101,00100000" "0x1028" "0x0446" Hardware is

initialized using a generic method Found hardware: "Dummy" "Dummy

Mixer" "" "" "" Hardware is initialized using a generic method

最佳答案

我认为解决方案是将声音设备安装到 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

关于linux - 模拟声卡 ALSA snd-dummy (Docker - Kernel Rebuild - ALSA snd-dummy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57882375/

相关文章:

c - 调用 clock() 时出现段错误

python - 使用 Docker 和 Flask 进行机器学习的性能问题

mongodb - mongodb容器启动失败,并出现错误:IllegalOperation:尝试在只读目录:/data/db上创建锁定文件,终止

linux - 哪个 Linux 头文件包含 "struct iface"的定义?

c++ - Linux/CUPS Qt打印实例

linux - 如何使用 sed 更改文件扩展名?

linux - Incrond 监控 NFS 挂载?

linux - docker.service 的作业失败,因为控制进程退出并出现错误代码。安装 docker ubuntu 19.10 期间

c++ - 用户级线程是如何调度/创建的,内核级线程是如何创建的?

c - C中函数的公共(public)修饰符的含义