2017-12-18 28 views
0

なぜこんにちは!初めてのポスター、長い時間の読者。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 

誰かが解決策に向かって一般的なポインタを私に与えることができたら、私は無限に感謝します!

ありがとうございます。

答えて

0

ffmpegストリームのレポートをオンに設定し、ユニットの起動プロセスを追跡しました。IceCastがまだ初期化されている間に、IceCastへのリンクを早期に作成していたようです。最初の起動時にスクリプト自体に30秒の遅延を加えましたが、今は正常に動作しています。

このトピックを閉じる!

関連する問題