[Announce] HbbTV plugin / offscreen browser v0.0.9

  • 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.



  • 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.

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

    Wie finde ich raus, welches Plugin da gemeint ist und wo muß das im Zweifelsfall dann hin?


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


    Christian

  • 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.

  • 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...

    Kann es aus Zeitmangel nicht weiter testen. Vielleicht versucht sich mal jemand mit mehr „Können“ aus der yavdr-Ecke...

    Bin dann mal weg ✌️

  • 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.

  • 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.

  • Hi,

    great improvement, but still some issues is regards to navigation

    - Tatort no navigation back to the mediathek (yellow) or to the startleiste (0)

    - Tagesschau no navigation when going back to mediathek (yellow) possible


    looks like there is still a general issue how the keys get handled or mapped


    CU and respect!

    9000h

    Es ist eagl in wlehcer Reiehnfogle die Bchustebaen in Woeretrn vokrmomen. Huapstache der estre und leztte Bchustbae sitmmen.

  • 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).



  • I've done some further investigations:

    The button '0' tries to load the URL dvb://current.ait/13.1?autoshow=1. The .1 seems the be the application id (see Hbbtv URL list) which probably could be resolved to 'http://itv.ard.de/ardstart/index.html?autoshow=1' after changing the plugin and browser.
    But the yellow button loads the URL 'http://hbbtv-tatort.daserste.de/getapp.php?sid=11100&colid=2&query=appid' which seems to want return a Json object (Content-Type: application/json;charset=UTF-8). But unfortunatly the result body is empty and therefore no navigation is possible.

    The sid 11100 is (in my environment) the sid of ARD. And i cannot find any other parameter or any other hint, whats going wrong.


    And now i'm not sure how to handle this. Button '0' is probably possible and this could also affect other pages. But the yellow button?


    It would be really nice if somebody could catch the URL from a real HbbTV device to hopefully see a difference. But this is a difficult task.


    Another finding in the source code:

    While Tatort page is open, press 4 times the button '7' and the page will change the location. The variable is called 'geheimCounter'. It's really strange but somehow funny.

  • Hi,

    hmm, unfortunately all this html, javascript, json stuff is not my thing and the hbbtv is a closed club.

    I also hope someone in the portal can assist.

    CU

    9000h

    Es ist eagl in wlehcer Reiehnfogle die Bchustebaen in Woeretrn vokrmomen. Huapstache der estre und leztte Bchustbae sitmmen.

  • Finally found the issue by accident :)


    The URL 'http://hbbtv-tatort.daserste.de/getapp.php?sid=11100&colid=2&query=appid' is right, but the sid isn't. I've been using the SID in decimal format, but after changing it to hex (2B5C) i get an answer from the server like '13.14'. And this points to the Mediathek (with app id 20, or hex 14 in the URL list).


    Ok. I have to send all application ids and URLs to the browser, change the sid in the channel configuration to hex value and interrupt dvb://current.ait requests and change the URL.

    Sounds feasible....



    Edit:

    feasible... :rolleyes:This drives me crazy. If i use the hex value of the sid, the page isn't working anymore. So i have to use the decimal value. But then the constructed URL don't work because the javascript code explicitly uses the decimal value of the sid instead the working hex value. I don't know, how to trick out the page/javascript.

  • Version 0.0.4 wurde getaggt und das ppa baut gerade für den Browser.

    Wichtig ist, daß sowohl der Browser und das Plugin beide aktualisiert werden müssen (auf aktuell Version 0.0.4). Ansonsten sind Probleme zu erwarten.


    Changelog Plugin:


    Changelog Browser:


    Die Änderungen in Prosa:

    • Der Video-Transfer vom Browser zum Plugin wurde vollständig auf UDP umgestellt. Dabei werden die nativen Fähigkeiten von ffmpeg verwendet. Die Latenz sollte drastisch sinken.
    • Das Plugin sendet die URLs und die Applikation-Ids an den Browser
    • Der Browser verwendet die Applikation-Ids um die Navigation z.B. auf den ARD Seiten zu ermöglichen
    • Die in einem anderen Beitrag erwähnten problematischen XMLHTTPRequests (SID decimal oder hex) werden jetzt intern korrigiert.
    • kleiner Fixes



  • Hallo Zabrimus,


    ich teste gerade die neue Version.


    ARD Mediathek: Beim abspielen von Videos habe ich wieder Bildfehler. Eine Fehlermeldung habe ich nicht gefunden.


    Tagesschau: Wie komme ich zum nächsten Video? Mit rechts, unten oder skip geht es nicht.


    Gruß


    Murry

  • Beim abspielen von Videos habe ich wieder Bildfehler.

    Die UDP Paketgröße ist/war suboptimal. Ich habe im Browser die Paketgröße und die interne ffmpe-Buffergröße konfigurierbar gemacht.


    In der Datei vdr-osr-ffmpeg.config gibt es die beiden neuen Konfigurationseinträge, mit denen man spielen kann:

    Code
    1. # UDP packet size, must be a multiple of 188 (default, if not configured is 1316)
    2. # udp_packet_size = 1316
    3. # UDP buffer stze (default is 31960 = 170 * 188)
    4. # udp_buffer_size = 31960

    Ich hoffe, damit wird es besser.

    Tagesschau: Wie komme ich zum nächsten Video? Mit rechts, unten oder skip geht es nicht.

    Die Tagesschau... :/Ich muss zugeben, daß ich bisher genau da noch keinen Hinweis auf ein Problem gefunden habe, noch habe ich eine Idee, was genau auf der Seite nicht so funktioniert, wie es soll. Genau diese Page ist noch eine (Vanta)Blackbox.



    Mit WDR-Videos habe ich ziemliche Probleme, Seit der neuen Version sind sie erheblich weniger geworden, aber die Meldungen


    Korrellieren mit Bildaussetzern. Ich weiß noch nicht, woran es liegt und wie ich es ändern kann. Ausgabedevice? Konfiguration? Das ist etwas ärgerlich.

  • Auf meinem Produktionssystem (vdr3) bekomme ich folgendes:


    Code
    1. Jul 6 16:00:41 vdr3-2 vdr[7742]: [7747] [hbbtv] Unable to send command...
    2. Jul 6 16:00:41 vdr3-2 vdr[7742]: [7747] [hbbtv] Send command 'APPURL 05:http://www.tagesschau.de/hbbtv'
    3. Jul 6 16:00:43 vdr3-2 vdr[7742]: [7747] [hbbtv] Unable to send command...
    4. Jul 6 16:00:43 vdr3-2 vdr[7742]: [7747] [hbbtv] Send command 'APPURL 14:http://tv.ardmediathek.de/index.html?client=daserste'
    5. Jul 6 16:00:45 vdr3-2 vdr[7742]: [7747] [hbbtv] Unable to send command...
    6. Jul 6 16:00:45 vdr3-2 vdr[7742]: [7747] [hbbtv] Send command 'APPURL 03:http://tv.ardmediathek.de/index.html'
    7. Jul 6 16:00:47 vdr3-2 vdr[7742]: [7747] [hbbtv] Unable to send command...
    8. Jul 6 16:00:47 vdr3-2 vdr[7742]: [7747] [hbbtv] Send command 'APPURL 23:http://hbbtv-mediathek.br.de/index.html'
    9. Jul 6 16:00:49 vdr3-2 vdr[7742]: [7747] [hbbtv] Unable to send command...
    10. Jul 6 16:00:49 vdr3-2 vdr[7742]: [7747] [hbbtv] Send command 'APPURL 2A:http://hbbtv-tatort.daserste.de/index.php'


    vdr-User-# 755 to_h264 chk_r vdr-transcoding

  • Hi,

    onAnixe the browser is also crashing Chrome

    [ 496.309512] Chrome_IOThread[4064]: segfault at 559600000001 ip 00007fa26a39237e sp 00007fa24b7fb4c0 error 4 in libc-2.31.so[7fa26a31a000+178000]

    [ 496.309523] Code: 84 5c ff ff ff 0f 1f 80 00 00 00 00 48 8d 0c 58 0f b7 11 66 85 d2 0f 84 45 ff ff ff 48 8d 04 d8 83 ea 01 4c 8b 80 80 00 00 00 <49> 8b 30 48 89 b0 80 00 00 00 66 89 11 49 c7 40 08 00 00 00 00 e9

    CU

    9000h

    Es ist eagl in wlehcer Reiehnfogle die Bchustebaen in Woeretrn vokrmomen. Huapstache der estre und leztte Bchustbae sitmmen.

  • Unable to send command...

    Hmm... Das ist allerdings seltsam. Die Sockets werden vorher erstellt und der Browser hat auch schon Lebenszeichen gesendet, oder? Läuft denn der Browser tatsächlich? Das kann eigentlich nur schief gehen, wenn die Gegenseite nicht da ist. Das Kommando ist dabei relativ egal.

    Oder werden die Kommandos zu früh gesendet? Während der Browser noch startet.


    Funktioniert denn irgendwas oder geht gar nix?



    onAnixe the browser is also crashing Chrome

    Anixe? I will take a look. But there exists a problem. I don't have Anixe in my channels.conf, nowhere. Could you please provide me the URL and possibly the channels.conf entry?




  • Da geht garnix


    vdr-User-# 755 to_h264 chk_r vdr-transcoding

  • Hi,

    Code
    1. ANIXE HD;BetaDigital:10773:HC34M5O20P0S1:S19.2E:22000:255=27:0;259=deu@106:0:0:21100:1:1053:0
    2. ANIXE+;BetaDigital:12460:HC34M2S0:S19.2E:27500:3311=27:3312=deu@3:0:0:764:133:5:0

    CU

    9000h

    Es ist eagl in wlehcer Reiehnfogle die Bchustebaen in Woeretrn vokrmomen. Huapstache der estre und leztte Bchustbae sitmmen.