无需设置系统范围的脉冲服务器,是否可以混合 Linux 上不同用户拥有的多个进程的音频输出?
当所有进程都由同一用户拥有时,我可以毫无困难地混合音频,但一旦我尝试在不同用户拥有的进程中使用声音(具体来说,mpd 和当前登录用户的程序),就会按照先到先得的原则。哪个用户先获得声卡,就可以获得访问权限,而任何其他用户的进程都必须等待,直到声卡被释放。
答案1
我设法通过 TCP 在本地用户之间共享用户模式脉冲服务器。
编辑/etc/pulse/default.pa
以启用 TCP 模块。我基本上禁用了身份验证以简化配置。请注意,如果您不是唯一使用该计算机的人,则可能会存在安全隐患。
加载模块模块本机协议 tcp 身份验证 ip acl=127.0.0.1 身份验证匿名=1
重新启动 PulseAudio,如果您使用的是 systemd,可以使用 完成此操作systemctl --user restart pulseaudio
。请注意,如果已经有多个 PulseAudio 服务器正在运行,您可能需要停止它们。否则,只有第一个启动的服务器可以工作。
现在 PulseAudio 应该正在监听 TCP 端口,可以使用命令进行验证ss -ltp
。您可能会看到类似以下内容:
LISTEN 0 0 *:4713 *:*
users:(("pulseaudio",pid=3130,fd=31))
这表明 PulseAudio 正在监听端口 4713。
要配置客户端,编辑/etc/pulse/client.conf
并启用自动连接:
自动连接本地主机 = 是
出于安全原因,PulseAudio 的新版本默认禁用此功能。
接下来尝试播放一些音频,干杯!
答案2
将其放在你~/.pulse/default.pa
当前运行 X 的用户上
.include /etc/pulse/default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
然后使用以下命令重新启动 pulseaudiopulseaudio -k;pulseaudio -D
然后把这个放在所有其他用户身上~/.pulse/client.conf
default-server = 127.0.0.1
我最初是在http://billauer.co.il/blog/2014/01/pa-multiple-users/,并做了一些调整(包含行)
在 Ubuntu 20.04 上工作
混合了来自不同用户的 2 首音乐
答案3
对我来说,在 Debian 9 上它是这样的:
# add all your users to the audio group
usermod -aG audio user1
usermod -aG audio user2
usermod -aG audio user3
# pulseaudio config:
# remove old per-user configs
rm -rf /home/*/.config/pulse/
# common client config
echo '
auto-connect-localhost = yes
' >> /etc/pulse/client.conf
# common server config - only the first one get started on login
echo '
load-module module-native-protocol-tcp listen=127.0.0.1 auth-ip-acl=127.0.0.1 auth-anonymous=1
' >> /etc/pulse/default.pa
然后重启,登录,检查:
ps aux | grep pulseaudio
# should be sth
netstat -ltunp | grep pulseaudio
# should be sth
# play sample file
cvlc 'https://file-examples.com/wp-content/uploads/2017/11/file_example_OOG_1MG.ogg'