Jackd无法在Docker容器中使用实时调度

key*_*ons 6 linux audio real-time webrtc docker

我一辈子都无法弄清楚如何让Jackd在Docker容器中以实时优先级运行。我的目标是在jackd / gstreamer的帮助下使用webrtc在Internet上获得SuperCollider音频流,并且我相信我需要为jackd启用实时调度,以便SuperCollider使用它(这可能是一个红色的鲱鱼,也许SuperCollider不会这样做)不需要实时Jackd,但我仍然想尝试此路径)。

我的主机(运行macOS 10.13.6的2014 MacBook Air)没有成功,但我也尝试在运行于64位Amazon Linux / 2.12.16的AWS Docker beantalk应用程序上构建映像并运行容器。

这是带有dockerfile和一些更多详细信息/错误日志的自述文件的回购链接:https : //github.com/osetinsky/pulse-streamer/tree/supercollider-example/examples/supercollider

我已经花了数小时阅读人们遇到的类似问题,并尝试进行以下操作:

最后一种方法似乎很有希望,但是在我运行时失败了:

docker run --privileged --ulimit rtprio=99 --ulimit memlock=800000000 --cpu-rt-runtime=950000 --volume=/dev/shm:/dev/shm:rw --user=1000 -it jack-sc bash

docker: Error response from daemon: OCI runtime create failed: 
container_linux.go:345: starting container process caused 
"process_linux.go:281: applying cgroup configuration for process caused 
\"failed to write 950000 to cpu.rt_runtime_us: write /sys/fs/cgroup/cpu/docker/1bc42e297356c9ad6f734726590c7f42450fcae44e0020950
68b8f10bc93d4f3/cpu.rt_runtime_us: invalid argument\"": unknown.

Run Code Online (Sandbox Code Playgroud)

为了记录在案,我能流与实时的PulseAudio测试音和使用的GStreamerπ介子(的WebRTC的去实现):https://github.com/osetinsky/pulse-streamer

我只想用SuperCollider的实时音频代替测试音调:)

这里提到的类似问题:

https://github.com/moby/moby/issues/31411

https://bugzilla.redhat.com/show_bug.cgi?id=1178246

(还有很多...)

谢谢!