reached EOF, but we are in stream mode. delaying 1 second.

  • Hallo!


    ich habe zuhause eine DM820, die als Server-Box dient und bei meiner Freundin eine DM520 als Client stehen. Ich streame viele Sender von zuhause zu ihr per rtsp in 720p, weil sie leider nur DVB-T empfangen kann. Das funktioniert soweit super.


    Sogar Aufnahmen und Timeshift kann die DM520 von den gestreamten Sendern machen. Kurioserweise ist die Wiedergabe von Timeshift allerdings fast unmöglich. Alle paar Minuten wird die Wiedergabe pausiert. Ein kurzer Druck auf die "play"-Taste und es geht weiter.


    Das sieht dann im Log ungefähr so aus:


    Ein längeres Log ist im Anhang.

  • Ja, da habe ich noch keine Beeinträchtigung festgestellt. Ich habe auch testweise ohne Probleme per "Rec"-Button eine Aufnahme gestartet, 5 Minuten gewartet, diese Aufnahme abgespielt während noch weiter aufgenommen wird und über 30 Minuten ohne Unterbrechung schauen können. Ist ja quasi ähnlich zu Timeshift.
    Nur wenn ich per Start/Stop-Taste das echte Timeshift aktiviere, kurz warte und dann abspiele, hängt die Wiedergabe nach einiger Zeit. Mal kann man 5 Minuten gucken, mal hängt sie direkt nach 1 Minute.


    Nehme ich Videos manuell auf und schaue mir sie an während die Aufnahme noch läuft, sieht das Log so aus:



    usw.



    Bei Timeshift sieht es so aus:



    Kurios finde ich auch, dass die Fehlermeldung immer ein 1 Sekunden Delay angibt, aber der Status noch in der selben Sekunde auf "Pause" geändert wird.

  • Ich habe übrigens das gleiche Problem, wenn ich nicht-transkodiert (also von Port 8001) streame. Aufnahmen können unterbrechungsfrei abgespielt werden, bei Timeshift muss ich immer wieder auf Play drücken, weil das Abspielen unterbrochen wird (egal wieviel Zeit ich im "Rückstand" bezigen auf das Live-Programm bin).
    Jemand eine Idee?

  • Hmm verstehe ich das richtig... der Sender kommt übers Netz.. also ihr streamed einen sender über Netz.. nicht vom lokalen Tuner.


    Dann startet ihr Timeshift auf diesem gestreamten sender...


    Und hmm wo landet das Timeshift?


    Das geht vermutlich dann auch übers Netz auf irgendein NAS oder so?


    Also kein lokaler Datenträger?


    Weil eigentlich wenn dort EOF kommt.. dann heisst das, dass beim lesen der Daten aus der timeshift datei etwas schief gegangen ist.. also keine Daten gelesen werden konnten.


    Das finde ich gerade etwas merkwürdig... da wäre es interessant, ob es einen Unterschied macht ob man lokal auf einen usb stick timeshiftet oder übers Netz...


    Und dann wäre noch die Frage was für ein Netzwerk Dateisystem ist es.. CIFS/NFS?


    cya

  • Richtig ist, dass über's Netz gestreamed wird.


    Falsch ist, dass auf NAS gespeichert wird. In der Client-Box steckt ein USB-Stick, auf dem landen sowohl die Aufnahmen, als auch Timeshift.


    Ich kann ganze Filme problemlos aufnehmen. Auch kann ich eine normale Aufnahme starten, kurz warten und diese dann abspielen und somit versetzt fernsehen.


    Mache ich das allerdings nicht per Aufnahme, sondern mit der Timeshift-Funktion, dann wird die Wiedergabe dauernd pausiert. Ich kann sofort auf Play drücken und es geht weiter, aber das dauernd machen zu müssen nervt natürlich. Timeshift wird auch nicht angehalten - was ja bei einem Schreibfehler normalerweise passieren müsste, sondern die TS-Aufnahme läuft normal weiter. Lediglich bei der Wiedergabe muss ich diese dauernd wieder starten, weil pausiert wird.

  • selbes bei mir. Ich schaue über SAT>IP und hab PTS laufen auf eine SSD in der 900, damit funktioniert es. 'Schau ich aber einen Gestreamten Sender von meiner DM920 und ich timeshifte, bleibt es immer wieder willkürlich stehen. Etwas Nerfig das ganze, war aber unter OE2.0 auf meiner DM8000 auch schon so!

  • Ach so, dachte du hast ausschliesslich Sat>IP
    Und ohne pts ist das Problem auch?
    Bei Sat>IP gehst du aber direkt auf den Sat>IP Server? Da brauchst du ja keine Dreambox als Server. Oder transponder die Dreambox dann für über's Internet?

  • Habe gerade nochmal geschaut.
    Wenn man per Timeshift die aktuelle Sendung anhält, aber noch nicht startet, kommt auch folgendes immer mal wieder im Log:


    reached EOF, but we are in stream mode. delaying 1 second.
    eDVBChannel: End of file!


    Der Fehler scheint also nicht durch die Wiedergabe zu kommen, sondern bei der Aufzeichnung zu entstehen.


    Trotzdem wird korrekt aufgezeichnet. Ich kann nämlich das temp Timeshift-File kopieren und später - nachdem Timeshift beendet wurde - problemlos anschauen.


    Starte ich allerdings per Play-Button die Timeshift-Aufnahme, während sie noch aufgezeichnet wird, dann wird sie immer wieder pausiert. Und das nicht etwa immer an der gleichen Stelle, sondern immer genau dann, wenn der Fehler oben ins Log geschrieben wird.


    Das sieht für mich so aus, als wenn die Wiedergabe aufgrund eines Fehlers, der eigentlich bei der Aufnahme entsteht (aber diese nicht behindert), pausiert wird, obwohl das gar nicht nötig wäre.

  • @Ghost: Fehler reproduzierbar, gefunden und Workaround gebastelt


    Der Fehler tritt immer auf, wenn die Datenübertragung des Streams mal kurz aussetzt, weil bspw. die Internet-Verbindung gerade einen Schluckauf hat. Dann kommt ein iPlayableService.evEOF Event und __evEOF() in InfoBarGenerics.py wird aufgerufen. Daher wird die Wiedergabe pausiert (auch wenn das Event eigentlich irgendwo bei der Aufnahme entstanden ist).


    Das Event wird übrigens nicht gesendet, wenn die Datenübertragung beim normalen Fernsehen (eines gestreamten Senders) aussetzt. Nur wenn gleichzeitig Timeshift läuft, wird das Event getriggert.


    Wie dem auch sei, ich habe mir folgenden Workaround gebastelt und kann jetzt ohne Probleme per rtsp gestreamte Sender timeshiften. Selbst bei heftiger anderweitiger Auslastung der Internetverbindung entstehen zwar Bildfehler in der Aufnahme - aber die Wiedergabe hält nicht mehr an:


    Diff
    1. --- a/Screens/InfoBarGenerics.py
    2. +++ b/Screens/InfoBarGenerics.py
    3. @@ -1286,6 +1286,9 @@
    4. return False
    5. def __evEOF(self):
    6. + if self.seekstate == self.SEEK_STATE_PLAY and self.timeshift_enabled:
    7. + return
    8. +
    9. if self.seekstate == self.SEEK_STATE_EOF:
    10. return


    Das ist aber natürlich kein Fix, sondern nur ein Workaround und der eigentliche Fehler, der dafür sorgt, dass das EOF-Event überhaupt erst verschickt wird, müsste im Core behoben werden, denke ich.


    Edit: Da self, wie ich gerade feststellen musste, auch durchaus mal ein EMCMediaCenter Objekt o.ä. sein kann, müsste man das bspw. noch in einen try except Block, der AttributeError abfängt, legen.

  • Habe auch das in ein Plugin ausgelagert, damit ein enigma update den Fix nicht überschreibt.
    Einfach installieren - man sieht das Plugin nirgends, außer dass im journal "preventing pause" auftaucht, wenn verhindert wird, dass die Timeshift-Wiedergabe unnötigerweise angehalten werden würde.

  • werde ich mal versuchen wenn ich zeit habe. Ganz rund läuft es aber trotzdem nicht. Wenn ich jetzt Zeitversetzt schaue, hat er Probleme beim Aufnehmen der Live Sendung. Es kommt immer wieder zu kurzen Rucklern dann. Alles was ich Live schaue und dann zurückspule hat diese Ruckler nicht. Da wird wohl noch etwas anderes schieflaufen.