4

我正在运行大量带有 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)

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

4

1 回答 1

5

我通过安装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节点工作正常。

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

于 2016-06-23T00:43:52.223 回答