[Announce] HbbTV plugin / offscreen browser v0.0.9

  • Edit: Ich habe doch noch einen Fehler gefunden, der nervig ist. ich werde versuchen, den schnell zu fixen und eine neue Version zu erstellen. Das Problem ist, daß man im Video nicht mehr Vor- und zurückspringen kann. Aber WDR-Videos mit TCP scheinen bei mir viel besser zu laufen.



    Version 0.0.5 wurde getaggt. Das ppa baut gerade. Das Hauptaugenmerk liegt hierbei bei verschiedenen Möglichkeiten, den Videostream an das Plugin zu übertragen.


    Changelog vdr-plugin-hbbtv:


    Changelog vdr-osr-browser:


    Videostreams können nun statt nur per UDP nun auch per TCP oder Unix domain sockets an den VDR übertragen werden. Ich hoffe damit, ein paar Probleme mit reinem UDP umgehen zu können.

    Das VDR-Plugin und der Browser haben dazu neue Parameter erhalten. Sollte der Browser intern gestartet werden, ist eine weitere Konfiguration des Browsers nicht notwendig, das erledigt das Plugin automatisch.


    Falls -v nicht angegeben wird, ist standardmäßig UDP voreingestellt.

    Um das 188-Byte Problem zu umgehen habe ich zusätzlich den Patch von TomJoad genommen und die Änderungen in das Plugin verschoben.


    Weitere Bemerkungen:

    Ich hatte gehofft, die Navigation in der Tageschau und Anixe auch noch lösen zu können, war aber nicht erfolgreich. Statt Javascript aufzurufen und den KeyCode zu übermitteln, habe ich versucht direkt im Browser nativ die KeyCodes zu verwenden. Allerdings brachte das nicht den gewünschten Erfolg. Was ist an den Seiten so besonders? Auf anderen Seiten funktioniert doch alles. Jetzt muss ich erstmal auf eine Erleuchtung hoffen :( Zumal es mit Firefox/Firehbbtv ja auch funktioniert, aber eben nicht unter Chrome/HybridTvViewer.


    Als Nächstes werde ich versuchen, das mpeg-dash und livestream-ts Problem anzugehen und eine Lösung zu finden. Sofern keine weiteren Bugs auftauchen, die eine schnelle Lösung erfordern, oder ich wieder einen Flash bekomme und untersuche, warum die oben erwähnten Sites nicht funktionieren.


  • Hi,

    if the new plugin option "-v UDP" is missing then there seem to be the default UDP is not working.

    CU

    9000h

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

  • Version 0.0.6 wurde getaggt. Das ppa baut gerade.


    Der Fehler mit den Sprüngen im Video und der Änderung der Auflösung sollte beseitigt sein. Zusätzlich ist auch

    the new plugin option "-v UDP" is missing then there seem to be the default UDP is not working.

    gefixed.


    the html encoding seem to also not right

    I'm not playing with character encoding at all. But i will try to find out, what's happening there.


    Nachdem ich jetzt alle 3 Varianten (UDP, TCP, Unix domain sockets) für den Fix wieder testen durfte, muss ich sagen, die TCP Variante gefällt mir mit Abstand noch am Besten. Es gab kaum Bild-/Tonfehler.

  • Hi,

    another issue is the chromium log

    this is related to the startup param --user-data-dir= which should be a real directory.


    CU

    9000h

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

  • this is related to the startup param --user-data-dir= which should be a real directory.

    I've tried both: Setting the parameter in the main class and also starting the browser standalone with the additional parameter. But both attempts doesn't solve the problem (at least in my environment).


    After searching and reading the whole internet i came arround the root cause for this problem. It has something to do with DBUS configuration in Chrome and libdbus itself. See main.cc of Chrome. Some more explanation can be found here. And the comment in this code part makes me a little bit nervous.

    If I start the browser with

    the message don't appear anymore. But i don't really know, if this has some bad implications or causing new problems. On the other hand i don't know, if the message and behaviour causes other problems. This seems to be a loose-loose situation.

    I can add an additional command line parameter to the plugin, which enables/disables the env variable while starting the browser. But it could be a risk to set the parameter and also to not set it.

  • Hi,

    very strange, but seem to fix/hide this.

    there still some other messages which maybe harmless

    CU

    9000h

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

  • Hi,

    not sure if this is on the prio list, and probably already known.

    on NTV and others the scaled video is hidden behind the OSD.

    CU

    9000h

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

  • Hallo Zabrimus,


    bei mir funktioniert das spulen bei TCP nicht (dIe Uhr läuft, aber kein Bild).


    Gruß


    Murry

  • bei mir funktioniert das spulen bei TCP nicht (dIe Uhr läuft, aber kein Bild).


    Seltsam. Ich habe gerade noch einmal verschiedene Videos probiert und fand keine Probleme.
    Findest du im syslog Meldungen bei einem Sprung Meldungen der Art

    Die alte Verbindung wird geschlossen und eine neue sollte hergestellt werden. Bei einem Fehler sollte zumindest ein Hinweis im syslog zu finden sein.


    Kein Bild... die TCP-Verbindung scheint nicht zu bestehen. Funktioniert es denn mit den anderen beiden Varianten?

  • Hallo Zabrimus,


    UDP läuft mit gelegentlichen Bildfehlern.


    Ich habe gerade gesehen das das Plugin veraltet ist.


    Nach dem Update bekomme ich nur noch:


    Code
    1. Jul 12 18:45:48 vdr vdr[2224]: [2224] [hbbtv] Unable to send command...
    2. Jul 12 18:45:50 vdr vdr[2224]: [2224] [hbbtv] Unable to send command...
    3. Jul 12 18:45:52 vdr vdr[2224]: [2224] [hbbtv] Unable to send command...
    4. Jul 12 18:45:54 vdr vdr[2224]: [2224] [hbbtv] Unable to send command...


    Gruß


    Murry

  • Die Meldungen sollten nur kommen, wenn der Browser nicht läuft. Zwischen der 0.0.5 und 0.0.6 hat sich am Startmechanismus nichts getan.

    Startet der Browser standalone? Ich habe nach der 0.0.6 noch das Videostreaming im Browser per default auf UDP gesetzt (falls kein Parameter angegeben wurde), aber das sollte das Plugin erledigen.

  • Ich habe angefangen, mich um mpeg-dash zu kümmern. Der letzte Commit (im Plugin und Browser) geht in die Richtung.

    Aber bevor Fehlerberichte kommen: Die aktuelle Version ist nur sehr bedingt brauchbar. Ich fürchte, der ffmpeg MPEG-DASH Buffer ist nicht groß genug oder gar nicht vorhanden. Die Bildfehler sind kein wirkliches Vergnügen.


    In der mpd-Datei gibt es einen Hinweis für eine sinnvolle Größe des Buffers:

    Code
    1. minBufferTime="PT8S" suggestedPresentationDelay="PT20S"

    8 Sekunden Buffer und das Video erst nach 20 Sekunden präsentieren. Wie das zusammenpasst... Keine Ahnung.

    8 Sekunden (das waren ca. 2,x MByte) sind auch genau die Länge, die ein Segment beinhaltet (zumindest beim Ersten).


    Die Segment-URL Liste habe ich bzw. kann ich bereitstellen. Nur wie puffer ich das Ganze jetzt? Zwischenspeichern in einem File und ffmpeg daraus lesen lassen? Das hätte das Problem, daß das File entweder sehr groß wird, oder ich müsste ffmpeg geschickt neu starten. Aber an den Filegrenzen wird das nicht so ohne weiteres klappen.

    Die Segmente ffmpeg direkt vor die Füsse werfen und dann weiter senden lassen? Über eine Pipe, die dann permament gefüllt wird. Wobei ich hoffe, daß bei einem vollem Pipe-Buffer die Schreiboperation geblockt wird? Also hoffen, daß ffmpeg nicht mehr einliest, als es zu senden hat (realtime, -re)?


    Das File hat ziemliche Vorteile, aber eben den Nachteil, daß genug Platz auf der Platte sein muss. Andererseits nutzen wir den VDR und die Aufnahmen brauchen auch Platz. Ich müsste also erstmal etwas schreiben, warten und dann ffmpeg starten und aus dem File lesen lassen.

    Aber auch das Schreiben (bzw. aus dem Netz lesen) sollte nicht zu schnell sein, weil ansonsten die verfügbare Bandbreite wohl komplett verbraten wird.

    Oder gibt es andere Ideen?

  • Ich probiere immer noch in DVB-T einen Sender zu bekommen, der nur über Internet geht, jetzt bekam ich folgendes:

    Ich wollte mal herausfinden, was für deinen Sender noch fehlt und mal abgesehen von den obigen Problemen (Bildfehler, Buffer und so) wird der Sender (WDR HD) bei mir abgespielt. Kannst Du das bestätigen?

    Es scheint gerade so, als ob ich 2 Fliegen mit einer Klappe schlagen könnte.

  • Funktioniert :), mdr auch. Bei ARD alpha kommt "no hbbtv page found".


    Tolle Arbeit, die Du hier leistest! :thumbup:


    vdr-User-# 755 to_h264 chk_r vdr-transcoding

  • Hi,

    Warum pufferst du nicht in einer Ramdisk?

    Evtl bringt permashift Ideen. Das macht ja nicht unbedingt etwas anderes würde ich als Laie sagen.

    Ja echt super Arbeit die du hier leistest!

    Mfg Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Bei diesem Bild funktioniert der Fullscreen-Button nicht.


    Code
    1. 220 gentoo SVDRP VideoDiskRecorder 2.4.3; Thu Jul 16 12:40:39 2020; UTF-8
    2. 900-C: {"channelType":25,"ccid":"ccid://1.0","nid":1,"dsd":"","onid":8468,"tsid":38914,"sid":772,"name":"tagesschau24 HD (T)","longName":"tagesschau24 HD (T)","description":"OIPF (SD&S) - TCServiceData doesn't support yet!","authorised":true,"genre":null,"hidden":false,"idType":15,"channelMaxBitRate":0,"manualBlock":false,"majorChannel":1,"ipBroadcastID":"rtp://1.2.3.4/","locked":false}
    3. 900 U: http://hbbtv.daserste.de/


    vdr-User-# 755 to_h264 chk_r vdr-transcoding

  • Bei ARD alpha kommt "no hbbtv page found".

    Diese Meldung erscheint, wenn die Auto-URL (siehe Menu URL Liste) nicht vorhanden ist. Das ist der Grund, warum ich versuche alle URLs, die bekannt sind, in der Datei hbbtv_urls.list alle zu speichern. Z.B. dauerte es beim Ersten immer etwas lange, bis die URLs alle da waren und bis dahin konnte man den Red-Button nicht sinnvoll nutzen. Die URL-Liste habe ich z.B. erstellt, in dem ich einmal alle Sender einmal alle aufgerufen habe um dem Plugin die Chance zu geben, die URLs zu sammeln und zu speichern. Das Script dazu ist trivial und völlig ohne Fehlerbehandlung oder sonstige Raffinessen :)

    Shell-Script
    1. #!/bin/sh
    2. while :
    3. do
    4. svdrpsend chan +
    5. sleep 15
    6. done

    Vielleicht hilft es, einfach mal ein wenig länger auf den Sender zu starren, bis die URLs endlich da sind - wenn sie denn eingespeist werden. Bei mir haben nicht alle Sender gültige URLs.


    Bei diesem Bild funktioniert der Fullscreen-Button nicht.


    Das muss ich mal ausprobieren, aber im Moment treibt mich das Dash-Problem in den Wahnsinn :(


    Zum Dash-Problem habe ich unterschiedliche Fehlerbilder, die nicht zusammen passen.

    Die Liste der Segmente habe ich, die Segmente werden auch alle x Sekunden heruntergeladen und in einer Datei gespeichert. Das klappt ganz gut. Allerdings wird das Programm angezeigt, das exakt 2 Stunden vorher lief. Aber das Problem lässt sich wahrscheinlich durch ein wenig Arithmetik lösen, wenn das richtige Startsegment berechnet wird.


    Zu den Fehlerbildern, die ich nicht verstehe und für die ich noch keine Lösung habe. Dazu muss man wissen, daß der Video-Stream und der Audio-Stream separat geladen und gespeichert werden.

    • Starten von ffmpeg mit -i <videodatei> -i <audiodatei> -codec copy
      Das Videobild ist nach exakt 5 Sekunden gestört (wiederholbar und immer 5 Sekunden). Das berappelt sich nach einiger Zeit, wird aber nie richtig gut.
    • Starten von ffmpeg mit -i <videostream> -codec copy (also ohne audiostream)
      Perfekt. Das Bild passt und ist ohne Fehler, aber halt ohne Ton
    • Der Stream bricht nach exakt 3600 Frames ab - in beiden Varianten

    Starte ich ffmpeg auf der Kommandozeile mit den bereits gespeicherten Video/Audio-Dateien funktioniert alles einwandfrei.

    Also dachte ich, es liegt vielleicht daran, daß das File weiter geschrieben wird, während ffmpeg daraus liest. Der Parameter "-follow 1" bringt aber auch nichts.

    Es scheint also ein Problem mit der Datei zu sein, die fortlaufend geschrieben wird und dem Muxen von Video/Audio.


    Erschwerend kommt hinzu, daß ich bereits mindestens 1 Minute Video/Audio gespeichert habe, bevor ffmpeg überhaupt aufgerufen wird. Woher kommen also die 5 Sekunden? Und warum klappt es auf der Kommandozeile?


    Ich verstehe es nicht mehr. Ich habe auch schon versucht das Segment-Init vor jedes einzelne Segment zu schreiben oder ganz weg zu lassen - ohne Erfolg. Es bleibt bei den 5 Sekunden bei Video/Audio.


    Ein paar wenige Ideen sind noch vorhanden, aber wenn die auch nix bringen...? =O

  • So. Ich bin ein Stück weiter und habe neue Erkenntnisse gewonnen.

    3600 Frames:

    Der Parameter "-follow 1" von ffmpeg funktioniert nur genau dann, wenn das FILE immer wieder neu geöffnet und geschlossen wird. Das FILE Handle zu behalten (inkl. fflush der Daten) reicht nicht aus.


    5 Sekunden:

    Das Abspielen funktioniert nahezu einwandfrei, wenn ich den Audiostream nicht kopiere, sondern wieder nach AAC transcodiere, obwohl der Ursprungscodec schon AAC ist. Irgendwas muss da etwas seltsam sein, aber zumindest funktioniert es jetzt. Und solange zumindest die Videodaten kopiert werden können, sollte das verschmerzbar sein.


    Die alte Version, bei der ffmpeg direkt das mpd File bekommt und nicht wie jetzt (uncommitted), das Segment-Handling zu Fuß gemacht gemacht wird, funktioniert auch mit dem Transcode nach AAC nicht. Also werde ich bei der neuen Version bleiben.