如何解决PulseAudio连接测试失败:无法连接到pulseaudio服务器?

问题描述 投票:0回答:1

几天来,我一直在尝试设置一个在 debian 上运行并通过蓝牙传输音乐的 python 服务。蓝牙部分工作正常。我正在使用

dbus
。问题出在 debian 计算机上运行的“pulsectl”脉冲音频服务。错误如下。它一直告诉我找不到 `/run/user/1001/pulse` 目录,但是当我执行 `ls` 时它已经在那里了。

:Failed to create secure directory (/run/user/1001/pulse): No such file or directoryNov 28 14:32:59 triton python3[550]: ERROR app.root - PulseAudio connection test failed: Failed to connect to pulseaudio serverNov 28 14:32:59 triton python3[550]: ERROR app.root - Cannot connect to PulseAudio server. Exiting...

我有一些逻辑首先检查 `pulsectl` 是否已连接,这就是它中断的地方:

def test_pulseaudio_connection():
    try:
        with pulsectl.Pulse("test-connection") as pulse:
            return True
    except Exception as e:
        logging.error(f"PulseAudio connection test failed: {e}")
        return False


if __name__ == "__main__":
    os.environ["XDG_RUNTIME_DIR"] = f"/run/user/{os.getuid()}"

    # First, test the PulseAudio connection
    if not test_pulseaudio_connection():
        logging.error("Cannot connect to PulseAudio server. Exiting...")
        exit(1)  # Exits the program if PulseAudio is not running

此外,我还设置了 systemd 服务文件,并在那里传递了环境文件,并选择用户来运行此文件等,因为我读到它不应该是运行pulseaudio服务的根用户。

[Service]ExecStart=/usr/bin/python3 /opt/backend/src/app.py
WorkingDirectory=/opt/backend/src
Environment="XDG_RUNTIME_DIR=/run/user/1001"
Environment="ENVIRONMENT=development"
User=user
Group=audio
Group=root
Restart=always
[Device]
DeviceAllow=/dev/ttyRS232_A rw
[Install]WantedBy=multi-user.target

我不知道为什么它一直显示此错误。

python debian dbus pulseaudio
1个回答
0
投票

但是当我这样做时

ls
它已经在那里了

用户运行时目录不是在启动时创建的——它们的存在与交互式登录会话的存在相关。因此,在您登录后,它已经“已经存在”了,但在您登录检查之前,当服务在系统引导期间启动时,它还没有“已经存在”。 使用

loginctl enable-linger $USER

配置 systemd 以在启动时创建用户的运行时目录(以及在启动时启动该用户的个人“systemctl --user”服务)。

然后,添加 

[email protected]

依赖项以确保事情按正确的顺序发生,或者(最好)将整个服务转换为 ~/.config/systemd/user/ 中的“--user”服务。

    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.