切换用户时,在Unity中播放音频会停止
我的设置
使用Ubuntu 16.04 LTS的System 76 Kudu-Pro笔记本电脑,我每隔几天就会安装并定期升级。 我使用Unity作为我的主要桌面,我经常切换12个用户来执行特定任务和安全隔离。
问题
我开始播放音乐,然后切换用户,音乐停止。 如果我ssh到localhost,取消设置DISPLAY环境变量,成为root,并通过此会话中的命令( mplayer )播放音乐,这甚至会发生。 我第一次在14.04 LTS遇到这个问题,这是我使用Unity的第一个版本,并预装在笔记本电脑上。 当用户切换回开始播放音乐的同一用户时,音乐将恢复。 这也适用于浏览器播放的音频,例如Youtubevideo。
我的问题
当我切换用户时,如何播放继续播放的音乐(在虚拟背景中?)? 另外: PulseAudio参与了吗?
注意事项
如果解决方案需要root或sudo访问权限,我可以这样做。 如果解决方案需要一些小规模的编程,我可以用C和/或Python来做。 我一直在想,一个可能的解决方法是获得一个USB音频设备,并希望这第二个音频设备可以工作。
在系统范围内运行PulseAudio
在系统范围模式下运行PulseAudio时,只要此用户登录,授权用户启动的任何音频都将在后台播放。
在继续之前,请阅读以下内容,了解为什么通常在系统范围内运行不是一个好主意:
- 系统模式有什么问题?
不过,如果我们愿意,我们可以这样做。 只有授权帐户才能控制音量或启动另一个声音输出实例。
准备系统以在系统范围模式下运行Pulseaudio
记下您所做的所有更改,以便在您不喜欢结果的情况下还原它们(我在虚拟机中测试了所有这些)。
-
为将控制音频的用户禁用pulseaudio的autospawn
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
pulse-access 只有添加到
pulse-access
用户才能控制播放音频的音量。
在系统范围模式下启动pulseaudio
sudo pulseaudio --system
来源和进一步阅读:将PulseAudio作为系统范围的守护进程运行