Systemd service (python loop -> ffmpeg stream)



我当前正在运行 ffmpeg ,通过 icecast2 通过 python > fig1 )。我已经创建了一个 Systemd 运行的服务 python boot上的脚本( fig2 )并使用自定义目标( fig3 要确保加载其他每个服务后,主要用于 icecast2

我已经进行了多次测试,如果从Python代码启动,或者我重新启动附加的服务,则该流可以正常工作。

我的问题是,在系统的(重新)引导上,该服务运行大约15秒,然后流dies。我已经在 python Systemd 上读到了很多东西,但是我无法确定问题所在的地方。我尝试更改我的 python 代码,单位加载订单以及我在网上找到的其他任何可能会有所帮助的东西,但什么也没有找到。

fig1 (dxstream.py)

import sys
import time
import subprocess
def start():
    return subprocess.Popen(r’ffpmeg -re -f alsa -ac2 -i hw:1,0 -acodec mp3 -ab 320k -f mp3 icecast://sourcehackme@localhost:8000/stream', shell=True)
testProcess = start()
while True:
    res = testProcess.poll()
    if res is not None:
        testProcess = start()
    time.sleep(1)

fig2 (dxstream.service)

[Unit]
Description=ffmpeg stream starter
After=multi-user.target
[Service]
Type=idle
Execstart=/usr/bin/python /usr/local/bin/dxstream.py
Restart=on-failure
[Install]
WantedBy=custom.target

fig3 (custy.target)

[Unit]
Description=Custom Target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes

我已经为FFMPEG流进行了报告,并跟踪单元的启动过程,并且似乎正在过早地创建了iCecast的链接,而Icecast仍在初始化。我为第一个启动的脚本本身添加了30秒的延迟,现在它正常工作。

关闭此主题!

最新更新