在 su 到 root 之后 pulseaudio 没有声音,没有配置默认音频设备

在 su 到 root 之后 pulseaudio 没有声音,没有配置默认音频设备

这种行为至少在 Ubuntu 13.10 和 Ubuntu 14.04 中有所体现。

我正在通过命令行中play的软件包命令播放声音sox。对于我这个登录 X 的用户来说,它运行良好。但是,当我以 root 身份执行 su 时,它就不再起作用了:

% play /usr/share/sounds/alsa/Front_Center.wav
play FAIL sox: Sorry, there is no default audio device configured

在我运行这个命令时,它运行正常。这是应该的吗?

这是我安装的 sox 包(即,我已经安装了 libsox-fmt-pulse):

ii libsox-fmt-base:amd64  amd64 Minimal set of SoX format libraries
ii libsox-fmt-mp3:amd64  amd64 SoX MP2 and MP3 format library
ii libsox-fmt-pulse:amd64  amd64 SoX PulseAudio format I/O library
ii libsox2:amd64  amd64 SoX library of audio effects and processing
ii sox  amd64 Swiss army knife of sound processing

答案1

Ubuntu 中的 Pulseaudio 配置为使用每个用户会话。这意味着,虽然普通用户帐户可以轻松访问它,但正如您所体验到的,它并未配置为同时由其他用户(例如 root)使用。

这不是一个错误;根据 Ubuntu 附带的配置,这是正常行为。

“我花了很多时间在网上研究、测试各种设置并与 Pulseaudio 开发人员交流。最重要的是,在正常用户模式下运行 pulseaudio 将只允许 ConsoleKit 标记的活动会话访问音频硬件。”

来源:https://help.ubuntu.com/community/MultiseatX

其中有一些关于如何配置 Pulseaudio 作为系统范围实例运行而不是使用每个用户配置的信息,但这并非没有缺点。

来自 pulseaudio 手册页:

--system[=BOOL] 作为系统范围实例运行,而不是每个用户运行。请注意,这会禁用 PulseAudio 的某些功能,除非系统不知道本地用户(例如是瘦客户端),否则通常不建议这样做。此功能需要特殊配置和专用 UNIX 用户设置。强烈建议将其与 --disallow-module-loading 结合使用(见下文)。

您最好首先考虑一下为什么要让 root 播放音频,并确定没有更好的方法来完成您要做的事情。如果您必须允许多个用户同时访问 pulseaudio,那么这就是您要考虑的路线。

相关内容