Posts by Zabrimus

    I found the root cause of the problems of Tatort Navigation. And it has nothing to do with key mapping but it's because of one of my patches for HybridTvViewer. And my comment points to some possible problems and ...

    Now the situation arrises, where further investigation is needed. (Possibly for other channels also).



    Kurzzusammenfassung:

    - Tatort Videos sollten jetzt vernünftig abgespielt werden (inkl OSD). Dazu muss ich zur Laufzeit ein wenig an den Styles der Seite spielen.

    Mal schauen, ob ich die anderen Video-Probleme auch so gelöst bekomme.

    - Bugfix beim Laden der Configs

    - Bugfix beim Abspielen mehrerer Videos hintereinander. Der Browser hat die Länge des ersten Videos für alle anderen übernommen.

    Den Cache konnte ich nicht austricksen, also wird mit den Filenamen gespielt.


    Das Ganze habe ich mit ffmpeg 4.3 getestet und soweit keine Probleme.

    Unter yavdr auf Bionic habe ich ein ppa gefunden mit ffmpeg 4.3.2, habe alles neu gebaut aber stand Sonntag war das nix mehr geht. Kein Zucken und kein log...

    Äh was? Startet der Browser nicht? Funktioniert das Plugin nicht? Kann man Seiten sehen oder nicht? ffmpeg kommt erst zum Einsatz, wenn man Videos betrachten will und da wird auch nur die Kommandozeilenversion verwendet und nicht direkt die Libs.


    Hat noch jemand yavdr/bionic am Laufen und kann evt. Informationen liefern, ob es generell funktioniert oder nicht und falls nicht, mit welchen Meldungen? Zur Not kann man den Browser auch so starten und schauen, welche Meldungen ausgegeben werden. Dazu muss im Plugin nur "-c" auskommentiert/entfernt werden, damit nicht 2 Browser parallel gestartet werden.



    ffmpeg 4.3 muss ich mir auch noch kompilieren für das mpeg-dash Video Problem.

    Die Parameter sollten niemals als zusammenhängender String übergeben werden!

    Sorry. Ich war auf dem Holzweg. Du hattest recht. Ich habe mich so auf den 2. Aufruf von fmpeg konzentriert und dabei vergessen, daß der Aufruf von ffprobe nebenbei gefixed wurde, aber genau der bietet einen Angriffsvektor. Dazu muss eine manipulierte Video-URL geliefert werden. Es dürfte zwar sehr unwahrscheinlich sein, das jemand explizit VDR im Visier hat (bzw. den Browser), aber falls es andere lohnende Ziele mit demselben Problem gibt, könnte es passieren. Ich muss wohl den Aufruf mittels popen entfernen und durch etwas anderes ersetzen.


    Bei der ARD erhalte ich unter dem Punkt 'Anfang verpasst' die Meldung "dieses plugin wird nicht unterstützt" am Bildschirm.

    Das Problem ist bekannt. Es funktioniert wahrscheinlich nur, wenn die Sendung in der Mediathek verfügbar ist und deshalb ein mp4 und kein MPEG-DASH geliefert wird. An dem MPEG-DASH Problem muss ich noch arbeiten. Das ist etwas schwieriger, weil ich z.B. seek-Kommandos bekomme, die auf bytes anstatt Zeit verweisen und ffmpeg kann nur mit der Zeit umgehen. Die Länge des Videos und die Codecs müssen aus dem XML extrahiert werden und so weiter. Es ist also schon etwas anders, als normale mp4 Videos.

    Im Unterpunkt 'Tatort' der ARD (900 U: http://hbbtv-tatort.daserste.de/) zeigt er den Wunsch-Tatort als 'Ihr Wunsch-&WCF_AMPERSAND"Tatort&WCF_AMPERSAND"' an. Ist das ein Konfigurationsproblem an meiner Seite oder sieht das bei Euch auch so au


    Das ist mir noch nicht aufgefallen. Allerdings wird auch der eigentliche Inhalt der Seite nicht verändert.


    Ich habe gerade die Version 0.0.3 getagged. Im ppa wird auch gerade gebaut.



    Gerade den letzten Punkt (Javascript) hätte ich viel, viel, noch viel früher einbauen sollen. Das hätte mir eine Menge Ärger erspart. Ich fummle jetzt am HTML-Quellcode rum, bevor dieser dem Browser vorgeworfen wird. Das Problem mit einigen Senden (n-tv, RTL,...) bestand darin, die die Sender-Javascripte auf Objekte aus der hbbtv.js zugreifen, die aber erst später zur Verfügung stehen. Jetzt funktioniert sehr viel mehr und auch besser. Wenn man z.B. den ARD Red Button nutzt, sieht man den Unterschied sofort.

    Die Parameter sollten niemals als zusammenhängender String übergeben werden!


    Das wurden sie auch nicht. Aber einer der Parameter im Array hatte leider ein "&" und der anschließende Aufruf der Shell (mit execv) führte genau zu dem Problem, mit dem ich so nicht gerechnet hatte. Seltsamerweise kann ich das nicht mehr nachstellen. cmd_params ist eben ein std::vector mit allen Parametern und vielleicht liegt genau da das übel. Ich wollte da sowieso noch mal ran, weil mir die aktuelle Lösung nicht gefällt.


    Update:

    Videos von Sat1/Pro7 aus der Mediathek werden jetzt abgespielt. Die Ursache lag in der URL, die ein "&" beinhaltet. Dieses führte dann nicht zu dem gewünschten Verhalten, sowohl mit system, execv und Konsorten.


    Allerdings bleibt irgendwie das OSD offen und überdeckt das ganze Video. Wenn man das OSD schliesst, kann man das Video sehen. Über das Menu kommt man wieder dran, aber in der Seite wird anscheinend das Schließen des OSD nicht getriggert.

    Javascript-Debugging wird wohl nie mein Steckenpferd :rolleyes:


    Edit: Habe ich schon erwähnt, daß die Werbeeinblendungen in den Videos von Sat1/Pro7 extrem störend sind?:|

    Ich denke es reicht in in der Makefile folgende Änderung

    Ich habe das mal committed.



    Das Problem mit der Navigation in der Tagesschau widersetzt sich all meinen Bestrebungen. Das Javascript scheint die Pfeil-Tasten nicht abzufangen und zu verarbeiten (im Gegensatz zu z.B. VK_0, .. ,VK_3 und andere). Also müsste die Navigation eigentlich aus dem Browser selber heraus gemacht werden. Aber ich komme nicht dahinter, was schief geht.


    Mein Versuch Videos in Sat1/Pro7 abzuspielen scheitert auch. Vom Server bekomme ich nur ein HTTP 403 (forbidden). In der FFmpeg Commandline hänge ich schon die Cookies und den User-Agent an, aber das scheint nicht zu reichen.


    Verschiedene Trackingsites gingen mir auf die Nerven, also gibt es jetzt die neue Config block_url.config, in der man Substring-Pattern eintragen kann, um den Request (falls der Substring in der URL zu finden ist), direkt zu canceln.


    Allerdings läuft es auch bei RTL (und zugehörigen Sendern) nicht gut. In der Chrome-Extension und im Javascript Teil habe ich die Abfrage nach FireHbbtv gefunden. Hmm... Vielleicht komme ich noch dahinter.


    Insgesamt gesehen ist es schon seltsam, wieviele Probleme es bei HTML-Seiten und Javascript in einem Browser geben kann. Mit all den Schwierigkeiten hatte ich überhaupt nicht gerechnet.

    So das aufrufen über die URL geht nun wieder. Aber über den Red Button geht es immer noch nicht. Das ist wohl der 2. Fall oder ?


    PS:


    Nur noch zur Info. Ich gebe --commandline=--password-store=basic als parameter für dem browser mit. Sonst fragt er mich nach dem Keystore passwort beim ersten starten. Das könntest du evtl. noch als default einbauen.

    Ja. Das ist der zweite Fall. Ich lese gerade den Code und versuche eine Lösung zu finden, wie ich den Content-Type korrigieren kann.


    password-store? basic? Was? Ich habe das mal probiert und es scheint nicht schädlich zu sein. Aber wie bist du denn auf den Parameter gekommen?

    Der Browser kann vom Plugin gestartet werden oder unabhängig vom Plugin. Ich habe in den CefSettings oder ähnlichem, keinen Hinweis gefunden, wie ich das im Browser direkt einstellen kann. Ich weiß auch gar nicht, welche der Prozesse die Verantwortung für den Password-Store übernimmt (Render, Network, JS, ...).
    Ich kann es im Plugin einbauen... Aber zuvor würde ich gerne wissen, ob es auch noch bei anderen funktioniert, die den Parameter aktuell nicht gesetzt haben.


    Umfrage:

    Braucht jemand den Parameter "--pasword-store=basic"? Und falls nicht: Bemerkt ihr Probleme oder anderes unerwünschtes Verhalten mit dem Parameter?

    Okay. Bei dir läuft irgendwas falsch.


    1. Problem

    Der Content-Type für die Seite ist eben nicht "application/vnd.hbbtv.xhtml+xml".


    2. Problem

    Und hier liegt der umgekehrte Fall vor. "text/html" sollte es nicht sein, weil dies eben eine HbbTV-Seite ist.



    So sieht das bei mir aus:


    Der falsche Content-Type in 1. verhindert durch das Caching auch, daß du die Seite wohl nie aufrufen kannst. Ich werde gleich eine Änderung für den Browser committen, der den Cache ausschaltet. Das sollte zumindest Problem 1 lösen.

    Entweder werden falsche Header-Daten geliefert oder der Autodetect in Chromium/CEF geht schief. Vielleicht kann ich da eingreifen, aber das muss ich mir anschauen.



    Info: Die Änderung habe ich gerade committed.

    Hmm. Ich gehe grade die gestrigen Commits durch. Und es gab im Browser nur 2 Änderungen + die zurückgenommene Änderung für text/html.

    1. Jede neue URL wird geladen ohne zu vergleichen, ob der Browser diese URL aktuell geladen hat

    2. Der Content-Type für hbbtv-Seiten wird gespeichert und verwendet, aber auch nur, wenn wirklich hbbtv geliefert wurde


    Die Tageschau liefert unter der URL eine sehr simple Seite, die nur ein ein Element im Header hat:

    Und wenn genau für diese Seite der Content-Type im HTTP-Header nicht "text/html" ist (oder falls mein fehlerhafter Commit noch vorhanden ist), dann tritt dein Fehler auf.


    Bei mir sieht das im Trace-Log so aus:

    Die letzte Zeile ist die Entscheidende.


    Aber ich kann mir nicht erklären, warum die gestrigen Änderungen den Fehler erzeugen sollen.


    edit: Lesbarer trace-log

    Bei auswählen über den Red Button kommt es nach wie vor gar nicht

    Das würde ich mir gerne mal näher ansehen. Allerdings müsstest du dafür das browser.log löschen und den Browser neu mit dem loglevel "--trace" (statt --debug oder --info oder was auch immer) neu starten. Es wird allerdings extrem viel geloggt und mir würde es reichen bis zum Klick auf Tagesschau in der Red-Button Liste.

    Ich habe gerade die Version 0.0.2 getagged - sowohl Browser, als auch Plugin. Das ppa baut auch gerade, wobei ich wahrscheinlich keinen Fehler bei den Versionsnummern ausgelassen habe. Die nächsten Versionen muss ich vorsichtiger angehen.


    Browser:

    Leider scheint es so zu sein, daß manche Seiten mal text/html und mal einen hbbtv Content-Type im HTTP-Header liefern. Das war z.T. die Ursache, das nicht alle Seiten sofort geladen worden sind. Im Browser wird sich nun gemerkt, hinter welcher URL mal ein hbbtv Content-Type stand und dann dieser verwendet. Es ist ein wenig besser geworden.



    Plugin:

    Im Plugin dürfte der neue Menupunkt "Reopen OSD" interessant sein. Damit soll - so die Theorie - die letzte Version des Browser-OSD neu geöffnet werden. Falls das OSD also mal absichtlich oder versehentlich geschlossen wurde, kann man mit dem Menupunkt das OSD wieder öffnen.



    Ich weiß nicht, wie lange es dauert, die Probleme mit tagesschau, n-tv und neuerdings ORF und SRF1 zu lösen - und wahrscheinlich auch anderen Sendern.

    Das sieht auf jeden Fall etwas anstrengender aus.

    Das funktioniert:

    Ich habe mir eine aktuellere Version von ffmpeg compiliert. Das muss irgendeine 4.2er git version sein, die noch auf der Platte lag.

    Ja und damit funktioniert es. Also scheint ffmpeg 4.2.x das Minimum zu sein, mit dem es klappt. :]


    Juchuuu.


    Edit: Aber da ist noch Arbeit im Browser notwendig. Die Video-URL ist erst ein mpd-File und dann wird auf blob:xxxx gewechselt. Ich denke, daß muss ich irgendwie unterbinden.

    500 Command unrecognized: "GETURL"

    Das Kommando sollte wieder funktionieren. Dazu müssen aber sowohl der Browser, als auch das Plugin aktualisiert werden.


    Die stream.mpd ist eine xml

    Das habe ich gesehen. Aber so richtig schlau bin ich aus den Werten nicht geworden. Aber irgendwie scheint VLC daraus etwas machen zu können, obwohl unklar ist, wie. Vielleicht finde ich dazu irgendwo mal eine Spezifikation.


    Ohne es probiert zu haben: Mit neuem ffmpeg , wo libxml2 enabled sein muss, könnte ffmpeg -i xxx.mpd -codec copy output.ts gehen.

    Genau das hatte ich probiert und dann kam die oben erwähnte Fehlermeldung. FFmpeg 4.1.4 funktioniert nicht. Eine noch aktuellere Version muss ich mir erst compilieren und dann testen.


    Navigation klappt noch nicht in diesem Bild.

    Das ist eine weitere Baustelle. Zifferntasten (siehe oben im Menu) funktionieren, aber sonst nix. Es scheint, als ob andere Keycodes verwendet werden.


    Ich habe nicht den blauen Button genutzt sondern bin auf der Startseite auf den Icon zum restarten der aktuelle Sendung gegangen.

    Nochmal dazu. Ich fürchte, das wird ein echtes Problem. Ich habe das gerade versucht und erhalte als Video URL ein *.mpd. FFmpeg soll angeblich damit umgehen können, aber wenn ich es versuche, dann kommt immer nur die Meldung

    Code
    1. http://itv.ard.de/replay/dyn/stream.php/1-3169/stream.mpd: Invalid data found when processing input

    Wobei sich die URL je nach Sendung oder Zeit ändert.

    Ich bin mir sicher, daß ich den Restart schon einmal gesehen habe. Aber das kann auch Zufall sein, daß genau in meiner Test-Sendung eben kein MPEG-DASH, sondern eine echte Video-URL anlag. Das Problem hatte 9000H schon angesprochen und es klappte bei mir sofort. Wohl reiner Zufall :(


    Das erklärt dann auch die blob:http-URLs, die gesehen wurden. Die URLs werden wohl normalerweise anders behandelt. Ich denke die Javascript DASH Lib wird da einspringen und alles richtig machen.


    Kurioserweise sehe ich im Chrome mit der HybridTvViewer-Extension (die ich auch intern verwende, allerdings überall rumgepatcht) eben keinen blauen Button und kann nicht nachschauen, was die Extension eigentlich hätte machen sollen.


    Ich sehe im Moment keine echte Lösung. Mich springt da aber auch gerade keine verwegene Idee an.


    Ich habe es auch mal mit vlc versucht, aber da bekomme ich nur

    Was auch nicht wirklich hilfreich ist. Aber zumindest scheint VLC aus der mpd echte Links zu basteln. Nur wenn die ein 404 liefern, nützt das auch nix.


    Ich fürchte, das Problem ist eine echte Herausforderung und wird erstmal nach hinten geschoben werden müssen, bis die Erleuchtung kommt. Vielleicht kann ich zumindest den Fehler abfangen und was sinnvolles daraus machen.

    Kannst Du das PPA mit dem Browser aktualisieren?

    Paket ist hochgeladen und baut gerade.


    Notiz an mich: Das muss irgendwie automatisiert werden. Die Fehlversuche und Reuploads strengen etwas an.


    Über den Red Button und navigieren zu tagesschau geht bei mir gar nicht.

    Ich gehe gar nicht anders auf die Seite. 8|Hmm.... Ich überlege, woran das liegen könnte. Ich brauche ein weiteres Testsystem.

    Wat? blob? Und die Command-Line-Probleme? Sehr seltsam.. Andererseits. Wenn ffprobe die aktuellen codecs nicht finden kann... hmm...



    Tagesschau und n-tv :/

    looks like the browser get not auto started since ? and the browser ping tells it's running but is not.

    I've removed a sleep loop waiting for the browser while starting the plugin, which slows down the VDR start. But the browser itself shall be started if configured. I haven't change the start mechanism at all - except the sleep loop. Aren't you able to open any page?


    Die Seite der Tagesschau lädt nur wenn ich die URL direkt anwähle. Aus der Startseite heraus kommt sie nicht.

    Aus der Startseite? Meinst du den Red-Button? So rufe ich die Seite immer auf. Aber es scheint noch ein Problem mit dem Laden von Seiten zu geben, weil manchmal tut sich nichts, oder erst beim zweiten Aufruf. Ich muss da nochmal nachschauen.


    Auf dieser Seite läuft zwar das erste Video nun schön sauber, aber eine Navigation ist nicht möglich

    Das ist mir auch schon aufgefallen. Die Ziffern-Tasten 2,3,4 funktionieren. Die 0 scheint das Video in Fullscreen darstellen zu wollen, das klappt aber noch nicht richtig. Und was die Navigation angeht, wollte ich schon fragen, ob jemand weiß (mit einem echten HbbtV-Fernseher), ob da wirklich eine Navigation möglich ist.


    Bei n-tv werden die bunten Buttons (rot,gelb,grün und blau) in den Seiten genutzt. Das funktioniert nur bedingt. Zurück funktioniert da nicht

    n-tv ist sehr speziell. Da muss ich auf jeden Fall nochmal ran und untersuchen, welche Spezialitäten die haben.


    Bei ARD funktioniert das starten der aktuellen Sendung (blauer Button oder aus der Startseite) nicht

    Auch nicht, wenn der blaue Button im OSD eingeblendet wurde? Bei ARD scheint das etwas zu dauern. Erst kommt der Rote-Button und Sekunden später der Blaue+Rest.

    Es gibt aber auch noch ganz andere Probleme, die ich zwischendurch bemerke. Ich weiß nicht mehr, welche Seite das war, aber irgendwo schlägt CORS zu und verhindert das Nachladen von jquery Libs. Was dann so richtig blöd ist, weil nix mehr funktioniert. Angeblich kann man das abschalten, aber so richtig gut gefällt mir die Idee nicht.


    Es wäre auch sehr schön wenn ich den Response-Header direkt manipulieren könnte. Das würde den kompletten Code stark vereinfachen und ich könnte die Workarounds (die stark bremsen) ausbauen. Das Ticket CEF Ticket #2785 existiert schon seit letztem Jahr, aber es gibt noch keinen Fortschritt :(