我正在运行一系列带有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
并启动一个插孔服务器,但得到错误
Cannot lock down 82274202 byte memory area (Cannot allocate memory).
Bus error (core dumped)
我对这个问题的理解是否正确?如果是这样,我怎样才能让杰克服务器在容器内启动?
答案 0 :(得分:4)
我通过安装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
这将启动容器中的插孔服务器。之后sound_play
节点工作正常。