audio - Docker:JACK 服务器未运行

标签 audio docker ros pulseaudio jack

我正在使用 ROS 运行大量 docker 容器,用于控制机器人。其中一个容器必须通过 sound_play 包播放一些音频文件。但是它返回错误

Cannot connect to server socket err = No such file or directory  
Cannot connect to server request channel  
jack server is not running or cannot be started

我能够从容器内部aplay音频(.wav)文件,我的声卡绝对可以被识别,而且我还尝试在特权模式下运行容器。我还尝试在容器中单独安装 jackd 并启动 jack 服务器,但收到错误

Cannot lock down 82274202 byte memory area (Cannot allocate memory).  
Bus error (core dumped)

我对这个问题的理解是否正确?如果是这样,我怎样才能让 jack 服务器在容器内启动?

最佳答案

我通过安装jackd1而不是jackd2解决了这个问题,因为显然,jackd2需要实时优先级,而我无法将其提供给docker容器。 jackd1 不过成功了。
我的 Dockerfile:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y jackd1

运行命令:

docker run -it --rm --privileged=true --device=/dev/snd:/dev/snd myContainerName jackd -R -d alsa -d hw:1

这将在您的容器中启动一个 jack 服务器。此后 sound_play 节点工作正常。

部分归功于http://crunchbang.org/forums/viewtopic.php?id=33530

关于audio - Docker:JACK 服务器未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955550/

相关文章:

android - 如果mp3文件来自端口8443,则音频标签在Cordova Web应用程序中不起作用

docker - 无法将 Docker 卷的写入权限授予 Docker Compose 中的非 root 用户

docker - Vagrant或Docker用于环境开发

java elasticsearch HighLevelRestClient 间歇性地抛出 "java.net.SocketException: Connection reset"

ros - 如何从 ROS 中的 catkin 工作区生成 .deb

java - Java游戏音效无法正常工作

python - Python读取.3gpp文件

java - Java 中的 Speex 编码

使用 Visual Studio Code 在 ROS 中调试 python 脚本

docker - Docker上的Rviz核心转储