vaapivideo und cefbrowser! Wie geht das zusammen?

  • Hallihallo,

    hier meine Frage aus dem vaapivideo-Fred:

    Quote

    vaapivideo verwendet keinen XServer. Deshalb läuft auch das vdr-plugin-web nicht mit dem dazu benötigten cefbrowser.

    D.h. dann, ich muss mich entweder für die Bildqualität oder für den cefbrowser (HbbTV, Mediathek) entscheiden!?

    Darauf die Antworten von Zabrimus:

    Quote

    Das Plugin und der Browser laufen ohne X. Die X Libraries werden nur zum Build benötigt. Der Browser selbst läuft dann headless und sollte eigentlich auch mit vaapivideo funktionieren. Es werden ja nur Bilder übertragen (für das OSD) und die Videos sind normale TS Streams.

    Quote

    Vielleicht solltest du einen neuen Thread aufmachen um diesen hier nicht zu kapern. Hier geht es doch primär um vaapivideo. Ich weiß noch nicht, was genau nicht funktioniert. Aber probiere mal die Flags --disable-gpu --disable-gpu-compositing. Damit funktioniert WebGL nicht mehr gut, aber das sollte bei den Seiten kein Problem sein.

    Wer könnte helfen, damit unter vaapi auch der cefbrowser läuft? :hilfe


    SAT>IP-Server: Kathrein EXIP 418
    SAT>IP-Client + Server für Aufzeichnungen: VM in proxmox, MLD 6.5 testing (Hardware i5-6500T, 16GB, 256GB)
    SAT>IP-Client 1: NUC7PJYH (Intel HD Graphics 605), MLD 6.5 testing, One For All URC 7960,
    SAT>IP-Client 2: NUC6CAYS (Intel HD Graphics 500), MLD 5.5 testing, One For All URC 7960,

    Media-Server: Synology DS215j
    AV-Geräte: Hisense H65MEC5550, Dali Zensor 5 AX, Teufel S6000SW

  • wayne August 25, 2026 at 6:58 PM

    Changed the title of the thread from “vaapivideo und cefbrowser! Wie geht das?” to “vaapivideo und cefbrowser! Wie geht das zusammen?”.
  • Der cefbrowser hat doch mit dem Ausgabedevice überhaupt nichts zu tun?! Hast du denn mal versucht, den cefbrowser zu bauen?

  • Leider bin ich nur "Anwender" und selber bauen unter MLD ist nicht ganz so einfach...:whistling:

    Eine Antwort/Frage von franky aus dem mld-Forum:

    Quote

    Aktuell funktioniert bei der MLD6.5 mit vaapivideo definitiv kein HbbTV mittels cefbrowser.
    Ich habe das gerade nochmal getestet.
    Wenn ich bei vaapivideo den Menüpunkt HbbTV im OSD aufrufe, kommt sofort eine Meldung dass der Browser nicht verfügbar ist.

    Ob da der cefbrowser anders gebaut oder anders gestartet werden müsste kann ich auch nicht sagen.


    SAT>IP-Server: Kathrein EXIP 418
    SAT>IP-Client + Server für Aufzeichnungen: VM in proxmox, MLD 6.5 testing (Hardware i5-6500T, 16GB, 256GB)
    SAT>IP-Client 1: NUC7PJYH (Intel HD Graphics 605), MLD 6.5 testing, One For All URC 7960,
    SAT>IP-Client 2: NUC6CAYS (Intel HD Graphics 500), MLD 5.5 testing, One For All URC 7960,

    Media-Server: Synology DS215j
    AV-Geräte: Hisense H65MEC5550, Dali Zensor 5 AX, Teufel S6000SW

  • Wenn du MLD verwendest, können dir Entwickler wie rfehr da bestimmt weiterhelfen. Ob der Menüpunkt HbbTV auch https://github.com/Zabrimus/vdr-plugin-web anwählt, weiß ich nicht. Jedenfalls brauchst du dafür den cefbrowser im Hintergrund und für videos remotetranscode. Und die drei Sachen sind absolut unabhängig vom Ausgabeplugin. VDR verarbeitet den TS-Stream und das Ausgabedevice bekommt fürs OSD nur "Bilder". Vielleicht helfen dir die Readme der Plugins weiter um zu verstehen, wie das alles funktioniert.

    Daher funktioniert mit vaapivideo das vdr-plugin-web nicht, da der dazu benötigte cefbrowser ohne XServer nicht funktioniert. ist schlichtweg falsch. VDRSternElec z.B. hat alle Komponenten dabei und das läuft. Hier auf einem RPI4 ohne X.

  • Quote

    Wenn ich bei vaapivideo den Menüpunkt HbbTV im OSD aufrufe, kommt sofort eine Meldung dass der Browser nicht verfügbar ist.

    Diese Fehlermeldung ist leider in einem Fall blanker Unsinn und hat mich schon zu einer Fehlersuche getrieben, die völlig unnötig war. Und jedesmal denke ich, ich muss das dringend ändern. Und jedesmal kam etwas anderes wichtigeres dazwischen.

    Zuallererst müssen 3 Komponenten installiert sein und in der sockets.ini muss die richtige IP konfiguriert sein. Falls das Plugin, der Browser und der Transcoder auf der gleichen Maschine laufen, funktioniert die IP Adresse 127.0.0.1. Welche sockets.ini verwendet wird muss jedem der 3 Komponenten per Parameter mitgeteilt werden.

    Jetzt zu der Fehlermeldung: Die kommt auch, wenn a) Der Sender überhaupt kein HbbTV unterstützt, oder falls b) die URLs noch nicht vom VDR zum Browser übertragen wurden damit die Red-Button URL noch nicht in der Browserdatenbank zu finden ist. Das ist bei einer Neuinstallation und dem schnellen Aufruf des Plugins leider fast immer der Fall.
    Am Anfang ist es sinnvoll, erst auf einen öffentlich rechtlichen Sender zu schalten und eine zeitlang (30 Sekunden sollten reichen) zu warten, bevor das Plugin aufgerufen wird. Ich weiß nicht mehr, wie oft die HbbTV URLs im EIT des DVB Streams zu finden sind. Das gilt pro Sender. Ich hatte mir damals ein Script geschrieben, daß einfach immer wieder den Kanal gewechselt hat, gewartet und dann zum nächsten Kanal um die Datenbank zu füllen.

  • Ich habe mir das Problem gestern einmal angeschaut.

    Bisher hatte ich das nur verwendet, wenn auch ein Xserver läuft. Dann starte ich den cefbrowser so, womit auch alles funktioniert:

    Code
    export LD_LIBRARY_PATH=/usr/lib/cefbrowser
    export DISPLAY=:0
    cefbrowser -u /etc/cefbrowser --config /etc/cefbrowser/sockets.ini -s /usr/share/cefbrowser -p /var/lib/cefbrowser -d /var/lib/cefbrowser -z 1920

    Damit sich der cefbrowser auch ohne Xserver starten lässt, habe ich zusätzlich die Optionen `--headless --disable-gpu` hinzugefügt.

    Code
    export LD_LIBRARY_PATH=/usr/lib/cefbrowser
    cefbrowser -u /etc/cefbrowser --config /etc/cefbrowser/sockets.ini -s /usr/share/cefbrowser -p /var/lib/cefbrowser -d /var/lib/cefbrowser -z 1920 --headless --disable-gpu

    Damit startet dann zwar der cefbrowser ohne Fehlermeldungen, und laut VDR Log wird auch auf den zugegriffen, aber im OSD wird nichts vom HbbTV angezeigt. Wie gesagt, direkt zuvor hatte es mit Xserver funktioniert.

    Wenn Du den cefbrowser erfolgreich ohne Xserver verwendest, musst Du da noch irgendwas anderes konfiguriert, oder andere Optionen verwendet haben.

    Hast Du noch einen Tipp?

    PS.: Wir verwenden die cefbrowser Version vom 18.04.2025 ab723a4. Das müsste ich mal updaten, aber ist vermutlich unerheblich für dieses Problem.

    MLD 6.5 mit vdr 2.7 - lirc yaUSBir - 4 x DD-Sat - SCR - Intel N100M - 4GB RAM - WD Green 12TB HDD - 22TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 6.5 mit vdr 2.7 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

    Edited 2 times, last by clausmuus (August 26, 2026 at 9:48 AM).

  • Wenn es mit X funktionierte, dann muss es auch ohne gehen. Die Meldungen aus dem Plugin deuten daraufhin, daß die Kommunikation grundsätzlich funktioniert.

    Wir verwenden die cefbrowser Version vom 18.04.2025 ab723a4. Das müsste ich mal updaten, aber ist vermutlich unerheblich für dieses Problem.

    Danach kamen schon ein paar Bugfixes rein. Wenn es mit X funktionierte, dann muss es auch ohne gehen. Ein Update scheint aber sinnvoll. Aber erstmal das eigentliche Problem (ohne X) lösen.

    Wenn Du den cefbrowser erfolgreich ohne Xserver verwendest, musst Du da noch irgendwas anderes konfiguriert, oder andere Optionen verwendet haben.

    Die Standardparameter, die ich verwende (in VDR*ELEC ohne X) sehen wie folgt aus:

    Code
    /storage/browser/addon.cefbrowser/bin/cefbrowser \
    	--zoom=1920 \
    	--config /storage/.config/vdropt/sockets.ini \
    	--ozone-platform=headless \
    	--locales-dir-path=/storage/browser/addon.cefbrowser/lib/locales \
    	--log-file=/storage/.cache/cefbrowser/cefbrowser.log \
    	--cachePath=/storage/.cache/cefbrowser \
    	--profilePath=/storage/.cache/cefbrowser \ 
    	--staticPath=/storage/browser/addon.cefbrowser/data \
    	--use-angle=gl-egl

    Interessant dürften die Parameter --ozone-platform=headless und --use-angle=gl-egl sein. Der Rest hängt von der Installation ab und wo was installiert/geschrieben werden soll. Nicht alle sind notwendig, wenn die Standardpfade verwendet werden.

  • Post by stegro (August 26, 2026 at 11:05 AM).

    This post was deleted by the author themselves: unset DISPLAY ist wichtig (August 26, 2026 at 11:06 AM).
  • Danke für die Hinweise.

    mit den Parametern -ozone-platform=headless --disable-gpu funktioniert es jetzt auch ohne Xserver. Der Parameter --use-angle=gl-egl verursacht bei meinem Test einen Konflikt der GLES Version EGL Driver message (Error) eglCreateContext: Requested GLES version (3.0) is greater than max supported (2, 0) das muss ich erst noch untersuchen.

    MLD 6.5 mit vdr 2.7 - lirc yaUSBir - 4 x DD-Sat - SCR - Intel N100M - 4GB RAM - WD Green 12TB HDD - 22TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 6.5 mit vdr 2.7 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • starte ich im terminal:

    ./cefbrowser --config=/etc/vdr/sockets.ini --ozone-platform=headless --disable-gpupu

    bekomme ich leider immer noch:

    "Der Browser ist nicht verfügbar"

    der VDR läuft dabei als user "vdr" und den cefbrowser starte ich als normaler user.

  • Danke für die Hinweise.

    mit den Parametern -ozone-platform=headless --disable-gpu funktioniert es jetzt auch ohne Xserver. Der Parameter --use-angle=gl-egl verursacht bei meinem Test einen Konflikt der GLES Version EGL Driver message (Error) eglCreateContext: Requested GLES version (3.0) is greater than max supported (2, 0) das muss ich erst noch untersuchen.

    bei mir musste ich noch "unset DISPLAY" machen

  • bei mir musste ich noch "unset DISPLAY" machen

    Und danach funktionierte es? Das Framework CEF basiert auf den Chromium Sourcen und enthält einen großen Teil des Browsers und das scheint DISPLAY auszuwerten. Das Framework selbst baut eine API drumherum, damit es auch embedded verwendet werden kann.

  • Und danach funktionierte es? Das Framework CEF basiert auf den Chromium Sourcen und enthält einen großen Teil des Browsers und das scheint DISPLAY auszuwerten. Das Framework selbst baut eine API drumherum, damit es auch embedded verwendet werden kann.

    Leider nein, ich bekomme immer noch: "Der Browser ist nicht verfügbar"
    Allerdings läuft es bei unter "X" auch gerade nicht. Ich habe vdr 2.8.2 von Seahawk

  • Bei yavdr-ansible gibt es die Besonderheit, dass die Session-Variablen aus der Xorg-Sitzung vom VDR beim Start eingelesen werden (das OpenBox autostart-Skript in /var/lib/vdr/.config/openbox/autostart schreibt die in eine Datei: https://github.com/yavdr/yavdr-an…autostart.j2#L5 ) und der VDR holt sich daraus die Umgebungsvariablen über dieses Snippet für die Systemd-Unit: https://github.com/yavdr/yavdr-an…/vdr-environ.j2

    Das muss man für das Szenario mit vaapivideo vermutlich anpassen bzw. DISPLAY übersteuern.

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Bei yavdr-ansible gibt es die Besonderheit, dass die Session-Variablen aus der Xorg-Sitzung vom VDR beim Start eingelesen werden (das OpenBox autostart-Skript in /var/lib/vdr/.config/openbox/autostart schreibt die in eine Datei: https://github.com/yavdr/yavdr-an…autostart.j2#L5 ) und der VDR holt sich daraus die Umgebungsvariablen über dieses Snippet für die Systemd-Unit: https://github.com/yavdr/yavdr-an…/vdr-environ.j2

    Das muss man für das Szenario mit vaapivideo vermutlich anpassen bzw. DISPLAY übersteuern.

    Hi, ich benutze aber nur deine Pakete und installiere die über ein Ubuntu 26.4. Eine gute Gelegenheit mal Danke dafür zu sagen!
    Dann habe ich zwei Möglichkeiten meinen Test Rechner zu booten, einmal mit X, einmal als server für vaapivideo, ich beiden Szenerien bekomme ich obige Fehlermeldung. "Früher" hatte ich das schon mal mit "X" laufen.

  • "Früher" hatte ich das schon mal mit "X" laufen.

    Gibt es denn die Datenbank hbbtv_urls.db? Die kann an verschiedenen Stellen liegen:

    • im Unterordner database in sich auch der cefbrowser befindet (der Default)
    • Über das Environment kann der Pfad (das Verzeichnis) gesetzt werden BROWSER_DB_PATH
    • Oder aber über den Parameter -d <pfad>

    Die Datenbank sollte neu angelegt werden, falls nicht vorhanden. Und darin befinden sich die URLs für die Seiten. Dann würde ich auf einen ÖR-Sender wechseln und einfach mal warten...warten... Bis die URLs für den Sender den Browser erreichen und dann erst das Plugin aufrufen.

    Mit sqlite3 kann man sich die Datenbank auch anschauen. Sie ist relativ unspektakulär. Dabei fällt mir ein, ich muss die Vodafone West Demo Datenbank auch neu aufbauen lassen, da sich die Channel-Ids geändert haben.

    Wenn alle Prozesse laufen und die Verbindung klappt, dann kann es eigentlich nur an der Datenbank liegen, die noch nicht automatisch angelegt wurde oder wenn die URLs noch nicht eingelaufen sind.

    Ich habe mal geschaut, wie ich die Fehlermeldung verbessern kann. Das würde ich gerne mit einem umfangreichen Update verbinden, aber ein paar Seiten werden noch sehr seltsam dargestellt. Wird also etwas dauern.

  • Gibt es denn die Datenbank hbbtv_urls.db? Die kann an verschiedenen Stellen liegen:

    • im Unterordner database in sich auch der cefbrowser befindet (der Default)

    Leider nicht, ich habe den prefill mal gelöscht, die wird nicht neu aufgebaut.
    Ich habe die default sockets.ini, habe aber den Verdacht, dass die Kommunikation nicht mehr funktioniert.

  • Leider nicht, ich habe den prefill mal gelöscht, die wird nicht neu aufgebaut.
    Ich habe die default sockets.ini, habe aber den Verdacht, dass die Kommunikation nicht mehr funktioniert.

    Der Browser muss in dem Verzeichnis (working directory) gestartet werden, in dem die ganze Installation liegt. Startest du den Browser manuell auf der Konsole? Dann häng mal den Parameter -l 3 an. Sobald das Plugin Kontakt zum Browser aufnimmt, sollten viele Log-Meldungen ausgegeben werden. Das ist nicht für den Produktivbetrieb gedacht, sondern nur zur Fehlersuche.

    Das Verzeichnis sollte so aussehen

    Nicht an den File-Größen stören. Die *.so und der Browser sind alle nicht gestrippt.

    Die sockets.ini wird im Browser mit --config=/dir/unterdir/sockets.ini und im Plugin mit -c /dir/unterdir/sockets.inikonfiguriert. Für den RemoteTranscoder geht das ähnlich.

  • Hi habe ich so gemacht,

    es sieht so aus, als ob der cefbrowser gar nicht konnektiert wird, ausser der start Meldung bekomme ich nichts:

    Display Spoiler

    ./cefbrowser --config=/etc/vdr/sockets.ini -l 3
    [0827/095845.338598:WARNING:alloy_main_delegate.cc(559)] Alloy bootstrap is deprecated and will be removed in ~M127. See https://github.com/chromiumembedded/cef/issues/3685

    DevTools listening on ws://127.0.0.1:9222/devtools/browser/6d0fba6a-189c-48fa-adcb-bca5e80efd63
    [2026-08-27 09:58:46.067] [cefbrowser] [debug] [mainapp.cpp:97] BrowserApp::OnContextInitialized()
    [2026-08-27 09:58:46.126] [cefbrowser] [info] [mainapp.cpp:125] Start Server on 127.0.0.1:50001 with static path /home/stefan/devel/vdr-devel/cefbrowser/build/Release
    [0827/095846.332447:WARNING:sandbox_linux.cc(430)] InitializeSandbox() called with multiple threads in process gpu-process.


    Das ist die sockets.ini

    Display Spoiler

    [vdr]
    http_ip = 127.0.0.1
    http_port = 50000

    [browser]
    http_ip = 127.0.0.1
    http_port = 50001

    [transcoder]
    http_ip = 127.0.0.1
    http_port = 50002



    das sagt syslog:

    Display Spoiler


    [vdrweb] Start hbbtv url collector
    [vdrweb] Start Thrift Server on :0
    [vdrweb] Attached HbbTV ait filter to device 1, vdrDev=2 actDev=1, Sid=0x0301
    [vdrweb] Detaching HbbTV ait filter from device 1
    [vdrweb] Attached HbbTV ait filter to device 1, vdrDev=2 actDev=1, Sid=0x0301

  • [vdrweb] Start Thrift Server on :0

    Das sieht nicht gut aus. Da müsste sowas stehen:

    Code
    [vdrweb] Start Thrift Server on 127.0.0.1:50000

    Das Plugin scheint die sockets.ini nicht lesen zu können oder diese ist nicht konfiguriert.
    Kannst du mal die Log vor dem Eintrag mit [vdrweb]raussuchen? Da gibt es eine Menge Warnungen, wenn das File nicht gelesen werden kann, das falsche Format hat oder Werte nicht vorhanden sind.

    [vdrweb] Start hbbtv url collector

Participate now!

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