我的设置
我安装了 Ubuntu 16.04 LTS 的 System 76 Kudu-Pro 笔记本电脑,并每隔几天定期升级。我使用 Unity 作为主桌面,有 12 个用户,我经常在他们之间切换以执行特定任务并进行安全隔离。
问题
我开始播放音乐,然后切换用户,音乐就停止了。即使我 ssh 到 localhost,取消设置 DISPLAY 环境变量,成为 root,然后通过命令播放音乐,也会发生这种情况 (播放器) 来自此会话。我第一次遇到这个问题是在 14.04 LTS 上,这是我使用 Unity 的第一个版本,并且预装在笔记本电脑上。当切换用户回到开始播放音乐的同一用户时,音乐会恢复。这也适用于浏览器播放的音频,例如 Youtube 视频。
我的问题
切换用户时如何播放继续播放的音乐(在虚拟背景中?)?另外:脉冲音频参与其中吗?
注意事项
如果解决方案需要 root 或 sudo 访问权限,我可以这样做。如果解决方案需要一些小规模编程,我可以用 C 和/或 Python 来做。我一直在想,一个可能的解决方法是获得一个 USB 音频设备,并希望这第二个音频设备能够工作。
答案1
在系统范围内运行 PulseAudio
在系统范围模式下运行 PulseAudio 时,只要授权用户登录,该用户启动的任何音频都将在后台播放。
在继续之前,请阅读以下内容,了解为什么通常在系统范围内运行不是一个好主意:
尽管如此,只要我们愿意,我们就可以做到这一点。只有授权账户才能控制音量或启动另一个声音输出实例。
准备在系统范围模式下运行 Pulseaudio
记下您所做的所有更改,以便在您不喜欢结果的情况下可以恢复它们(我在虚拟机中测试了这一切)。
为控制音频的用户禁用 pulseaudio 的自动生成
echo autospawn = no > $HOME/.config/pulse/client.conf
这可防止为给定的 $HOME 帐户自动生成 pulseaudio。此处的设置将覆盖系统范围的设置,当然
/etc/pulse
也可以选择进行设置。在用户模式下停止正在运行的 pulseaudio 实例
pulseaudio -k
准备所需的用户和组(如果它们尚不存在)
sudo addgroup --system pulse sudo adduser --system --ingroup pulse --home /var/run/pulse pulse sudo addgroup --system pulse-access sudo adduser pulse audio
允许用户访问系统范围的 PulseAudio
sudo adduser <username> pulse-access
只有添加的用户
pulse-access
才能控制正在播放的音频的音量。
在系统范围模式下启动 pulseaudio
sudo pulseaudio --system
来源及延伸阅读:将 PulseAudio 作为系统范围守护进程运行