c't 18/2023
S. 154
Praxis
Android-Beamer: Streaming-App nachrüsten
Bild: Albert Hulm

Projektionsprojekt

TV-Programm auf Android-Beamer streamen

Die meisten günstigen Beamer laufen unter Android, sodass man auf ihnen mit ein paar Tricks Apps als Zuspieler installieren und ihnen sogar das Fernsehprogramm beibringen kann. Unsere App dafür können Sie einfach nutzen oder mit unseren Tipps mächtig aufbohren.

Von Mark Liebrand

Abseits der Heimkinohelden um 4K-Beamer, große Fernseher und Surroundanlagen hat sich ein Markt für günstige Beamer gebildet. Sie wollen gar nicht auf der großen Bühne stehen, auch weil sie mit LED statt Laser projizieren und durchweg lichtschwächer sind als die teuren Modelle. Stattdessen erschließen sie mit kompakten Gehäusen und vorinstallierten Apps Beamer-Neuland, beispielsweise weitere Zimmer, Schrebergarten, Ferienwohnung oder Camper, die Modelle mit eingebautem Akku auch stromlose Ecken. Einen Test günstiger Beamer finden Sie in c’t 3/2023, Seite 98.

Viele der günstigen Beamer laufen allerdings nicht mit dem komfortablen Android TV, sondern mit einem alten Android ohne Google Play, es gibt also keinen App-Store. Apps bekommt man daher nur über Umwege installiert (siehe Kasten „Praxistipps für günstige Android-Beamer“ mit weiteren Praxistipps), und selbst dann funktionieren viele aufgrund der fehlenden Google Play Services und der alten Android-Versionen nicht. Läuft eine App, lässt sie sich mangels Touchscreen nur per Fernbedienung steuern, was viele Apps nur unzureichend unterstützen, wenn überhaupt.

Die eigene Streaming-App

Unsere selbst geschriebene App macht solche Beamer – und auch die mit Android TV laufenden – etwas smarter: Sie streamt das TV-Programm und andere Quellen per WLAN, was den Kabelsalat reduziert und den Komfort erhöht, weil man keine zusätzlichen Geräte braucht. Sie wählen die TV-Sender und andere Quellen einfach mit der Fernbedienung und starten die Übertragung wie bei einem normalen Fernseher. Mit dem FTP-Browser der App lassen sich Filme beispielsweise von einem NAS streamen, unterwegs per WireGuard (siehe Kasten). Wenn Sie einen Receiver mit Enigma/Newnigma nutzen, können Sie direkt davon streamen und dessen EPG-Informationen abrufen.

Sie können die App einfach herunterladen und loslegen (siehe ct.de/y48y). Oder Sie lesen weiter und erfahren in den folgenden Abschnitten, wie Sie die App erweitern und was bei der App-Entwicklung für solche Beamer zu beachten ist.

Die Streaming-App integriert die frei verfügbaren Live-TV-Streams der Sender in eine App, die auf Beamern mit Fernbedienung und alten Android-Versionen läuft.
Die Streaming-App integriert die frei verfügbaren Live-TV-Streams der Sender in eine App, die auf Beamern mit Fernbedienung und alten Android-Versionen läuft.

Falls Sie die App nur nutzen wollen: Man konfiguriert sie über einen Browser auf einem PC, der im gleichen WLAN wie der Beamer eingebucht sein muss. Rufen Sie die Einstellungsseite auf, dessen Adresse die App auf dem Startbildschirm anzeigt: http://<IP des Beamers>:8181. Es erscheint dann eine INI-Datei, die Sie bearbeiten. In den Kommentarzeilen finden Sie weitere Informationen zu den Einstellungen. Im Beispiel belegen Sie die 16 Programmtasten mit den URLs, die abgespielt werden sollen. Welche das für verschiedene TV-Sender sind, beschreiben wir unter ct.de/y48y. Wer zu Hause IP-Kameras hat, kann deren Videobilder über RTSP auf den Beamer streamen, falls deren URL mit „http“ oder „rtsp“ beginnen. Die unterstützten Videoformate entnehmen Sie der Exoplayer-Doku unter ct.de/y48y.

Zusätzlich zeigt die App die Wettervorhersage sowie die Zeiten für den Sonnenaufgang und -untergang an. Die Wetterdaten holt sie per Bright-Sky-API vom Deutschen Wetterdienst. Den Längen- und Breitengrad dafür stellen Sie ebenfalls auf obiger Konfigurationsseite ein.

Receiver und WireGuard

Wollen Sie von einem Enigma/Newnigma-Receiver streamen, aktivieren Sie die „Enigma“-Sektion enable=yes und tragen die IP des Receivers ein. Beim nächsten Start der App zeigt die Konfiguration die Service IDs der Sender aus dem Favoriten-Bouquet des Receivers. Tippen Sie für die gewünschten Sender auf den jeweiligen „URL“-Knopf daneben und kopieren Sie die dann erscheinende vollständige Streaming-URL auf den gewünschten Programmplatz. Um EPG-Informationen anzuzeigen, tragen Sie die Service ID beim Schlüssel „serviceId“ ein.

Falls Sie den Receiver so konfiguriert haben, dass er nach dem Betrieb in ein tiefes Standby geht, können Sie ihn mit der App aufwecken, sofern Sie einen Fritzbox-Router nutzen; das geht auch, wenn der Beamer im Urlaub per VPN im Heimnetz hängt. Aktivieren Sie dazu die „Fritzbox“-Sektion enable=yes und tragen Sie IP, Username, Passwort der Fritzbox ein sowie MAC-Adresse und IP des Receivers. Stellt die Streaming-App fest, dass der Receiver nicht per IP erreichbar ist, versucht sie, ihn per Wake-On-LAN über die Fritzbox aufzuwecken.

Wer WireGuard installiert hat (siehe Kasten), kann die App so konfigurieren, dass sie in fremden Netzen automatisch den VPN-Client aktiviert. Aktivieren Sie dazu die WireGuard-Unterstützung enable=yes und tragen Sie den Namen des zu aktivierenden Tunnels und den IP-Bereich des heimischen Netzes ein.

Die Streaming-App wird per Browser auf einem PC konfiguriert; wer es komfortabler mag, müsste selbst Hand an den Code legen.
Die Streaming-App wird per Browser auf einem PC konfiguriert; wer es komfortabler mag, müsste selbst Hand an den Code legen.

Versteckte Entwickleroptionen

Falls Sie die App weiterentwickeln wollen, finden Sie die Quellcodes auf ct.de/y48y. Ihre erste Hürde: Sie müssen den Entwicklermodus auf dem Beamer aktivieren, aber wie? Bei normalen Android-Geräten geht das im Einstellungsmenü, doch das fehlt auf den meisten Beamern. Deren vorinstallierte Launcher schränken den Zugang zum Einstellungsmenü stark ein oder verstecken ihn ganz.

Um an die vollständigen Einstellungen zu kommen, besorgt man sich das kleine Hilfsprogramm „QuickShortcutMaker“ (siehe ct.de/y48y). Nach der Installation (siehe Kasten) erscheint die App im Launcher. Starten Sie sie und suchen Sie in der erscheinenden Liste der Activities den Punkt „Einstellungen“. Klicken Sie darauf und wählen Sie nach einem Rechtsklick „versuchen“, dann sollte der komplette Einstellungsbildschirm erscheinen. Um den Entwicklermodus zu aktivieren, navigieren Sie wie auf jedem Android-Gerät zu „Über das Gerät“ und tippen siebenmal auf das Feld mit der Build-Nummer von Android. Die Entwickleroptionen erscheinen im Hauptmenü oder System-Untermenü der Einstellungen, dort aktivieren Sie das USB-Debugging und, falls vorhanden, das WLAN-Debugging.

Ist der Entwicklermodus einmal aktiviert, funktioniert das Debuggen selbst recht komfortabel. Man braucht einen Rechner (Windows, macOS oder Linux) mit Android Studio und den Sourcecode der App (siehe ct.de/y48y). Entwickler-Smartphones schließt man üblicherweise per USB an, doch nur wenige Beamer dürften sich darüber debuggen lassen – probieren Sie es ruhig aus.

Falls das nicht funktioniert, muss man den Beamer per WLAN-Debugging ansprechen. Android sieht das durchaus vor, sofern Rechner und Android-Gerät im gleichen LAN eingebucht sind. Mit den folgenden Schritten lassen sich also auch Smartphones, Tablets oder Android-TVs per WLAN debuggen.

Öffnen Sie in Android Studio ein Terminal. Navigieren Sie in das Verzeichnis, in dem adb.exe (die Android Debug Bridge, ein Teil des Android SDK) liegt. Oder für Entwickler ratsamer, fügen Sie diesen Pfad beispielsweise unter Windows dem PATH hinzu. Der Aufruf adb connect <IP des Beamers> verbindet den Android-Debugger mit dem Beamer. Die IP des Beamers finden Sie entweder in dessen Einstellungen, oder Sie schauen in der Netzübersicht Ihres Routers nach. In Android Studio sollte der Beamer erscheinen und Sie können die App somit ans Gerät schicken und dort debuggen.

Die Verbindung bleibt nicht permanent bestehen, beispielsweise nach dem Ausschalten des Beamers müssen Sie sie erneut herstellen. Ob der Beamer seine IP behalten hat oder Sie erneut auf die Suche gehen müssen, hängt davon ab, ob Sie ihm beispielsweise im Routermenü eine feste IP-Adresse zugewiesen haben.

Die Beamer bekommt man auch über WLAN-Debugging mit Android Studio verbunden (oben). In der App ist wichtig, im onPause()-Event (rechts) die Wiedergabe anzuhalten, damit die App nicht im Hintergrund weiter streamt., Bild: Mark Liebrand
Die Beamer bekommt man auch über WLAN-Debugging mit Android Studio verbunden (oben). In der App ist wichtig, im onPause()-Event (rechts) die Wiedergabe anzuhalten, damit die App nicht im Hintergrund weiter streamt.
Bild: Mark Liebrand

Video mit dem Exoplayer

Die App nutzt zur Videoausgabe die Open-Source-Bibliothek Exoplayer, welche die Audio- und Videofunktionen von Android für eigene Apps nutzbar macht. Deren Version 2.18.2 ist nach unserem Kenntnisstand die neueste, die mit dem Android 8 vieler Beamer kompatibel ist.

Der Exoplayer nutzt die Codecs des zugrundeliegenden Android und unterstützt verschiedene Streamformate. Was er nicht vollständig beherrscht, ist der Umgang mit m3u8-Dateien. Dies sind Metadateien, die ein Streamangebot beschreiben. Im einfachsten Fall steht nur die Streaming-URL in der Datei, sie kann aber auch verschiedene Auflösungen und Audioformate beschreiben oder gar eine „Senderliste“ mit mehreren solchen Einträgen enthalten. Das Streamingangebot der ARD beispielsweise bietet die Wahl zwischen unterschiedlichen Auflösungen sowie Deutsch und Originalton.

Die Player-App muss daher einen eigenen Parser für die m3u8-Varianten der wichtigsten deutschen TV-Sender selbst implementieren. Seine Aufgabe besteht im Wesentlichen darin, für die in der Konfiguration eingestellte Bandbreite den richtigen Stream auszuwählen. Listen von URLs für das Streaming finden Sie auf ct.de/y48y.

Einbinden der Fernbedienung

Damit die App am Beamer gut zu bedienen ist, soll sie sich per Fernbedienung steuern lassen. An allen von uns ausprobierten Beamern erzeugen die Fernbedienungen nicht die bei Touchbedienung üblichen onClick()-Events, sondern die von USB- und Bluetooth-Tastaturen kommenden onKeyUp()-Events. Die lassen sich in der App aber ähnlich gut abfangen.

Das Steuerkreuz in der Mitte liefert KEYCODE_DPAD_CENTER, ..._LEFT, ..._RIGHT, …_UP und …_DOWN. In der App muss man den aktuellen Fokus selbst nachführen, also wo der Fokus hinspringen soll, wenn eine Richtungstaste gedrückt wird. Zudem sollte man das View-Element mit dem Fokus hervorgehoben darstellen, damit der Nutzer sieht, wo er steht. Um die Anwendung möglichst kompatibel mit Touchoberflächen zu halten, empfiehlt es sich, als Reaktion auf die _CENTER-Taste einen onClick()-Aufruf abzusetzen, mit dem fokussierten View-Objekt als Parameter.

Gerne hätten wir einen Chromecast-Empfänger in die App eingebaut, damit man vom Handy auf den Beamer streamen kann. Doch das scheitert daran, dass Google das Protokoll nicht offenlegt.

Fazit

Ein mobiler Beamer mit Android ist ein vielseitiges Gerät. Durch die Möglichkeit, Apps zu installieren und sogar selbst zu entwickeln, sind der Fantasie keine Grenzen gesetzt. Mit Batterie und Fernsteuerung ist die Einheit ziemlich autonom. Der Content kann dann theoretisch sogar vom USB-Stick kommen. (jow@ct.de)

APK und Sourcen der Streaming-App: ct.de/y48y

Kommentare lesen (5 Beiträge)