Autostart vom Omxplayer

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Freunde,

    folgendes altes Skript habe ich gefunden und ausprobiert. Leider verliert der Player ständig den Stream.

    Laut Skript soll er aber den Stream dann aber neu starten. Was könnte der Fehler sein oder was müsste man ergänzen.

    #!/bin/bash

    echo "Videostreamer Startup"

    ######################################################## Single #############################################

    ##Assign location of this script to variable

    ##Used to restart script after connection is lost

    Script=/bin/startupstream.sh

    omxplayer -o hdmi -b --live rtsp://192.168.168.19/media/video3

    ##Find PID of omxplayer.bin

    #The brackets "[ ]" around the n prevent grep from returning itself

    #in the results of the ps command

    PID=$(ps ax | grep omxplayer.bi[n] | cut -d' ' -f2)

    echo "PID = $PID"

    ##Loop to test if connection is present every 60 seconds

    while [ $PID ];

    do

    sleep 5

    PID=$(ps ax | grep omxplayer.bi[n] | cut -d' ' -f2)

    done

    #If connection is not found to be present execute this command to retry every 15 seconds

    sleep 10

    exec $Script

    ###################################################################


    Über eure Hilfe werde ich mich sehr freuen.

    Wolke

  • Leider verliert der Player ständig den Stream.

    Da würde ich eher die Ursache suchen, statt diesem Würgarround.

    Was passiert, wenn Du z.B. omxplayer -o hdmi -b --live rtsp://192.168.168.19/media/video3 (der Stream aus dem Skript) im CLI / Terminal startest? Gibt es da auch Abbrüche?

  • Ausserdem ist das Skript doof. ;) Ein Skript, welches sich selber startet ist schon merkwürdig, da es gar nicht nötigt ist. Die Funktionalität omxplayer starten/prüfen und ggf. neu starten/prüfen kann in einer Schleife erfolgen. Aber erst mal die Ursache des Abbruchs herausfinden wie hyle geschrieben hat.

  • Danke für die Tips,

    ich glaube der Player verliert den Stream wenn WLAN schlechter wird, da es vermehrt zu bestimmten Zeiten auftritt.

    Vormittags, am späten Nachmittag und vorallem am Sonntag. Ich habe WLAN mal geprüft, der Ping setzt dann aus.

    Hallo hyle, ich weiß leider nicht was das "CLI/Terminal " ist welches ich zum Testen nutzen soll.

    Und dir daxb wäre ich dankbar wenn du mir aufschreiben könntest wie ich eine solche Schleife einrichten kann.

    Ich habe mich als Anfänger inzwischen richtig "durchgebissen" und alles mit viel Hilfe vom Forum hin bekommen

    aber diese Abbrüche vom Stream versuch ich schon lange zu beseitigen.

    Es ist übrigends kein Video sondern ein rtsp-Stream:

    omxplayer --avdict rtsp_transport:tcp --live --win 0,0,1024,600 rtsp://xxxxxxx:xxxxxx@192.168.xxx:554/live/ch1

    Einmal editiert, zuletzt von Wolke (7. Mai 2023 um 23:08)

  • Und dir daxb wäre ich dankbar wenn du mir aufschreiben könntest wie ich eine solche Schleife einrichten kann.

    Ich kann kein bash. Müsste dir wer anders helfen, oder selber lernen. Das ist aber der zweite Schritt. Es gilt erst die Ursache heraus zu finden und möglichst zu beseitigen.

  • Ich kann zwar nichts auprobieren, aber vielleicht funktionieren folgende Ideen:

    • Der --loop-Flag, vielleicht wird dann nach Abbruch der Stream neu gestartet
    • Das Timeout hochsetzen mit --timeout t (in Sekunden)

    Ansonsten das Script mit der Schleife:

    Am besten wäre es natürlich, das WLAN-Problem zu beseitigen, sei es durch LAN oder einen Repeater. Ob das möglich ist und sich lohnt, ist natürlich eine andere Sache.

  • Ich hatte mal ein ähnliches Problem mit WLAN es wechselte immer vom 2,4 und 5 GHz Band inc. Neuaufbau der Verbindung, vielleicht stellst Du es bei Dir, fest auf das 2,4 GHz Band ein!

    Ich bin Netzwerklaie aber bei mir hat’s geholfen.

    RaspbeeryPi 4B 4GB Rev: 1.4, RasbianOS.

    Seit kurzem noch ein Pi4 8GB mit Ubuntu!

  • Hi,

    danke für die Tips. Die Einstellungen und die Schleife werde ich ausprobieren. Es ist aber kein Video sondern ein RTSP-Stream der dort läuft.

    2,4 G ist eingestellt, Aber es liegt am WLAN. Die Latenz schwankt zeitweise so stark das selbst das Internet ausfällt. Es liegt nicht am Router

    sondern an der Telecom aber die zucken nur mit den Achseln.

    Danke erstmal melde mich nach Erfolg wieder.

  • Hallo zusammen,

    noch mal ein Versuch. Was könnte ich denn hier ändern damit der RTSP-Stream nach Abbruch neu gestartet wird,

    denn dafür ist dieser Teil vom Skript doch gedacht. Wiso nach 60 Sekunden bei "sleep 5" ?? ,und retry nach 15 Sekunden mit "sleep 10".

    Ich blicke nicht durch das ist für mich nicht logisch aber ich kann ja auch nicht programmieren.

    ##Loop to test if connection is present every 60 seconds

    while [ $PID ];

    do

    sleep 5

    PID=$(ps ax | grep omxplayer.bi[n] | cut -d' ' -f2)

    done

    #If connection is not found to be present execute this command to retry every 15 seconds

    sleep 10

    exec $Script

  • Ds Script, was du gepostet hast, ist eigentlich unnötig kompliziert. Vor allem ist Rekursion (dass sich das Script selbst aufruft) nicht nötig.

    Es gibt verschiedenste Wege, herauszufinden, ob ein Prozess mit einem bestimmten Namen läuft.

    Der in deinem Script fragt das OS nach allen Prozessen, die gerade laufen (ps ax) und filtert alles mit dem Namen omxplaxer heraus (grep omxplaxer.bi[n]).

    Aus irgendeinem Grund findet sich der ps... comand selbst, deshalb muss man diesen nochmal herausfiltern (cut -d' ' -2f).

    Einfacher würde es gehen mit pgrep, was vereinfacht gesagt die drei Commands in deinem Script in einem Command ist.

    Man könnte auch den Prozess versuchen zu killen, aber mit einem Signal, das nichts macht, und könnte an dem Ergebnis erkennen, ob der Prozess läuft.

    Danach wird das Ergebnis, ob der Player gerade läuft (in $PID) überprüft. Wenn der Player läuft, wird 5 Sekunden gewartet (sleep nimmt immer Sekunden, wenn man keine Einheit angegeben hat. Wie der Entwickler auf die Werte in den Kommentaren gekommen ist, keine Ahnung) und danach wieder überprüft, ob der Player läuft.

    Wenn der Player nicht mehr läuft, wartet das Script 10 Sekunden und startet sich dann selbst, wodurch der Player wieder gestartet und gemonitort wird.


    Hast du mein Script mal ausprobiert, und funktioniert das? Wenn du noch Fragen dazu oder zu was anderem hast, schreib gerne.

    Und, wenn du Code postest, packe den bitte in einen Codeblock, dann ist der besser lesbar und hat auch Syntax Highlighting.

  • Hallo bennetr,

    ich bin noch nicht dazu gekommen dein Skript zu probieren. Erstmal herzlichen Dank für deine Mühe. Ich werde eine neue

    SD Karte nehmen und das Programm mit dem Skript neu aufsetzen. Ausführbar machen und "der Dinge harren die da kommen".

    Melde mich dann wieder.

  • Hi bennetr,

    das skript funst leider nicht. Der Stream wird gestartet aber wenn er ausfällt kommt er nicht wieder. Vielleicht ligt es auch daran

    das es kein Video sondern ein RTSP-Stream einer Kamera ist.

    Der Grund ist übrigends dass das Wlan durch Überlastung kein Pakete überträgt und somit das Internet kurz ausfällt. Das liegt aber daran

    das zu viele im Netz sind. Auf dem weniger genutzten Kanal 13 ist der Fehler nicht so oft.

    Danke für deine Hilfe. :)

  • das skript funst leider nicht. Der Stream wird gestartet aber wenn er ausfällt kommt er nicht wieder

    Ich habe das nur mit nano als Programm testen können, aber da hat es funktioniert. Einen Unterschied zwischen Stream und Video sollte es beim abstürzen eigentlich nicht geben. Ich kann das die Tage mal mit omxplayer testen.


    Wie lang ist denn "kurz"? Wahrscheinlich ist die beste Lösung, das Timeout hochzustellen

  • Hallo,

    timeout habe ich noch nicht ausprobiert, weiß auch nicht an welcher Stelle ich das einsetzen muss, wie das geht.

    hyle hat 7.Februar 2022 gemeint das ein Neustart besser mit eine Systemd Unit gemacht wird. Der Link

    https://www.raspberrypi.com/do…x.html#creating-a-service funktioniert leider nicht mehr.

    Am liebsten wäre es mir ich bekäme ein fertige Skript in dem ich den Stream einfügen könnte.

    Nicht weil ich zu faul bin weil ich es alleine nicht kann. :helpnew:

    Wie lang ist denn "kurz"? Wahrscheinlich ist die beste Lösung, das Timeout hochzustellen

    kurz is ein Ausfall von ein paar Sekunden. wenn länger keine Pakete übertragen werden schätze 20-30 Sekunden startet das Skript nicht mehr.

    Wie kann man testen ob nur das Skript oder der Player abgestürzt ist. Das wäre vielleicht eine ander Vorgehensweise.

    Nichts für ungut :conf:

  • systemd ist auch ne gute Idee. Ne gute Seite für Linux-Sachen ist eigentlich immer UbuntuUsers, die haben auch was zu systemd-Units: https://wiki.ubuntuusers.de/systemd/Units/…e-Units-anlegen bzw. https://wiki.ubuntuusers.de/systemd/Service_Units/

    Außerdem kannst du gut in der Dokumentation nachlesen, was die einzelnen Zeilen bedeuten:

    https://www.freedesktop.org/software/syste…d.unit.html#bzw. https://www.freedesktop.org/software/syste…md.service.html

    In deinem Fall würde ich das so machen:

    Starten kannst du das mit systemctl --user start videostreamer, wenn du den Command systemctl --user enable videostreamer ausführst, sollte sich der Player auch beim Login von alleine starten. Wenn der Player abstürzt oder sich aus anderen Gründen schließt, wird er neugestartet. Stoppen kannst du das dann mit systemctl --user stop videostreamer

    Gib mal ne Rückmeldung, ob das funktioniert.

    Ach ja, für das Timeout musst du einfach zum omxplayer-Command das --timeout-Argument hinzufügen, am besten direkt nach dem Programmnamen: omxplayer --timeout 40 --avdict ...

    Kannst du auch in der systemd-Unit einstellen

  • hyle hat 7.Februar 2022 gemeint das ein Neustart besser mit eine Systemd Unit gemacht wird.

    hyle schrieb dann später mal:

    Oh! Da haben die das rausgenommen, aber zum Glück gibt es ja web.archive. ;)

    https://web.archive.org/web/2022052503…ating-a-service

    ;)

  • He Leute,

    ich weiß nicht was ich sagen soll. Nach monatelangem suchen, probieren, lesen von Berichten, frust und fast Verzweiflung.

    Es funktioniert !!!!! :bravo2: Mit eurer Hilfe habe ich doch noch eine ganze Menge dazugelernt.

    Heute ist der Stream einmal nicht neu gestartet, da ist wohl das Internet etwas länger weg gewesen. Hier werde ich

    einmal mit "Timeout" testen. Ansonsten - wenn viele ihren Senf dazu geben kann es eigentlich nur gelingen.

    Danke

Jetzt mitmachen!

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