从docker容器内创建一个jack客户端

时间:2017-07-16 13:04:50

标签: docker ffmpeg docker-compose jack

我使用插孔在我的电脑中的多个声卡之间传送音频。 要录制音频,我使用一个非常方便的FFmpeg命令创建一个可写的插孔客户端: ffmpeg -f jack -i <client_name> -strict -2 -y <output_file_name>。 到目前为止,这非常有效。

问题从这里开始:

我还有一个nginx docker,它记录我的数据并使其可用于流式传输。当试图在docker中使用相同的命令时,我收到以下错误:"Unable to register as a JACK client"

我开始查看FFmpeg code并发现FFmpeg命令从jack API调用jack_client_open命令,该命令失败。

似乎在docker内部的FFmpeg请求与主机上运行的jackd服务器之间的连接存在某种问题。

是否有一种简单的方法可以在两个[公开端口]之间建立连接?

(我看到了一些像netjack2这样的解决方案,但在创建更复杂的服务器 - 客户端架构之前,我想找到一个更优雅的解决方案。)

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

我刚刚完成了这项工作,并且在docker run命令中需要以下内容:

--volume=/dev/shm:/dev/shm:rw
--user=1000

因此,该容器正在运行一个用户,该用户可以从我的主机用户帐户中产生的文件夹访问/dev/shm中的文件。如果您的jackd和容器都以root用户身份运行,则不需要。

您可以通过在容器中运行jack_simple_client来确认其工作,应该会发出哔哔声。