2017-12-18 46 views
0

안녕하세요! 처음 포스터, 오랜 시간 독자.Systemd 서비스 (파이썬 루프 -> ffmpeg 스트림)

나는 : 나는 아직도 raspbian (데비안 스트레치) 및 일반 파이썬의 초급/중급 사용자 해요,하지만 여기 간다

이 질문은, 나를 위해 조금 어렵다 현재 파이썬 조각 (, 필립스)를 통해 icecast2을 통해, 는 FFmpeg로 스트림을 실행. 내가 실행하는 systemd 서비스를 만든 부팅 (그림 2)에 파이썬 스크립트는 말했다 주로 icecast2 들어 있는지 한번 다른 모든 서비스가로드로드하기 위해 사용자 지정 대상 (Fig3)를 사용합니다.

여러 테스트를 수행했으며, 파이썬 코드에서 시작하거나 스트림에 연결된 서비스를 다시 시작하면 스트림이 제대로 작동합니다.

제 문제는 시스템을 재부팅 할 때 서비스가 약 15 초 동안 실행되고 스트림이 종료된다는 것입니다. 나는 파이썬systemd에서 많은 것을 읽었지 만 문제가있는 곳을 찾아 낼 수는 없습니다. 내 파이썬 코드, 단위로드 순서 및 아무것도 도움이 될 수있는 온라인으로 찾았지만, 아무것도 찾지 못했습니다.

, 필립스 (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) 

그림 2 (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 초 지연을 추가했으며 현재 제대로 작동합니다.

이 주제를 닫습니다!