从 docker 容器内部创建 jack 客户端

una*_*ame 1 ffmpeg jack docker docker-compose

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

问题从这里开始:

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

我开始查看FFmpeg代码,发现FFmpeg命令调用了jack_client_openjack API中的命令,失败了。

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

有没有一种简单的方法可以在两个[暴露端口]之间创建连接?

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

谢谢您的帮助!

小智 5

我刚刚开始工作,我需要在 docker run 命令中执行以下操作:

--volume=/dev/shm:/dev/shm:rw
--user=1000
Run Code Online (Sandbox Code Playgroud)

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

您可以通过在容器中运行 jack_simple_client 来确认其工作,您应该会听到蜂鸣声。