如何在运行 chromium 之前等待pulseaudio?

如何在运行 chromium 之前等待pulseaudio?

我正在开发一个基于 Linux Linaro (Debian) OS 9.3 的嵌入式板 (Tinkerboard)。

该板基本上是一个(网页)信息亭,其中浏览器由 sh 脚本运行,其中包含启动时的自动脚本。信息亭需要播放几个由 js 事件触发的 mp3 文件。

大多数时候,音频不会被再现:如果我手动运行浏览器,音频总是可以的。

到目前为止,我发现 chromium 进程在pulseaudio 进程之前运行(基于 PID 值),所以我认为浏览器不会“连接”音频进程导致丢失。

我修改了脚本,如下所示:

 # Script.sh
 pulseaudio
 sleep 4s
 chromium -kiosk ....

这样,音频就可以了,但我不喜欢它..首先因为我不确定问题的原因。

有没有办法按照正确的顺序排列这些流程?

还有其他原因导致音频问题吗?

答案1

这似乎确切地明智的 init 系统解决的问题是:

以正确的顺序启动服务和程序,并在它们所依赖的事物准备就绪时启动;不早于上次启动,也不是固定的晚 4 秒,“只是为了确保”。

在 Debian 9 上,您可以使用 systemd 服务来启动运行 wayland 或 Xorg 的用户会话,然后在其中启动并显示 chromium。

而不是手动地一个接一个地启动进程,而不需要实际上检查他们是否已经开始:

您只需定义一个 chromium-kiosk.service 用户服务,该服务依赖于pulseaudio.service;启动它将等到pulseaudio 服务启动。很多地方都解释了如何做到这一点,例如这里

这样做的其他优点包括在 chromium 崩溃时自动重新启动、记录启动失败、使 chromium 进程本身成为其他服务的要求的能力。最重要的是,您实际上可以说“嘿,为了完整启动,您需要启动 chromium”,并且您的系统将确保启动所需的一切。

相关内容