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)
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