当我切换用户时,在 Unity 中播放音频停止

Ska*_*ren 2 sound unity 16.04

我的设置

我安装了带有 Ubuntu 16.04 LTS 的 System 76 Kudu-Pro 笔记本电脑,并每隔几天定期升级一次。我使用 Unity 作为主要桌面,有 12 个用户,我经常在这些用户之间切换来执行特定任务和安全隔离。

问题

我开始播放音乐,然后切换用户,音乐停止。如果我 ssh 到 localhost、取消设置 DISPLAY 环境变量、成为 root 并通过此会话中的命令 ( mplayer )播放音乐,甚至会发生这种情况。我第一次遇到这个问题是在 14.04 LTS 上,这是我使用 Unity 的第一个版本,并且预装在笔记本电脑上。当将用户切换回开始播放音乐的同一用户时,音乐将恢复。这也适用于浏览器播放的音频,例如 YouTube 视频。

我的问题

当我切换用户时,如何播放继续播放的音乐(在虚拟背景中?)?另外:PulseAudio参与其中吗?

注意事项

如果解决方案需要 root 或 sudo 访问权限,我可以这样做。如果解决方案需要一些小规模编程,我可以使用 C 和/或 Python 来完成。我一直在想一个可能的解决方法是购买一个 USB 音频设备,并希望第二个音频设备能够正常工作。

Tak*_*kat 5

在系统范围内运行 PulseAudio

在系统范围模式下运行 PulseAudio 时,只要授权用户登录,该用户启动的任何音频都将在后台播放。

在继续之前,请阅读以下内容,了解为什么通常在系统范围内运行不是一个好主意:

尽管如此,如果我们愿意的话,我们还是可以做到的。只有授权帐户才能控制音量或启动另一个声音输出实例。

准备系统以在系统范围模式下运行 Pulseaudio

记下您所做的所有更改,以便能够在您不喜欢结果时恢复它们(我在虚拟机中测试了所有这些)。

  1. 为将控制音频的用户禁用pulseaudio的自动生成

    echo autospawn = no > $HOME/.config/pulse/client.conf
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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

    sudo addgroup --system pulse
    sudo adduser --system --ingroup pulse --home /var/run/pulse pulse
    sudo addgroup --system pulse-access
    sudo adduser pulse audio
    
    Run Code Online (Sandbox Code Playgroud)
  4. 允许用户访问系统范围的 PulseAudio

    sudo adduser <username> pulse-access
    
    Run Code Online (Sandbox Code Playgroud)

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

在系统范围模式下启动pulseaudio

sudo pulseaudio --system
Run Code Online (Sandbox Code Playgroud)

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