Works together with vdr-plugin-web and remotetranscode to show HbbTV application and stream videos.
apt install -y zlib1g-dev:armhf libssl-dev:armhf libcrypt-dev:armhf libglib2.0-dev:armhf libnss3-dev:armhf \
libatk1.0-dev:armhf libatk-bridge2.0-dev:armhf libcups2-dev:armhf libxcomposite-dev:armhf libxdamage-dev:armhf \
libxrandr-dev:armhf libgbm-dev:armhf libxkbcommon-dev:armhf libpango1.0-dev:armhf libasound2-dev:armhf
sudo apt install -y zlib1g-dev:arm64 libssl-dev:arm64 libcrypt-dev:arm64 libglib2.0-dev:arm64 libnss3-dev:arm64 \
libatk1.0-dev:arm64 libatk-bridge2.0-dev:arm64 libcups2-dev:arm64 libxcomposite-dev:arm64 libxdamage-dev:arm64 \
libxrandr-dev:arm64 libgbm-dev:arm64 libxkbcommon-dev:arm64 libpango1.0-dev:arm64 libasound2-dev:arm64
./setup.sh <arm, arm64 or x86>
meson setup build
cd build
meson compile
meson install
The whole binary including all necessary files/libs exists in folder build/Release
.
A default configuration can be found in folder config: sockets.ini
.
🔥 All ports/ip addresses in sockets.ini
must be the same as for vdr-plugin-web
and remotetranscoder
.
It's safe to use the same sockets.ini for all of the three parts (vdr-plugin-web, cefbrowser, remotetranscoder).
Change to directory build/Release
.
./cefbrowser --config=/path/to/sockets.ini --remote-allow-origins=http://localhost:9222
or if you don't need the possibility to debug the application in Chrome
./cefbrowser --config=/path/to/sockets.ini
cefbrowser knows parameters which exists exclusively for the browser. Apart from these parameter a huge list of other parameters exists. Nearly of parameters of Chromium can be used. See e.g. here. It's up to you to decide what you want to use and test ;)
-c / --config </path/to/sockets.ini> (mandatory parameter)
-l / --loglevel <level> (from 0 to 4, where 4 means very, very verbose logging)
-z / --zoom <value> Zooms the http page to the desired width.
The result often looks much better than the default value 1280.
The downside is, that more data needs to be processed or send.
Valid values are: 1280, 1920, 2560 and 3840
-q / --osdqoi The images between the browser and VDR are compressed using
[qoi](https://qoiformat.org/) and are transferred via TCP/IP over
the network. With this option the browser can be started on a
different machine as VDR.
-f / --fullosd Normally only changed parts of the OSD are exchanged between
the browser and VDR. With this option the full OSD will exchanged.
This is much slower but could lead to visual better results.
-p / --profilePath <path> Defines the path where cefbrowser shall
save his profile data
-s / --staticPath <path> Mandatory static content can be found in
this directory. E.g. css, html, javascript and so on.
-b / --bindall The browser uses every network interface. Could lead to
interesting effects if Docker/Incus/LXD is also installed.
Log entries will be written to stdout/stderr.
- Das Erste
- ZDF
The binary releases can be used in VDR*ELEC.
Distro | Version | Release |
---|---|---|
CoreELEC | 19 | cefbrowser-armhf-openssl-3.tar.gz |
CoreELEC | 20 | cefbrowser-armhf-openssl-3.tar.gz |
CoreELEC | 21-ng | cefbrowser-armhf-openssl-3.tar.gz |
CoreELEC | 21-ne | cefbrowser-arm64-openssl-3.tar.gz |
LibreELEC | all | cefbrowser-arm64-openssl-3.tar.gz |
-
Install Kodi docker addon
- System
- Addons
- Aus Repository installieren
- CoreELEC Add-ons
- Dienste
- Docker
-
Add docker bin to PATH
nano /storage/.profile
add
export PATH=/storage/.kodi/addons/service.system.docker/bin/:$PATH
reboot
-
Pull latest docker base runtime image of the cefbrowser
/storage/.kodi/addons/service.system.docker/bin/docker pull ghcr.io/zabrimus/cefbrowser-base:latest
-
Get and install cefbrowser binary (adapt version if desired)
mkdir -p /storage/browser cd /storage/browser wget https://github.com/Zabrimus/cefbrowser/releases/download/2023-07-01/cefbrowser-armhf-openssl-3-5ab33f2.tar.gz tar -xf cefbrowser-armhf-openssl-3-5ab33f2.tar.gz ln -s cefbrowser-armhf-openssl-3-5ab33f2 cefbrowser
-
Adapt sockets.ini accordingly and copy sockets.ini to
/storage/browser/cefbrowser
sample sockets.ini can be found in the repository/config/sockets.ini
[vdr] http_ip = 192.168.178.12 http_port = 50000 [browser] http_ip = 192.168.178.12 http_port = 50001 [transcoder] http_ip = 192.168.178.20 http_port = 50002
-
Optional: hbbtv sqllite3 database
For Vodafone West user a prefilled database exists in /storage/browser/cefbrowser/database/.
cp /storage/browser/cefbrowser/database/Vodafone_West_hbbtv_urls.db /storage/browser/cefbrowser/database/hbbtv_urls.db
All others needs to copy an already existing database or have to prefill the database. A channel switch to the desired channel and wait some minutes is sufficient.
-
start the browser via docker (first test, manual start)
cd /storage/browser/cefbrowser /storage/.kodi/addons/service.system.docker/bin/docker run -d --rm -v /storage/browser/cefbrowser:/app -v /dev/shm:/dev/shm --ipc="host" --net=host ghcr.io/zabrimus/cefbrowser-base:latest -ini sockets.ini &> /storage/browser/browser.log
-
start the browser automatically via systemd The systemd service
start-scripte/cefbrowser.service
contains a sample service configuration which i use on my system.[Unit] Description=cefbrowser Requires=network-online.target graphical.target docker.service StartLimitIntervalSec=400 StartLimitBurst=5 [Service] RestartSec=30 Restart=always StandardOutput=file:/storage/browser/cefbrowser/browser.log StandardError=file:/storage/browser/cefbrowser/browser-error.log TimeoutStartSec=0 ExecStop=/storage/.kodi/addons/service.system.docker/bin/docker container stop --time=2 cefbrowser ExecStartPre=-/storage/.kodi/addons/service.system.docker/bin/docker exec cefbrowser stop ExecStartPre=-/storage/.kodi/addons/service.system.docker/bin/docker rm cefbrowser ExecStartPre=/storage/.kodi/addons/service.system.docker/bin/docker pull ghcr.io/zabrimus/cefbrowser-base:latest ExecStart=/storage/.kodi/addons/service.system.docker/bin/docker run --rm --name cefbrowser \ -v /storage/browser/cefbrowser:/app \ -v /dev/shm:/dev/shm \ --ipc="host" \ --net=host \ ghcr.io/zabrimus/cefbrowser-base:latest \ -ini sockets.ini [Install] WantedBy=multi-user.target
which can be copied to
/storage/.config/system.d/cefbrowser.service
An important configuration isRestartSec=30
, otherwise the browser will be started, before docker is up and running. -
In VDR*ELEC i've added a configuration in
/storage/.profile
START_CEFBROWSER=yes
and in
/storage/.config/autostart.sh
i've added the following entries. /storage/.profile if [ "${START_CEFBROWSER}" = "yes" ]; then systemctl start cefbrowser fi
-
Choose a channel in VDR and goto Menu/Web. Wait or press directly the red button.