Streamchecker...

Status
Für weitere Antworten geschlossen.

DjBenny

Benutzer
Kennt jemand eine Software bzw ein plugin mit dem ich überprüfen kann, ob auf einem Stream ein signal anliegt?

Entweder für Unix als Script bzw als Icecast / Shoutcast plugin.
Kann auch Windows sein.

Es sollte, sobald das Signal länger als n Minuten weg ist einen Befehl (Unix) ausführen bzw einen http (remote) Request ausführen können.

Benny
 
AW: Streamchecker...

es gibt in der XML ausgabe des shoutcast und des icecast, das nennt sich <STREAMSTATUS>X</STREAMSTATUS>

1 = sender aktiv, stream liegt an
0 = kein stream, sender inaktiv
 
AW: Streamchecker...

Nunja mir geht s nicht nur darum ob der Stream conected ist sondern ob auch ein Signal übertragen wird... Sprich fällt im Sender das Pult aus streamt der Client zwar Daten, aber der Hörer hört nichts...
 
AW: Streamchecker...

Mhmmm... habe jetzt kein Script parat, aber so in etwa müsste es gehen:

Mit mpg123 -w Dateiname.wav http://mein.stream.de:8080

in Dateiname.wav den Stream mitschneiden. Nach 10 Sekunden in einem zweiten Prozess den mpg123 killen.

Die WAV-Datei mit sox auf die durchschnittliche Lautstärke untersuchen (Effekt "stat") und dadurch auswerten, ob noch Signal da ist.

Gruss,

Christoph
 
AW: Streamchecker...

Vielen Dank:

sox Dateiname.wav -e stat
Samples read: 0
Length (seconds): 0.000000
Scaled by: 2147483647.0
Maximum amplitude: 0.000000
Minimum amplitude: 0.000000
Midline amplitude: 0.000000
Mean norm: nan
Mean amplitude: nan
RMS amplitude: nan
Maximum delta: 0.000000
Minimum delta: 0.000000
Mean delta: -0.000000
RMS delta: -0.000000
Rough frequency: -2147483648

Probably text, not sound
 
AW: Streamchecker...

Der Meldung nach war das zwar nicht ganz erfolgreich (Dateiname.wav war wohl leer), aber prinzipiell scheint es ja zu funktionieren :)

Christoph
 
AW: Streamchecker...

kann des am mpg123 liegen????weil wenn ich eine andere datei scannen lasse kommen ergebnisse raus
 
AW: Streamchecker...

Vielleicht kann der mpg123 auf Deinen Stream nicht zugreifen ?

Versuch es doch mal mit mpg123 -v http://DeineStreamAdresse.de und schau mal was er anzeigt...

Du darfst da keine Playlist angeben sondern direkt den MP3-Stream, wie er in der Playlist stehen wuerde...

Kann der mpg123 denn mit mpg123 -w Dateiname.wav Dateiname.mp3

die Datei "Dateiname.mp3" abspielen/konvertieren ? (bei Bedarf wieder -v verwenden)

Gruss,

Christoph
 
AW: Streamchecker...

Can't open /dev/dsp!
beim stream... aber er zeigt den user 127.0.0.1 aufm icecast an!
 
AW: Streamchecker...

Natürlich, das Script läuft direkt auf dem Streamserver.
Ich wollte nur damit sagen, dass mpg123 auf dem Icecast connected...

Dumm bin ich nicht..., dass 127.0.0.1 die IP des Lookback Interfaces ist (lo) ist mir durchaus seit über einem Jahrzehnt bekannt :)
 
AW: Streamchecker...

Can't open /dev/dsp heisst nur, dass der Rechner keine Soundkarte hat und mpg123 dehalb keinen Soundabspielen kann. Dann musst Du diesem Befehl auch ein -w Dateiname.wav hinzufügen, damit nicht auf die Soundkarte, sondern die Datei geschrieben wird.

Christoph
 
AW: Streamchecker...

kann es sein, dass wenn ich ihn kill er die wav nicht zuende schreibt und deswegen ein fehler auftritt
 
AW: Streamchecker...

Ich habe das gerade mal auf meinem Rechner gecheckt und konnte die WAV auslesen, nachdem ich den mpg123 gekillt hatte...

Gib mir mal bitte Deine Streamadresse (von aussen erreichbar), dann probiere ich mal, ob ich da was hinbekomme.

Christoph
 
AW: Streamchecker...

So,

habe mal ein wenig gebastelt und das ist rausgekommen:

Code:
 #!/bin/sh

URL=http://www.meinradio.de:8080
TESTLENGTH=10
THRESHOLD=1000

mpg123 -s -q -r 44100 $URL >/tmp/streamcheck.raw &
sleep $TESTLENGTH
killall mpg123
MAXVOL=`sox -c 2 -s -r 44100 -w -t raw /tmp/streamcheck.raw -t wav /dev/null stat 2>&1|grep "Maximum amplitude:"|cut -f 2 -d ":"`
PART1=`echo $MAXVOL|cut -f 1 -d "."`
PART2=`echo $MAXVOL|cut -f 2 -d "."`
MAXVOL=$PART1$PART2
if test $THRESHOLD -gt $MAXVOL ; then
        echo "Stream seems to have died."
fi

Die Parameter sind fast selbsterklärend: URL bestimmt, welcher Stream gecheckt wird, TESTLENGTH bestimmt, wie lange der Stream mitgeschnitten wird bevor die Auswertung stattfindet, THRESHOLD bestimmt, ab welchem von SOX gelieferten Wert Stille ist. Der THRESHOLD muss in 1/100000-Prozent angegeben werden, man stelle sich also die Ausgabe von Sox ohne den "." als Trennzeichen vor. Grund: Die Bash kann nur mit Integer rechnen.

Und: Die Ausgabe von mpg123 als WAV funktioniert tatsächlich nicht, ich schreibe jetzt RAW-Data.

Wichtig: Das Script killt ALLE mpg123 auf dem Rechner, d.h. entweder (=Dirty) unter einem unprivilegierten User laufen lassen... sollte man eh tun, oder (=sauberer) das Killen des Prozesses über die PID erledigen. Habe ich auf die Schnelle jetzt mal nicht geschrieben.

Der Code steht hiermit unter der GPL, Weiterentwicklungen bitte per Mail an mich oder hier posten. Danke!

Gruss,

Christoph
 
AW: Streamchecker...

Funktioniert perfekt.

Aber wenn der Mountpoint nicht online ist:

HTTP request failed: 404 File Not Found
mpg123: no process killed
Stream seems to have died.

Aber ansonsten sehr gelungen!
 
AW: Streamchecker...

sh test
Warning, flexible rate not heavily tested!
test: line 9: 15163 Terminated mpg123 -s -q -r 44100 $URL >/tmp/streamcheck.raw


Ich habe versucht einen mp3pro stream damit zu untersuchen.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben