なぜこんにちは!初めてのポスター、長い時間の読者。Systemdサービス(Pythonループ - > ffmpegストリーム)
私はまだ初心者/中間raspbianのユーザー(Debianのストレッチ)と一般的にのpythonんだけど、ここに行くようにこの質問は、私にとっては少し難しいです:
私は現在パイソンスニペット(FIG1)を介しicecast2を通して、ffmpegのでストリームを実行しています。私は実行するためににsystemdサービスを作成したブート(FIG2)にのpythonスクリプトが言った、ほとんどicecast2のために、必ず一度、他のすべてのサービスがロードされてロードするためにカスタムターゲット(Fig3)を使用します。
私は複数のテストを行っていますが、ストリームはPythonコードから起動した場合や、接続されているサービスを再起動した場合に正常に動作します。
私の問題は、システムの(再)起動時に、サービスが約15秒間実行されてからストリームが消滅することです。私はの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://[email protected]: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(custom.target)
[Unit]
Description=Custom Target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
誰かが解決策に向かって一般的なポインタを私に与えることができたら、私は無限に感謝します!
ありがとうございます。