如何在无头服务器上禁用 Pulseaudio 系统模式并使用正常的 systemd 每个用户服务?

如何在无头服务器上禁用 Pulseaudio 系统模式并使用正常的 systemd 每个用户服务?

我尝试了 askubuntu 和其他来源的许多不同建议,但目前我真的陷入困境。

我正在尝试使用以下设置配置无头服务器:

  1. 线路输出至扬声器。
  2. 无论服务器上播放什么内容,都应将线路“转发”到扬声器。
  3. 输出到 snapcast 的 MPD 实例,又输出到“线路输出”扬声器。

我逐渐明白,我需要结合使用 Pulseaudio 和 ALSA 才能实现此功能,因为 ALSA 实际上并不支持同一声卡上的多个音频源。

由于某种原因,当我安装 pulseaudio 时,它会以系统模式启动,但我不知道为什么。Htop 显示以下进程(全部以 root 用户身份运行):

s6-supervise pulseaudio
pulseaudio --system -vvv --disallow-exit --exit-idle-time=-1 --disable-shm
pulseaudio --system -vvv --disallow-exit --exit-idle-time=-1 --disable-shm
pulseaudio --system -vvv --disallow-exit --exit-idle-time=-1 --disable-shm

但据我所知,没有 systemd 服务可以启动此功能:

$ sudo systemctl status pulseaudio.service
Unit pulseaudio.service could not be found.
$ sudo systemctl status pulseaudio.socket
Unit pulseaudio.socket could not be found.

我正在运行 Ubuntu 服务器:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:        20.04
Codename:       focal

Alsamixer 显示所有播放源均未静音(绿色 00)。但我无法连接到 Pulseaudio:

$ pulsemixer
Failed to connect to pulseaudio: Connection refused

尽管所有用户都有权访问脉冲访问:

$ grep pulse-acc /etc/group
pulse-access:x:125:ruben,_snapclient,openhab,snapserver,pulse,root

并且我在 /etc/pulse/{default|system}.pa 中配置了以下内容:

load-module module-native-protocol-unix auth-group-enable=true auth-group=pulse-access socket=/tmp/pulse-socket

在 /etc/pulse/client.conf 中:

default-server = unix:/tmp/pulse-socket

也从未创建过/tmp/pulse-socket。我的问题如下:

我该如何解决这一混乱,禁用系统模式并在无头服务器上结合 snapcast 使用每个用户的 Pulseaudio?

如果缺少任何信息,请告诉我。

答案1

事实证明,这与在系统模式下运行的 Pulseaudio 的“正常”版本无关,而是我的 Homeassistant Supervised 实例接管了主机系统的音频,请参阅https://github.com/home-assistant/plugin-audio/issues/12了解详情。

所以现在我将恢复到 Homeassistant 核心,希望问题能够得到解决。

相关内容