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

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

我的设置

我安装了 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

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

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

    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 <username> pulse-access
    

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

在系统范围模式下启动 pulseaudio

sudo pulseaudio --system

来源及延伸阅读:将 PulseAudio 作为系统范围守护进程运行

相关内容