如何让ALSA播放在docker中可用?

发布于 2022-09-07 11:58:27 字数 1374 浏览 22 评论 0

之前pull了一个ros:kinetic-robot镜像,这个镜像是基于ubuntu的,然后把以前的ALSA播放wav代码挂上去执行

docker run -it \
--device /dev/snd:/dev/snd \
-v /media/dyan/project/projects/voice/:/data/voice/ \
ros:kinetic-robot

播放音频报错了,打开声卡设备时出了问题

ALSA lib pcm_dmix.c:1029:(snd_pcm_dmix_open) unable to open slave #这是snd_pcm_open()输出的异常
cannot open audio device default (No such file or directory) #这一行是我在err_num=snd_pcm_open()失败后打印的,括号中的信息是snd_strerror(err_num)

查看过了一些相关问题run apps using audio in a docker container
但是仍然解决不能解决。
在容器里面apt search alsa,alsa的库是有的,代码在容器中也能编译通过。

root@72b53ba14730:/# apt search alsa
Sorting... Done
Full Text Search... Done
libasound2/now 1.1.0-0ubuntu1 amd64 [installed,local]
  shared library for ALSA applications

libasound2-data/now 1.1.0-0ubuntu1 all [installed,local]
  Configuration files and profiles for ALSA drivers

libasound2-dev/now 1.1.0-0ubuntu1 amd64 [installed,local]
  shared library for ALSA applications -- development files

libgcrypt20/now 1.6.5-2ubuntu0.4 amd64 [installed,local]
  LGPL Crypto library - runtime library

libsdl1.2debian/now 1.2.15+dfsg1-3 amd64 [installed,local]
  Simple DirectMedia Layer

不知道问题出在哪里,是设备映射哪里不对吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倾听心声的旋律 2022-09-14 11:58:27

找到了
链接描述
链接描述

docker run -it \
    --device /dev/snd \
    -e PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native \
    -v ${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native \
    -v ~/.config/pulse/cookie:/root/.config/pulse/cookie \
    --group-add $(getent group audio | cut -d: -f3) \
    -v /media/dyan/project/projects/voice/:/data/voice/ \
    ros:kinetic-robot

然后还需要安装一些包

apt update && apt install alsa-base pulseaudio

嗯,目前可以正常播放了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文