我当前正在运行 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秒的延迟,现在它正常工作。
关闭此主题!