Beiträge von maluhi

    Ich weiß gar nicht wo euer Problem liegt. Wenn es kein NAS sein soll, dann benutzt einfach die Dreambox. Und wenn der enthaltene DLNA-Server euch zu schlecht ist, dann benutzt twonky. Ist in ein paar Minuten aufgesetzt und läuft auf meiner dm820 super - benutze ich aber trotzdem nicht, sondern lieber die Synology - aber einfach nur deshalb, weil dort mehr Platz drauf ist und ich in der DM keine riesen HDD brauche :smiling_face:


    Für mipsel Boxen: http://www.twonkyforum.com/dow…ipsel-glibc-2.3.2-8.5.zip (habe ich getestet und läuft)


    Und die paar € für Twonky wird man wohl über haben, wenn man dadurch die Anschaffung eines NAS vermeidet.


    Edit: Für dm900 und dm920 mal das probieren: http://www.twonkyforum.com/dow…mel-glibc-2.15-hf-8.5.zip

    Also meine Synogy DiskStation von 2009 hat bis heute nicht versagt und tut weiter ihre Dienste. Und die war damals schon ein bezahlbares NAS. Die heutigen haben noch weitaus mehr Features. Aber schon meine kann alles per DLNA bereitstellen und aktualisiert die DB quasi sofort, wenn man Änderungen per FTP, Webinterface, etc. an einzelnen Filmen vornimmt, ohne alles andere neu zu scannen.

    Code
    /data/picon_50x30 /usr/share/enigma2/picon_50x30 none defaults,bind 0 0

    Wenn ich das richtig im Kopf habe, existiert aber nach dem Flashen der Ordner /usr/share/enigma2/picon_50x30 gar nicht. Den müsstest Du eh manuell anlegen.. und ob man den nun anlegt, oder einen Symlink auf /data/picon_50x30 erstellt dürfte doch ziemlich egal sein, oder?

    @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
    --- a/Screens/InfoBarGenerics.py
    +++ b/Screens/InfoBarGenerics.py
    @@ -1286,6 +1286,9 @@
     		return False
     	def __evEOF(self):
    +		if self.seekstate == self.SEEK_STATE_PLAY and self.timeshift_enabled:
    +			return
    +
     		if self.seekstate == self.SEEK_STATE_EOF:
     			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.

    Einfach mal das apt manual lesen, verstehen wie man mehrere repositories hinzufügt, den zusätzlichen repos per pin priority eine niedrige Priorität zuweist und evtl. einigen Paketen eine höhere - und es läuft automatisch.
    Ich habe zB das originale DMM-Image mit dem GP3-Feed (ohne GP3 installiert zu haben) für z.B. Picon-Pakete, merlin4-covercollection usw. und noch den nn2 Feed für ein Paket, das ich jetzt nicht nenne :). Hatte aber auch schonmal den oozoon-Feed zusätzlich drin.
    Das ist alles kein Problem, solange man versteht was man macht. Kann aber zu großen Problemen führen, wenn man da was falsch priorisiert. Daher werde ich hier auch keine Anleitung posten. Entweder apt manual selbst lesen und verstehen - oder es besser bleiben lassen.

    Du kannst in den Bouquets Dateien in /etc/enigma2 manuell die URLs anpassen, damit Du den Streaming-Server benutzt. Das habe ich auch gemacht, nachdem ich mit Partnerbox die Sender hinzugefügt habe.
    Dre hat aber recht damit, dass das im lokalen Netzwerk unnötig ist. Ich habe das nur gemacht, weil ich übers Internet streame.

    Ich habe noch ein wenig rumgebastelt, da mir nicht gefallen hat, dass beim Programmwechsel die InfoBar nicht automatisch angezeigt wurde und darüberhinaus alle 60 Sekunden die Events unnötig geupdated wurden.


    Inzwischen habe ich es so laufen, dass ein Timer genau passend gesetzt wird, sobald man auf einen Kanal schaltet, der zwar EPG, aber keine Now/Next-Infos hat. Die InfoBar wird ebenfalls angezeigt, sollte das in der Config aktiviert sein.


    Vielen Dank für die Unterstützung und Schubser in die richtige Richtung :smiling_face:


    Es wäre super, wenn das so, oder so ähnlich, übernommen werden kann:


    Ich schreibe das übrigens auch gern nochmal um, falls der Timer in @Ghost' Augen nicht in die InfoBar.py gehört und __eventInfoChanged besser von außen getriggert werden sollte.

    @gutemine: Dass bei transkodierten Sendern keine EPG-Events kommen, brauche ich nicht versuchen zu verstehen. Das habe ich längst verstanden - ist ja auch logisch, dass da nichts kommt. Dass ich da per Timer irgendetwas auslösen muss, habe ich auch gar nicht in Frage gestellt und wollte Deinen Vorschlag in keiner Weise bezweifeln. Ich habe lediglich gesagt, dass ich anhand dessen, wie ich den Code verstehe, gar nicht erkennne, WARUM Now/Next in der InfoBar keine aktualisierten Daten anzeigt, obwohl die EventInfo-Objekte, auf die der Skin verweist, laut Log bei einem Aufruf von getEvent() bereits korrekte Events zurückliefern. Wenn bei Anzeige der Infobar jedes mal das source Objekt bzw. die Converter abgefragt werden würden, dann würden hier bereits automatisch die aktualisierten Daten erscheinen. Hier fehlt mir das Verständnis dafür, weshalb und wo genau dem Skin bzw. Renderer klar gemacht wird, dass er das Widget bzw. den Inhalt, den die Converter bereitstellen, erneut aufgerufen muss.


    @Ghost: Danke! Das werde ich heute Abend oder morgen testen können. Warum die Daten in der Infobar nicht vorher schon aktualisiert wurden, habe ich zwar immer noch nicht genau verstanden (siehe Text an gutemine oben), aber das liegt wohl an meinem bisher eher beschränkten Einblick in die Funktionsweise von enigma2.


    Wahrscheinlich übersehe ich einfach irgendwas oder es passiert einfach im nicht einsehbaren Core. Trotzdem würde ich gern die Logik dahinter verstehen. Mir ist nämlich nicht ersichtlich, was genau passiert, wenn gotEvent(iPlayableService.evUpdatedEventInfo) aufgerufen wird und WARUM dann die InfoBar auf einmal die Events neu ausliest bzw. WO genau die Info zur Aktualisierung abgelegt wird.

    Der Sinn des ganzen war, dass ich nicht verstanden habe, warum in der Infobar immer noch dir alten Daten angezeigt werden, obwohl EventInfo.getEvent das richtige Event zurückliefern würde. Ich ging davon aus, dass da vielleicht irgendwas gecached ist (schließlich ist auch getEvent mit @cached versehen) und wollte einfach mal das Objekt neu initialisieren. Wenn der Skin aber eh das original Objekt weiter benutzt, hat das natürlich keinen Sinn.
    Komisch ist, dass nur beim Senderwechsel getEvent für NEXT aufgerufen wird. Danach nie wieder. Es kommen nur Anfragen für NOW rein. Auch beim Öffnen der Infobar.
    Das Verhalten aber auch das selbe, wenn ich "@cached" entferne.


    Und das kann ich mir nicht erklären. So wie ich den Code verstehe, ist in session.Event_Now ein EventInfo-Objekt enthalten, das jeweils die aktuelle Sendung zurück geben müsste. Da ist eigentlich gar kein Timer meinerseits nötig, um irgendetwas zu aktualisieren, weil getEvent(0) immer korrekt die aktuelle Sendung auslesen müsste - und tut es laut Log ja auch, wenn es aufgerufen wird. Es wird aber trotzdem nicht in der Infobar angezeigt - und getEvent(1) für NEXT wird gar nicht erst erneut aufgerufen.. ????

    Irgendwo ist immer noch ein nicht offensichtlicher Fehler drin. :thinking_face:


    Die skin.xml verweist auf session.Event_Now. Das wird lediglich in SessionGlobals.py gesetzt und verweist auf EventInfo. Ich dachte anfangs, dass dort eventuell irgendetwas nicht korrekt aktualisiert wird und habe mir mal Test-Ausgaben eingebaut:




    Wie man sieht, gebe ich den Inhalt von Event_Now schon einmal aus, bevor ich irgendetwas daran ändere. (Zeile 33 des Diffs).


    Wenn man sich aber mal das Log anschaut:




    ... sieht man, dass das Event bereits in beim Aufruf meines Timers in (ab Zeile 53 im Log) richtig ist. Trotzdem zeigt die Infobar immer noch die alten Sendungsnamen und Zeiten für Now/Next an. Wo kann es hier noch hängen??


    Danke für die Unterstützung :smiling_face:

    Genau, nur finde ich die Stelle nicht, die auch die Anzeige in der Infobar aktualisiert. Wie gesagt, ich kann die epglist befüllen - das mache ich analog zu openEventView(). Ich kann mir auch danach das EventView öffnen und dort werden Infos angezeigt. Der Sendungsfortschrittsbalken wird ebenfalls aktualsiert. Lediglich die Darstellung der aktuellen/folgenden Sendung in der InfoBar springt nicht um.
    Entweder stelle ich mich gerade blöd an und sehe den Wald vor lauter Bäumen nicht - oder es fehlt einfach noch irgendein Call, der nicht in __evEventInfoChanged und openEventView enthalten ist. An anderer Stelle habe ich auch nichts passendes gefunden und bin etwas ratlos, wo ich weiter suchen kann. Eine Idee?

    Irgendwie möchte das nicht so recht. Timer setzen und Funktion wieder aufrufen ist kein Problem und passiert auch zur richtigen Zeit. Ich kann auch epglist mit den richtigen Sendungen befüllen (was aber glaube ich eh unnötig ist, denn epglist ist ja beim Kanalwechsel auch leer - und trotzdem wird die aktuelle und folgende Sendung aus dem EPG-Cache dargestellt - daher wieder auskommentiert, ändert sowieso nichts):


    Eigentlich muss nur bei "magic happens here" die Infobar aktualisiert werden und die aktuelle/folgende Sendung neu einlesen. Ich komme nur nicht drauf, wie ich das anstoßen soll.


    Darüberhinaus würde ich gerne zusätzlich die InfoBar für 5 Sekunden (oder was auch immer in der Config steht) anzeigen. Dazu wäre es wohl klug einfach __eventInfoChanged aus InfoBar.py aufzurufen. Wenn ich das allerdings versuche, erhalte ich "AttributeError: type object 'InfoBar' has no attribute '_InfoBarEPG__eventInfoChanged'". Mir ist klar, was das im Grunde bedeutet und warum das passiert, komme aber eher von C/C++ und PHP und habe so gut wie keine Erfahrung mit Python und würde mich freuen, wenn Du mir kurz sagen könntest, wie ich die Funktion *korrekt* aufrufe.

    :fearful_face: Da erstmal die Versionsnummern zu vergleichen ist ja noch mehr Arbeit als die drei Zeilen unter "Setup" und "Instalation" per Copy&Paste in die Console zu hämmern :face_with_rolling_eyes::kissing_face::winking_face:

    Ich streame viele Sender per rtsp von meiner Server-Box zu meiner Client-Box. Da der rtsp-Stream keine EPG-Daten enthält, lasse ich die epg.db von meiner Server-Box jeden morgen auf die Client-Box kopieren. Allerdings habe ich dort das Problem, dass die Now/Next EPG-Anzeige in der Infobar bei Sendungswechsel nicht aktualisiert wird, sondern immer die Sendung, die beim Kanalwechsel lief, als "aktuell" angezeigt. Erst wenn ich hin und her zappe, wird wieder die gerade laufende Sendung angezeigt. Es wäre super, wenn die Now/Next-Infos zeitbasiert aktualisiert werden könnten bzw. die Daten aus dem EPG-Cache benutzt werden, wenn keine Now/Next-Informationen im aktuellen Stream vorhanden sind.