在Linux上混合来自多个用户进程的声音

enk*_*duh 5 audio linux sound-card

正如标题所示。

是否可以在不设置系统范围的脉冲服务器的情况下混合 Linux 上不同用户拥有的多个进程的音频输出?当所有进程都属于同一用户时,我可以毫无问题地混合音频,但是一旦我尝试在不同用户拥有的进程(特别是 mpd 和当前登录用户的程序)中使用声音,它就会首先-来了,先到先得。无论哪个用户首先获取声卡,都可以获得访问权限,任何其他用户的进程都会等待,直到它被释放。

wzh*_*zhd 3

我设法通过 TCP 在本地用户之间共享用户模式脉冲服务器。

编辑/etc/pulse/default.pa以启用 TCP 模块。我基本上禁用了身份验证以简化配置。请注意,如果您不是唯一使用该计算机的人,则可能会存在安全隐患。

加载模块 module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1

重新启动 PulseAudio,如果您使用的是 systemd,则可以使用systemctl --user restart pulseaudio. 请注意,如果已经有多个 PulseAudio 服务器正在运行,您可能需要停止它们。否则只有第一个启动的才有效。

现在 PulseAudio 应该正在侦听 TCP 端口,这可以使用命令进行验证ss -ltp。你可能会看到这样的东西:

LISTEN     0    0        *:4713       *:*                    
users:(("pulseaudio",pid=3130,fd=31))
Run Code Online (Sandbox Code Playgroud)

这表明 PulseAudio 正在侦听端口 4713。

要配置客户端,请编辑/etc/pulse/client.conf并启用自动连接:

自动连接本地主机 = 是

出于安全原因,此功能在较新版本的 PulseAudio 上默认处于禁用状态。

接下来尝试播放一些音频,干杯!