web (HbbTV, VDR*ELEC), Milestone 1 erreicht

  • Hi, danke erstmal.

    Mein Movie Verzeichnis ist leer, ich hatte das von Hand angelegt und mit "-m" eingebunden

    ( ./remotetranscode/build/remotrans -c /etc/vdr/sockets.ini -m /video/movie -l 4)

    brauche ich die drei Dateien dort?


    Ich habe die im Source Verzeichnis gefunden unter:

    ./static-content/movie

    ls: Test.mp4 create_full_video.sh transparent-16x16.png  transparent-full.webm


    Zabrimus ich habe die Dateien von Hand ins Movie Verzeichnis kopiert.

    Und siehe da: Es läuft!

    Da wäre es gut das im Readme zu erwähnen, dass man die Dateien im movie Verzeichnis braucht.



  • Da wäre es gut das im Readme zu erwähnen, dass man die Dateien im movie Verzeichnis braucht.

    Eigentlich sollte das meson install alles zusammenkopieren. Das ist aber etwas ungünstig gelöst. Ein eigener Release-Ordner mit allen zur Laufzeit benötigten Dateien wäre sinnvoller. Ebenso ein kleiner Selbsttest beim Start, ob auch alles vorhanden ist und gefunden werden kann.

  • Eigentlich sollte das meson install alles zusammenkopieren. Das ist aber etwas ungünstig gelöst. Ein eigener Release-Ordner mit allen zur Laufzeit benötigten Dateien wäre sinnvoller. Ebenso ein kleiner Selbsttest beim Start, ob auch alles vorhanden ist und gefunden werden kann.

    Ah ok, im Readme von remotetranscode stand nur "meson compile". Da habe ich wohl nicht mitgedacht :)

    Super, dass ich Dein HBBTV project jetzt auch für AMD64 nutzen kann.

  • Super, dass ich Dein HBBTV project jetzt auch für AMD64 nutzen kann.

    Die Entwicklung findet zu 100% auf meiner lokalen Maschine statt. Das es auf arm Kistchen läuft war allerdings der ausschlaggebende Grund für den eigentlichen Start.

    h ok, im Readme von remotetranscode stand nur "meson compile".

    Die Readme sind etwas vernachlässigt worden. Z.B. sind viele Parameter für den Browser, Transcoder gar nicht dokumentiert, sondern tauchen nur irgendwo hier im Forum auf - als Lösung eines gemeldeten Problems. Das Schreiben von Dokumentationen sind nicht ganz so mein Ding. Muss aber auch sein.

  • Hallo allerseits, kurzer Bericht, wie ich HbbTV von Zabrimus auf AMD64 zum Laufen gebracht habe.

    i) Installation von Ubuntu 24.4: Nichts besonderes, sogar Wayland als Desktop ist ok.

    ii) Pakete von Seahawk vdr-2.6.7 und entsprechend main dazu.

    iii) VDR eingerichtet, ich nutze als Ausgabe Plugin das vdr-plugin-softhdvaapi (ich habe eine AMD Radeon GPU, Intel geht natürlich auch) von JoJo61.

    Kompilieren der Komponenten

    iv)Von Zabrimus müssen die drei Komponenten gebaut werden: vdr-plugin-web zusammen mit cefbrowser and remotetranscode

    Dazu von ubuntu "build_essentials" installiert. (Hatte ich eh schon). Zusätzlich noch "meson" und "ninja" installieren.

    Ich musste noch "libgraphicsmagick++1-dev" plus dependencies installieren.

    Dazu jeweils mit "git clone" die sourcen lokal installieren und entsprechend Zabrimus Readme kompilieren und installieren.

    Dazu jeweils die "Build" Sektion beachten.

    Wichtig: Von Zabrimus müssen keine patches an den VDR und an softhdvaapi angewendet werden, da die schon enthalten sind.

    Entsprechende Hinweise in den Readme Dateien ignorieren. vdr und softhdvaapi müssen also nicht kompiliert werden.

    Im Makefile von vdr-plugin-web habe ich (entsprechend Zabrimus Hinweis) im Makefile: ENABLE_FAST_SCALE ?= 1 gesetzt.


    Die drei Komponenten installieren/konfigurieren/starten

    v) das kompilierte vdr-plugin-web installieren und in conf.d enablen (wie jedes andere plugin) (--fastscale da ja im Makefile enabled)

    Wie Zabrimus schreibt eine gemeinsame /etc/vdr/sockets.ini Datei für alle drei Komponenten nutzen und entsprechend die IP/Ports konfigurieren.

    vi) remotetrans konfigurieren und starten:

    /your/path/remotrans -c /etc/vdr/sockets.ini -m /your/movie-directory

    (Wo immer auch das remotrans executable und das movie Verzeichnis liegt)
    Wichtig: folgende Files müssen im "movie" Verzeichnis enthalten sein (war bei mir erst falsch, durch meson install in remotrans sollte das gegeben sein)

    vii) cefbrowser starten

    Dazu in das build/Release Verzeichnis des cefbrowsers wechseln

    Ich musste noch:

    export DISPLAY=:0.0 machen (anpassen!)

    export LD_LIBRARY_PATH=. (ansonsten wurde libcef.so nicht gefunden, die im Verzeichnis liegt)

    Dann:

    ./cefbrowser --config=/etc/vdr/sockets.ini



    Ggf den vdr neu starten, damit das neue Plugin gefunden wird. Im Menu dann web aussuchen und HbbTV erleben.

    Nochmal Danke an Zabrimus !

  • Es gibt ein größeres Update aller Komponenten + 1 neues Plugin


    RemoteTranscode:

    - Optimierungen

    - Ein neuer Service call /AudioInfo, der für das neue Plugin verwendet wird.


    vdr-plugin-web:

    - Neuer Plugin-Parameter -n/--name mit dem man den Menueintrag auf einen anderen Wert setzen kann. Z.b. von web auf HbbTV.

    - Service-Implementierung hinzugefügt, das das neue Plugin benutzt

    - Ein neuer Service call /SelectAudioTrack, das durch die neue Browser-Applikation verwendet wird. Allerdings weiß ich noch nicht, wie ich den Audiotrack in VDR wechseln kann.


    cefbrowser:

    - Eine neue HbbTV-Applikation: iptv, welches durch das neue Plugin aufgerufen werden kann.

    - Diverse Optimierungen und Bugfixes


    Nun zum neuen Plugin: vdr-plugin-webapp.

    Das ist ein reines Service-Plugin für vdr-plugin-web und benötigt die ganze Kette an Abhängigkeiten.

    Ich denke, ich mache dafür einen neuen Thread auf. Es gibt zuviel zu erklären und zeigen.



  • Das vdr-plugin-web und vdr-plugin-webapp zu verpacken war kein Problem aber beim Rest wird es etwas umständlich - für Debian-Pakete, die auf Launchpad gebaut werden sollen, ist ein Internetzugriff während des Build-Prozess nicht möglich, d.h. man müsste dann alles vorab herunterladen und aus einem Archiv (kann von Quellcode getrennt sein, einen ähnlichen Fall gibt es bei w_scan_cpp) ins Build-Verzeichnis entpacken.


    Ich habe remotestranscode und den cefbrowser mal lokal gebaut und unter dem User vdr mit den gestartet, aber sehe keinen Browser, wenn ich das Plugin mit softhddevice-cuvid als Frontend aufrufe - wie kann ich da am besten auf Ursachensuche gehen?

    Der VDR schreibt dazu ins Log:


    Was mir auch noch nicht so ganz klar ist, warum die sockets.ini nicht standardmäßig localhost bzw. 127.0.0.1 nutzt - ist das so gedacht, dass da mehrere Clients an einem Server hängen?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich habe remotestranscode und den cefbrowser mal lokal gebaut und unter dem User vdr mit den gestartet, aber sehe keinen Browser, wenn ich das Plugin mit softhddevice-cuvid als Frontend aufrufe - wie kann ich da am besten auf Ursachensuche gehen?

    Ich kann keinen Fehler sehen. Die Kommunikation scheint zu funktionieren. Manchmal hängt der "Red-Button" (ein kleines Fenster unten rechts) oder braucht lange, bis er auftaucht.

    Versuch mal nach der Auswahl des Plugins die rote Taste auf der Fernbedienung zu drücken. Wenn dann immer noch nichts aufgeht, müssen wir das Log nochmal anschauen.

    Was mir auch noch nicht so ganz klar ist, warum die sockets.ini nicht standardmäßig localhost bzw. 127.0.0.1 nutzt - ist das so gedacht, dass da mehrere Clients an einem Server hängen?

    Ursprünglich war es dazu gedacht, den VDR, den Transcoder und auch den Browser auf unterschiedlichen Rechnern laufen lassen zu können. Für den Transcoder z.B. auf einem System, daß Hardware-Transcoding unterstützt oder der Browser auf einem schnellen System. Mittlerweile sehe ich aber, daß selbst die arm Kistchen schnell genug sind, solange kein echtes Transcoding stattfinden muss.

    Aber ich nutze es z.B. auch zur Entwicklung/Debugging. VDR/Browser auf den N2+, Transcoder auf dem Desktop. Oder der Browser auf dem Desktop und der Rest auf dem N2+. Je nachdem, was ich gerade brauche.

  • Das m3u-Handling im Transcoder habe ich komplett umgeschrieben bzw. eigentlich ist es ziemlich neu.

    Zum einen ist es viel zuverlässiger und vor allen Dingen auch viel schneller.


    Die Fehlerbehandlung bedarf aber trotzdem noch eine Verbesserung. Wenn z.B. die URL falsch ist oder der Server nicht antwortet oder einen Fehler zurückgibt, bleibt das Bild im VDR wohl stehen. Ein schneller Griff zur Menu-Taste sollte das Problem aber beheben. Da muss ich nochmal ran.

  • Versuch mal nach der Auswahl des Plugins die rote Taste auf der Fernbedienung zu drücken. Wenn dann immer noch nichts aufgeht, müssen wir das Log nochmal anschauen.

    Leider passiert da nichts auf meinem nvidia-System (Ubuntu 22.04). Mit meinem Intel-System (Ubuntu 24.04) wird das HBBTV-Menü angezeigt und die Wiedergabe scheint grundsätzlich zu funktionieren (lässt sich aber leicht aus dem Konzept bringen, z.B. wenn man die Menü-Taste drückt, während ein Video wiedergegeben wird).

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • z.B. wenn man die Menü-Taste drückt, während ein Video wiedergegeben wird)

    Die Menu-Taste lässt sich - soweit ich mich erinnere - nicht abfangen und dient jetzt dazu, das ganze Plugin Video/Page zu beenden und zum VDR zurückzukommen.

    Leider passiert da nichts auf meinem nvidia-System (Ubuntu 22.04).

    Ich habe auf dem Desktop auch nvidia mit dem Ausgabedevice softhdcuvid. Allerdings nicht Ubuntu sondern Debian. Da sollte eigentlich kein großer Unterschied vorhanden sein. libplacebo habe ich allerdings deaktiviert. Kann es daran liegen?

    -LIBPLACEBO ?= 1

    +LIBPLACEBO ?= 0

  • z.B. wenn man die Menü-Taste drückt, während ein Video wiedergegeben wird).

    Es gibt doch eine Möglichkeit, an die ich gar nicht mehr gedacht habe, weil dies eigentlich eher ein Versehen und Zufall war.

    Damals hatte ich den Plugin-Parameter "-o / --dummyosd" eingeführt um das Öffnen des Menus zu erkennen und die Arbeit des Plugins einstellen zu lassen. Startest du das web-Plugin mit '-o'?

  • Habe heute mal alles upgedated und nun habe ich einen Compilierfehler:

    Code
    FAILED: cefbrowser.p/v8handler.cpp.o 
    c++ -Icefbrowser.p -I. -I.. -I../subprojects/mINI-0.9.14/src -Isubprojects/cef -I../subprojects/cef -Isubprojects/cef/__CMake_build -I../subprojects/cef/__CMake_build -I../subprojects/spdlog-1.12.0/include -Isubprojects/sqlite-amalgamation-3420000 -I../subprojects/sqlite-amalgamation-3420000 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++17 -O3 -g -O3 -D_GNU_SOURCE -pthread -DPHTTPLIB_ZLIB_SUPPORT -DCPPHTTPLIB_OPENSSL_SUPPORT -MD -MQ cefbrowser.p/v8handler.cpp.o -MF cefbrowser.p/v8handler.cpp.o.d -o cefbrowser.p/v8handler.cpp.o -c ../v8handler.cpp
    In file included from ../v8handler.cpp:6:
    ../browserclient.h:78:10: error: ‘void BrowserClient::OnRenderProcessTerminated(CefRefPtr<CefBrowser>, CefRequestHandler::TerminationStatus, int, const CefString&)’ marked ‘override’, but does not override
       78 |     void OnRenderProcessTerminated(CefRefPtr<CefBrowser> browser, TerminationStatus status, int error_code, const CefString& error_string) override;
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~
    ninja: build stopped: subcommand failed.
  • ../browserclient.h:78:10: error: ‘void BrowserClient::OnRenderProcessTerminated(CefRefPtr<CefBrowser>, CefRequestHandler::TerminationStatus, int, const CefString&)’ marked ‘override’, but does not override 78 | void OnRenderProcessTerminated(CefRefPtr<CefBrowser> browser, TerminationStatus status, int error_code, const CefString& error_string) override;

    Vor 4 Monaten gab es bei CEF genau diese Änderung in der Signatur der Prozedur OnRenderProcessTerminated. Ich denke, du hast da noch eine alte cef-Version liegen.


    Code
    ./clean-package.sh _cef
    ./build.sh -config CoreELEC-22-no -package _cef
    ./build.sh ...Deine Parameter...
  • Den hast du dann vermutlich nicht aktualisiert.

    Na selbstverständlich ist alles aktuell. Bei meinen Sachen achte ich da besonders drauf ;)

    Ist das eine alte Version oder hast du neu gecloned? Falls alt, dann solltest du cef nochmal neu laden

    Code
    rm -Rf subprojects/cef
    ./setup.sh arm64
    meson setup build
    cd build
    meson compile
    meson install

    Falls du arm64 nutzt, ansonsten arm.

  • Ich habe nun das web plugin unter VDR*Elec zum laufen bekommen. In der sockets.ini wäre ein 127.0.0.1 als default sicher sinnvoller als deine private IP Umgebung :) Aber wo finde ich denn die Parameter für den cefbrowser damit ich ihm sagen kann welche screenauflösung ich will. Das ist derzeit ziemlich klötchenlastig.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!