Script Streamtests

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PhilF
User
Beiträge: 4
Registriert: Montag 14. November 2011, 11:31

Hi,

ich möchte mittels ffmpeg testen, ob ein TV stream verfügbar ist. Das ganze soll nach 20 sek beendet werden, sollte der Stream nicht erreichbar sein. leider weis ich nicht wie ich den Timeout in die os.system Funktion einbringe. kann mir jemand dabei helfen?

STREAMS = Feld mit Stream-Urls

Code: Alles auswählen

    for row in STREAMS:
        
        PINGCOMMAND = "ffmpeg -i "+str(row)+" > /dev/null 2>&1"
        #x = os.system("/root/timeout.sh")
        #print x
        print PINGCOMMAND
        cmd = os.system(PINGCOMMAND)
        print "CMD " + str(cmd)
        if cmd == 0:
            print str(row) + " ---> OK"
        else:
            print str(row) + " ---> FAILED"
            failedstreams.append(str(row))
        pass
    print "--------------"
    print "Failed STREAMS: " + str(failedstreams)
als Vorlange habe ich nur eine php Datei:

Code: Alles auswählen

#!/bin/bash
TIMEOUT=20

(
  ((t = TIMEOUT))
  while ((t > 0)); do
    sleep 1
    kill -0 $$ || exit 0
    ((t -= 1))
  done

  kill -s SIGTERM $$ && kill -0 $$ || exit 0
  sleep 1
  kill -s SIGKILL $$
) > /dev/null 2>&1 &
exec "$@"



STREAMSLEN=${#STREAMS[@]}
for (( i=0; i<"$STREAMSLEN"; i+=2 )); do
  echo "Testing ${STREAMS[i]} (${STREAMS[((i+1))]})" >> $LOGFILE
  $TIMEOUT ffmpeg -i udp://@${STREAMS[((i+1))]} > /dev/null 2>&1
  if [ "$?" == "1" ]; then
    echo "Stream ${STREAMS[i]} is OK" >> $LOGFILE
  else
    echo "ERROR: Stream ${STREAMS[i]} is not running!" >> $LOGFILE
    GOTERROR="true"
  fi
done
BlackJack

@PhilF: Die Vorlage ist ein Bash-Skript und kein PHP.

Bei `os.system()` bringst Du kein Timeout ein. Im Grunde auf eine ähnliche Art wie das Bash-Skript kannst Du das bei `subprocess.Popen` machen, was man sowieso `os.system()` vorziehen sollte. Es läuft also darauf hinaus den Unterprozess zu starten und dann bis zum Timeout regelmässig zu testen ob der Unterprozess schon abgearbeitet ist.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Hmmm Blackjack du hast mich jetzt davon abgehalten ein fertiges Script zu posten :D
PhilF
User
Beiträge: 4
Registriert: Montag 14. November 2011, 11:31

Die Vorlage ist ein Bash-Skript und kein PHP.
ups :oops:

Danke für die Antwort. Ich muss gestehen, dass ich nicht viel Erfahrung mit Scripten habe, geschweige von Subprozessen :cry:


Hmmm Blackjack du hast mich jetzt davon abgehalten ein fertiges Script zu posten :D


dafür wäre ich dir mehr als nur dankbar, wenn du es doch tun würdest :wink:
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Wie weit bist du denn mit dem Vorschlag vom BlackJack?
PhilF
User
Beiträge: 4
Registriert: Montag 14. November 2011, 11:31

derzeit bin ich noch nicht dazu gekommen, da was wichtigeres Inzwischen gekommen ist ;(
PhilF
User
Beiträge: 4
Registriert: Montag 14. November 2011, 11:31

kann geclosed werden , hat sich erledigt danke ;)
Antworten