Hallo,
endlich habe ich den ersten Milestone erreicht. Wie ich in dem Thread bereits angedeutet habe, bastle ich an einem Web/HbbTV Plugin.
Aktuell schaue ich mir auf einen VDR*ELEC (CE19, odroid n2+) ein Video aus der ARD Mediathek an
Die Seiten von ARD/ZDF sind am Besten getestet. Alle anderen Sender haben noch Fehler, funktionieren gar nicht oder nicht wie gewünscht.
Alle URLs und Kanalinformationen werden vom VDR an den Browser gesendet und der Browser nutzt eine sqllite Datenbank um alles zu speichern. Bis die Datenbank genug gefüllt ist, können ein paar Minuten vergehen.
Für Vodafone-West Nutzer habe ich schon eine Datenbank erstellt:
cefbrowser/static-content/database/Vodafone_West_hbbtv_urls.db
Die Datenbank einfach nach hbbtv_urls.db umbenennen und damit verkürzt man die Wartezeit ein wenig.
Ein anderes Thema sind eigene HbbTV Applikationen. Wählt man das web-Plugin im Menu und drückt dann die Info-Taste, wird eine andere (extrem simple) lokale Applikation (cefbrowser/static-content/application/main) gestartet. Falls alles zufriedenstellend läuft, muss ich mir mal Gedanken machen, ob es eigene sinnvolle Applikationen gibt, die man bauen kann. Aber das ist noch sehr weite Zukunftsmusik. BBC hat ein (leider deprecated) Framework, das recht vielversprechend aussieht: TV Application Layer.
Probleme:
- Der Browser muss mit CE19 auf jeden Fall in einem Docker Container auf der Zielmaschine laufen. Die notwendigen Libs habe ich nicht nativ kompilieren können. Ich denke CE20-ng und CE21-ng werden auch nicht ohne Docker funktionieren. Bei CE20-ne, CE21-ne und LibreELEC gibt es Hoffnung, daß man die Libs alle zusammen bekommt (für CE19 ist das bei libgbm gescheitert, in der libmali sind notwendige Funktionen nicht vorhanden).
Mir fehlen allerdings die Testsysteme, um das zu probieren.
- Den Transcoder habe ich auf einem anderen Rechner installiert, der schneller ist. Der Transcoder selbst kann aktuell nur den Video-/Audiostream kopieren. Ein echtes Transcoding für den Fall, daß die Eingangs-Codecs nicht passen (h264, h265, aac, ac3,..) muss noch implementiert werden. Auch die Auswahl des besten Streams im Falle von mpeg-dash ist etwas, was noch fehlt.
Ich muss noch testen, ob das Video-/Audio-Stream-Copy auf dem odroid schnell genug funktioniert, allerdings bin ich mir nicht sicher, ob das sinnvoll ist. Gerade, wenn eine SD-Karte im Einsatz ist könnte das etwas lebensverkürzend sein.
- Der Seitenaufbau fühlt sich nicht so geschmeidig an, wie auf dem Entwicklungsrechner. Aber das dürfte zu verschmerzen sein. Vielleicht kann ich irgendwo noch etwas Speed rausholen.
- Der Browser muss leider noch manuell auf der Konsole gestartet werden. Ein automatischer Start zusammen mit dem Plugin muss noch implementiert werden. Mir ging es erst einmal nur darum, zu prüfen, ob alles auf dem odroid läuft.
Installation:
- Das VDR-Plugin ist problemlos.
- Der Remotetranscoder hat auch keine großen Haken. ffmpeg und ffprobe müssen auf der Maschine installiert sein, auf dem der Transcoder läuft.
- Die Installation des Browsers inkl. Docker habe ich für CE19 auf Github beschrieben.
- Binaries (amd64, armhf, arm64) für die Docker-Images und den Browser lasse ich per Github Workflow erzeugen und damit kommt man schnell zu einem Ergebnis.
Benutzer mit einem amd64 und X11 oder einem aktuellen mesa dürften die geringsten Probleme haben, alles zum laufen zu bekommen.
Als nächstes muss ich das Plugin erweitern, damit der Browser automatisch startet. Die aktuelle Situation (Start auf einer anderen Shell) ist absolut nicht zufriedenstellend. Und danach muss ich entscheiden, ob Seiten anderer Sender oder der Transcoder die freien Timeslots bekommen oder ob das bedarfsorientiert erledigt wird.
Falls es jemand mit CE/LE probieren will und evt. Lösungen für auftretende Probleme hat, würde ich mich über eine Rückmeldung freuen
Auch falls doch mal irgendwas crasht oder nicht funktioniert wäre eine Rückmeldung schön. Aber wie gesagt: Die freien Timeslots sind das Problem.
Auch gut gefüllte Datenbanken (hbbtv_urls.db) werden gerne genommen. Damit könnte man dann Seiten aufrufen für Sender, die man eben nicht empfängt.
Links:
https://github.com/Zabrimus/vdr-plugin-web
https://github.com/Zabrimus/remotetranscode
https://github.com/Zabrimus/cefbrowser
https://github.com/Zabrimus/docker-images
https://github.com/Zabrimus?tab=packages
https://github.com/Zabrimus/cefbrowser/releases