Prüfen, ob mplayer tatsächlich etwas abspielt

  • Hi,

    Ich habe einen Radiowecker in Python entwickelt, der mich morgends mit dem Livestream von SWR3 weckt.

    Als player verwende ich mplayer.

    Um den mplayer zu starten/zu stoppen, nutze ich folgenden Code:

    Um ein Verschlafen zu vermeiden, wenn die Internetverbindung verloren geht oder der Stream hängt oder nicht zu Stande kommt, möchte ich irgendwie prüfen, ob mplayer auch wirklich etwas abspielt.

    Falls nicht, würde ich ein lokales mp3 abspielen.

    Ich habe bisher 3 Ideen, um das zu prüfen:

    1. Hardware-Lösung: Ich vergleiche das Audio-Signal mit einem Komparator mit einer fixen Spannungsschwelle. Toggelt der Ausgang, den ich einlesen kann, dann spielt mplayer offensichtlich etwas ab.
    2. Auslesen der Audio-Samples, die Linux über den Soundtreiber ausgibt und prüfen, ob die sich ändern, da reichen ja wenige pro Sekunde. Ich habe keine Ahnung, wie ich per Python da dran komme.
    3. Prüfen, ob mplayer etwas abspielt. Aber wie komme ich an die Ausgabe von mplayer ran. Über pipes bin ich bisher gescheitert. Vielleicht auch, weil ich nicht verstehe, wie die funktionieren.
      Bei folgendem Code stoppt der mplayer nach einigen Sekunden die Wiedergabe. Außerdem wüsste ich nicht, wie ich an die Ausgabe selbst rankomme.
    Code
    self.proc = subprocess.Popen(self.mplayerArgs,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

    Hat jemand für die Ansätze 2 und 3 zusätzliche Tipps oder gibts vielleicht einen ganz anderen einfachen Weg?

    Michael

  • schau mal hier.

    http://www.mplayerhq.hu/DOCS/man/de/mplayer.1.html

    Bei Verwendung von mpd, würde ich einfach mpc (client) aufrufen und dort prüfen ob 'playing' drin steht.

    Ob dann allerdings ein Ton aus den Lautsprecher kommt kann man dann auch nicht sagen.

    Genauso wenn alles funktioniert, wie willst du sichergehen das die/der Lautspecher nicht kaputt, ein Draht dorthin ab ist etc. .

    100% Sicherheit gibt es nicht.

    Stell ein 2. Wecker hin.

    Einmal editiert, zuletzt von paulaner (16. März 2018 um 18:13)

  • Stell ein 2. Wecker hin.

    Aber sowas von full ack! Ein Wecker ist imho essenziell, der muss auch funktionieren, wenn Strom und Internetzugang weg sind. Ohne Prüfung, ob Töne aus den Lautsprechern kommen u.ä. - völlig autark.

  • schau mal hier.

    http://www.mplayerhq.hu/DOCS/man/de/mplayer.1.html

    Bei Verwendung von mpd, würde ich einfach mpc (client) aufrufen und dort prüfen ob 'playing' drin steht.

    Hmm, im verlinkten Artikel habe ich weder was zu mpd noch zu mpc gefunden. Was ist das?

    Zitat

    Ob dann allerdings ein Ton aus den Lautsprecher kommt kann man dann auch nicht sagen.

    Genauso wenn alles funktioniert, wie willst du sichergehen das die/der Lautspecher nicht kaputt, ein Draht dorthin ab ist etc. .

    100% Sicherheit gibt es nicht.

    Stell ein 2. Wecker hin.

    Ich will hier keine Raketentechnik entwickeln sondern nur den wahrscheinlichsten Fehler erkennen. Der ist nunmal ein ausgefallenes Internet, ausgefallenes WLAN oder ausgefallener Livestream.

    An kritischen Tagen stelle ich schon immer einen 2. Wecker.

    Michael

  • Gut, Gut.

    Der Link, man kann es lesen, bezieht sich auf den von dir benutzten 'mplayer'.

    Zitat:' Als player verwende ich mplayer.'

    Solltest du statt dessen mpd/mpc einsetzten, Kugelsuche ' man mpd' oder man mpc' hilft sicher weiter.

    Auch deine letzten Punkte:

    - Raspberry Internet überwachen

    - Raspberry WLAN überwachen

    - Raspberry Stream überwachen

    sind gute Suchbegriffe für Kugel.

    Ich habe mit einem 'Pretzelboard' (Arduino Nano + ESP (WLAN)) mal eine Internetverbindung überwacht, LED grün = gut, LED rot = keine Verbindung.

    Aber wie STF schon schrieb, mußt du auch eine Stromversorgung sicherstellen und überwachen (Raspberry, Router).

  • Hallo kle,

    Was würde man am PC machen um eine Verbindung mit dem Internet, speziell einer bestimmten Seite (Adresse) zu prüfen?


    Man 'ping' die an !!!

    Nichts anderes ist das.

    Somit hätte ich auch mehrere Abfragen damit erschlagen.

    1. geht mein WLAN

    2. hab ich eine Verbindung zum Internet

    Eine 'und' Verknüpfung, wobei bestimmte Dinge als erledigt gelten 'wenn Das und Das' nicht ist.

  • Was würde man am PC machen...

    das gilt nicht. Der PC hat eine 'real time clock' mit Batterie/Akku.

    Ich wollte nur einwerfen, daß der Raspi erst mit Internetverbindung die Uhrzeit weis. Wie sich eine Internetunterbrechung im laufenden Betrieb auf die Systemzeit auswirkt, sollte man wissen

    Schönen Gruß, kle

    PS: ein kritisches System sollte möglichst einfach sein, da bin ich bei STF 's Wecker, wenns um Bastelfreude und Lernen geht, ist auch ein Umweg über Australien denkbar.

  • Hallo kle,

    jetzt muß ich dir wiederspechen.

    Über die Genauigkeit lässt es sich auch streiten. eine 'real clock' hat auch seine Abweichung.

    'Was würde man am PC machen ...', war nur ein Wink mit dem Zaunfahl.

    Nicht für Kenner und Fortgeschrittene wie du einer bist.

    Wenn ich den RPi nutze, werde ich die Uhrzeit mir vom Router holen oder aber ich generiere sie mir aus der Laufzeit.

    Andere Möglichkeit, ich habe an den GPIO eine RTC Platine.

    Und es gilt für alle Netzwerkverbindungen, egal ob PC oder im besonderen Fall Raspberry (ist ja auch nicht Anderes),

    pingen heist das Schlagwort.

    Auch das der Raspberry erst die Uhrzeit weiß wenn er eine Internetverbindung hat, ist so nicht ganz richtig.

    Der Raspberry kann sich die Uhrzeit vom Router holen, ob genau, falsch, ist egal. Er kann sie auch selbst generieren.

    In deinen Fall Timeserver ist nur mit Internetverbindung möglich.


    Der Umweg über Australien, mhhh. Man kann auch mit Kanonen auf Spatzen ...

    Einmal editiert, zuletzt von paulaner (18. März 2018 um 12:44)

  • Guten Morgen,

    das mit dem MPD/MPC klingt sehr interessant. Werde ich mal genauer anschauen.

    Dass der Raspberry ohne Zeitserver aufgeschmissen ist, wäre mir neu. So lange kein Stromausfall war, läuft die "innere" Uhr doch einfach weiter. Weil keine RTC verbaut ist sondern der ungenauere Prozessorquarz den Takt bestimmt, dürfte sie relativ schnell wegdriften, aber das ist im Stunden bis Tagebereich doch völlig unkritisch.

    Michael

  • Soo,

    MPD läuft.

    Die Fernsteuerung über MPC ist genau das was ich brauche, perfekt.

    Wenn ich mir eine Playlist mit dem Livestream als ersten Eintrag generiere und danach MP3s reinhänge, dann spielt er bei nicht zustandekommendem Livestream oder abgebrochenem Livestream einfach das nächste MP3 ab. Da muss ich mich um nichts kümmern. Perfekt.

    Getestet habe ich das, indem ich in der Fritzbox einfach den Internetzugang während oder vor der Wiedergabe gesperrt habe.

    Michael

  • Freut mich das wir helfen konnten.

    Hier noch ein Tipp und etwas Interressantes.

    Router als Zeit Server

    https://www.com-magazin.de/tipps-tricks/n…en-1003528.html

    und für den Pi

    /etc/ntp.conf

    editieren


    http://www.e-heli-blog.de/2014/07/04/ntp…-pi-veraendern/

    kein reboot

    sudo service ntp restart

    oder

    sudo systemctl restart ntp


    Somit holt sich der Pi und jedes andere Gerät welches am Router (hier Fritzxxxx) hängt, seine Zeit.

  • Router als Zeit Server

    Und was genau ist gegenüber der outofthebox-Lösung der Vorteil?

    Hier übrigens der neue Code:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!