我的设置
我安装了带有 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 音频设备,并希望第二个音频设备能够正常工作。
在系统范围模式下运行 PulseAudio 时,只要授权用户登录,该用户启动的任何音频都将在后台播放。
在继续之前,请阅读以下内容,了解为什么通常在系统范围内运行不是一个好主意:
尽管如此,如果我们愿意的话,我们还是可以做到的。只有授权帐户才能控制音量或启动另一个声音输出实例。
记下您所做的所有更改,以便能够在您不喜欢结果时恢复它们(我在虚拟机中测试了所有这些)。
为将控制音频的用户禁用pulseaudio的自动生成
echo autospawn = no > $HOME/.config/pulse/client.conf
Run Code Online (Sandbox Code Playgroud)
这可以防止给定 $HOME 帐户自动生成pulseaudio。此处的设置将覆盖系统范围的设置,/etc/pulse当然也可以在系统范围内进行设置。
在用户模式下停止正在运行的pulseaudio实例
pulseaudio -k
Run Code Online (Sandbox Code Playgroud)准备所需的用户和组(如果它们尚不存在)
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)允许用户访问系统范围的 PulseAudio
sudo adduser <username> pulse-access
Run Code Online (Sandbox Code Playgroud)
只有添加的用户pulse-access才能控制正在播放的音频的音量。
sudo pulseaudio --system
Run Code Online (Sandbox Code Playgroud)
来源和进一步阅读:将 PulseAudio 作为系统范围的守护进程运行
| 归档时间: |
|
| 查看次数: |
3689 次 |
| 最近记录: |