【问题标题】:Docker: JACK server is not runningDocker:JACK 服务器未运行
【发布时间】:2016-10-23 15:48:33
【问题描述】:

我正在运行大量带有 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 server,但得到错误

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

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

【问题讨论】:

  • 如何启动 docker 容器?
  • 我使用docker-compose,在设备中提供/dev/snd:/dev/snd映射,也尝试过独立运行。

标签: audio docker ros pulseaudio jack


【解决方案1】:

我通过安装 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

【讨论】:

  • 在我看来,这似乎与github.com/docker/docker/issues/13983 有关,也许你可以在 jackd2 修复后再次尝试
  • 已订阅该问题,将在发布时尝试修复并在此处更新。谢谢!
猜你喜欢
  • 2015-01-13
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2021-02-22
  • 2021-12-05
相关资源
最近更新 更多