切换用户时,在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

记下您所做的所有更改,以便在您不喜欢结果的情况下还原它们(我在虚拟机中测试了所有这些)。

  1. 为将控制音频的用户禁用pulseaudio的autospawn

    echo autospawn = no > $HOME/.config/pulse/client.conf 

    这可以防止为给定的$ HOME帐户自动生成pulseaudio。 此处的设置将覆盖/etc/pulse的系统范围设置,当然也可以替换。

  2. 在用户模式下停止正在运行的pulseaudio实例

     pulseaudio -k 
  3. 准备所需的用户和组(如果它们尚不存在)

     sudo addgroup --system pulse sudo adduser --system --ingroup pulse --home /var/run/pulse pulse sudo addgroup --system pulse-access sudo adduser pulse audio 
  4. 允许用户访问系统范围的PulseAudio

     sudo adduser  pulse-access 

    只有添加到pulse-access用户才能控制播放音频的音量。

在系统范围模式下启动pulseaudio

 sudo pulseaudio --system 

来源和进一步阅读:将PulseAudio作为系统范围的守护进程运行