Smartphone oder Tablet als Vorschaumonitor nutzen

HDMI-Vorschaubild als Videostream bereitstellen

Über die Vorzüge eines Vorschaumonitors habe ich kürzlich ausführlich berichtet. Wer Platz für einen separaten Bildschirm hat, ist damit gut beraten. Doch in der heutigen Zeit fragt man sich, warum man nicht andere Bildausgabegeräte als Vorschaumonitor nutzen sollte. Die Rede ist natürlich vom Smartphone oder Tablet. Das liegt sowieso im Wohnzimmer herum oder befindet sich in der Hosentasche.

Die Frage ist nur: Wie bekommt man das Bild vom HDMI-Ausgang des AV-Receivers auf ein Mobilgerät?

Ansicht einer App zur Heimkino-Steuerung mit einem Videostream der aktuellen HDMI-Ausgabe im Vordergrund.

Aus verschiedenen Gründen ist das gar nicht so einfach. Für Smartphones und Tablets gibt es zwar HDMI-Adapter, aber die dienen nur als Ausgang zur Übertragung des Displays auf ein anderes Gerät. Außerdem will man ja das Smartphone nicht erst per Kabel anschließen müssen.

Das weit größere Problem ist HDCP, der Kopierschutz der Blu-ray. Damit ein Gerät diesen legal entschlüsseln darf, muss es sicherstellen, dass die entschlüsselten Bild- und Ton-Informationen nicht in hoher Qualität mitgeschnitten werden können.

Nicht in hoher Qualität — genau das ist unser Ansatz für die heutige Bastelstunde. Gab es da nicht vor einiger Zeit eine Lösung, mit der man sich eine zu Philips Ambilight sehr ähnliche Hintergrundbeleuchtung selbst bauen konnte? Wie greifen die denn auf das Signal zu, um es zu farbigen LED-Streifen passend zum Bildinhalt zu verarbeiten?

  1. Die Idee hinter dem virtuellen Vorschaumonitor
  2. Die Hardware
  3. Aufbauen und zusammen stecken
  4. Die Software einrichten
  5. Optimierung der Anzeige
  6. Typische Probleme

Ein Video des Vorschaubilds in Aktion findet Ihr am Ende des Artikels.

1. Die Idee hinter dem virtuellen Vorschaumonitor

Die Ambilight-Bausätze funktionieren über drei wesentliche Komponenten, um die farbigen Signale für die LED-Stripes zu generieren:

  1. ein Konverter, der aus dem HDMI-Signal ein analoges Composite-Videosignal macht — das mit dem gelben Cinch-Stecker, wie es zu Zeiten von Röhrenfernsehern noch üblich war
  2. ein USB-Videograbber, der dieses Signal entgegen nimmt und es einem PC zur Verfügung stellt, ähnlich einer USB-Webcam
  3. ein PC oder ein anderer kleiner Rechner, der mit der USB-Hardware interagieren kann, das Signal verarbeitet und etwas daraus macht — zum Beispiel bunte LEDs ansteuern oder einen Videostream damit bereitstellen

Ihr seht vielleicht schon die Schwachstelle in dieser Kette: das analoge Videosignal. Das ist qualitativ ziemlich minderwertig. Gerade deshalb darf es die erste Komponente aber überhaupt erst ausgeben, denn sie bricht ja offenbar den HDCP-Kopierschutz (und darf trotzdem verkauft werden).

Ihr werdet später sehen, dass die Bildqualität wirklich hundsmiserabel ist. Für die Ansteuerung von LEDs braucht man aber nicht mehr. Und auch unser Vorschaubild muss sicher keine allzu hohen Qualitätsstandards erfüllen:

  • die Auflösung ist relativ egal, da es auf einem Smartphone oder Tablet nicht größer als ein paar Zentimeter werden muss
  • auf eine hohe Framerate kommt es nicht an, da wir ein Vorschaubild überwiegend für die BD-Menüs benötigen
  • auch auf Ton können wir getrost verzichten
  • wichtig ist hingegen, dass es keine allzu große Verzögerung gibt, bis das Bild letztendlich als Videostream auf unserem Gerät ankommt, denn wir wollen ja ein sofortiges Feedback, wenn wir uns durch die Menüs klicken

Im Grunde geht es also nur darum, ein halbwegs flüssiges Bild ohne nennenswerte Latenz zum Ausgangssignal des AV-Receivers zu bekommen. Das sollte doch zu schaffen sein.

2. Die Hardware

Zunächst einmal gelten die selben Ausgangsbedingungen, wie für einen normalen Vorschaumonitor. Wir wollen jegliche Bildinhalte sehen können, egal ob Blu-ray, Kodi, Streaming-Box oder Spielekonsole. Also greifen wir das Signal vom zweiten HDMI-Ausgang des AV-Receivers ab, wo alles zusammen läuft. Hat der nur einen Ausgang, wird ein HDMI-Splitter benötigt.

Die eigentlichen Komponenten setzen sich wie folgt zusammen:

Darüber hinaus benötigt Ihr folgendes Zubehör:

  • ein Netzteil für den Raspberry Pi, das ausreichend Strom liefert
  • eine Micro SD Speicherkarte für das Betriebssystem
  • 1 Cinch-Kupplung Stecker auf Stecker — oder gleich 3, dann hängen die beiden Audio-Stecker nicht unnötig in der Gegend rum — alternativ genügt hier aber auch erstmal irgend ein altes Cinch-Kabel
  • 1 HDMI-Kabel, das vom AV-Receiver bis zum späteren Standort des Raspberry Pi reicht (falls ein HDMI-Splitter zum Einsatz kommt, wird noch ein weiteres, kurzes HDMI-Kabel benötigt)

Außerdem empfehle ich, das System durch weiteres Zubehör zu komplettieren:

Die Komponenten rund um den Pi entsprechen weitestgehend denen, die ich für eine Kodi-Installation auf dem Raspberry Pi empfehle. Zwar kommt es hier nicht ganz so auf Performance an, ich habe mir aber angewöhnt, von vorneherein gute Komponenten zu verwenden, falls ich den Pi irgendwann für was leistungshungriges nutzen will.

Solltet Ihr bereits über einen anderen Kleinrechner mit Linux-System verfügen, könnt Ihr im Grunde auch diesen nutzen (obwohl ich nicht garantieren kann, dass die Software, die ich gleich ins Spiel bringe, darauf läuft). Ich rate aber davon ab, die Vorschau auf einem System zu erzeugen, auf dem bereits Kodi läuft, weil das die Leistung kritisch beeinflussen könnte. Es spricht aber nichts dagegen, einen vorhandenen Pi mit Raspbian mitzunutzen, auf dem bereits eine Haussteuerung läuft.

2.1 Weitere Anforderungen

Der Raspberry Pi benötigt eine stabile Netzwerk- und Internetverbindung. Internet ist nur für die Installation notwendig, schadet aber auch im späteren Betrieb zwecks Updates nicht. Beim Rasberry Pi 3 könnt Ihr die Verbindung über Euer WLAN herstellen. Besser (und beim 2er und früheren Modellen gar nicht anders möglich) ist es aber, ihn per Netzwerkkabel zu verbinden. Das garantiert eine problemlose Übertragung.

Ihr benötigt zudem einen SD-Karten-Leser für den PC, um das System aufspielen zu können.

3. Aufbauen und zusammen stecken

Ihr seht, die Komponenten sind ein ungewöhnliches Kuddelmuddel an Adaptern, Konvertern, Kästchen und Kabeln. Zum Glück verschwindet das alles hinterm Schrank. Jetzt kann der Spaß beginnen.

Foto des schematischen Aufbaus von HDMI-nach-Composite-Konverter, VideoGrabber und Raspberry Pi (Ein- und Ausgänge beschriftet).

Vom zweiten HDMI-Ausgang des AV-Receivers (oder vom HDMI-Splitter) geht Ihr mit dem HDMI-Kabel in den Konverter. Dessen analogen Ausgang verbindet Ihr über die Cinch-Kupplung mit dem Videograbber. Der gelbe Anschluss ist wichtig für das Video-Signal, aber wenn Ihr genug Kupplungen habt oder ein AV-Kabel verwendet, verbindet auch rot und weiß für den Sound — auch wenn der Sound später nicht übertragen wird, sind die Anschlüsse so aufgeräumt.

Den Raspberry Pi baut Ihr in sein Gehäuse ein und klebt zwei Kühlkörper auf die Chips (die Größe zeigt ziemlich eindeutig, was wo drauf geklebt werden muss). Der Videograbber wird in einen der USB-Ports des Raspberry Pi eingesteckt.

Zuletzt solltet Ihr Strom und Netzwerk nicht vergessen. Also noch das Netzwerkkabel in den Pi und das externe Netzteil für die Stromversorgung bereitlegen.

Auch der HDMI-Konverter braucht Strom per USB, weil in den meisten Fällen das HDMI-Signal nicht ausreicht, um ihn zu betreiben. Ein USB-Kabel lag der kleinen Kiste bei. Den Strom nehmt Ihr entweder vom Raspberry Pi oder — falls das Probleme macht oder es für Euch geschickter ist — vom AV-Receiver oder einem separaten Netzteil.

Diesen ganzen Aufbau nehmt Ihr zu Anfang am besten an Eurem PC-Arbeitsplatz vor. Den braucht Ihr sowieso, weil Ihr dem Pi ja gleich noch seine Aufgabe beibringen müsst. Für erste Tests wäre ein HDMI-Signal hilfreich. Oh, wie praktisch — unser Raspberry Pi hat gerade einen ungenutzten HDMI-Ausgang frei! Also statt in den AV-Receiver steckt Ihr das HDMI-Kabel erstmal dort ein und komplettiert damit auf aberwitzige Weise Euer Video-Labor.

Foto des schematischen Aufbaus von HDMI-nach-Composite-Konverter, VideoGrabber und Raspberry Pi (vereinfachte Anschlüsse zur Entwicklung hervorgehoben).
Für erste Tests schnappt sich der Konverter einfach das HDMI-Signal vom Raspberry Pi; ebenso den Strom per USB.

4. Die Software einrichten

Jetzt kommt der haarige Teil. Ich habe diverse Anläufe mit verschiedensten Software-Paketen unternommen. Alle scheiterten daran, dass sie mir am Ende keinen flüssigen und stabilen Videostream zur Verfügung stellen konnten. Erschwerend kam hinzu, dass es Browser bis heute nicht geschafft haben, einen einheitlichen Standard für Streams zu implementieren, der von allen unterstützt wird.

Dabei steht und fällt vieles mit dem Player, der den Stream im Browser wiedergibt. An funktionierende Lösungen wie die von YouTube und Facebook kommt man nicht ran. Andere gut funktionierende Player kosten abschreckende Lizenzgebühren oder sie unterstützen nur ein bestimmtes Streaming-Format, für dessen Erzeugung wiederum nicht die nötige Software auf Seite des Servers verfügbar ist. Kostenlose Player basieren auf veralteten und unsicheren Lösungen wie Flash oder unterstützen kein Streaming.

Die Lösung war letztendlich Motion JPEG, eine bewegte Variante des JPEG-Formats, die mit den meisten Browsern dargestellt werden kann. Zwar überträgt dieses Format keinen Ton, aber den brauchen wir ja auch nicht. Motion JPEG wird häufig von IP-Kameras bereitgestellt. Auch Motion, die Software, die wir gleich zur Erzeugung eines solchen Streams einsetzen, wurde für die Verwendung mit Überwachungskameras entwickelt. Aber der Reihe nach.

Die grundsätzliche Vorgehensweise habe ich mir von dieser wunderbaren Anleitung abgeschaut.

4.1 Raspbian installieren

Als Grundlage für unseren Raspberry Pi verwenden wir Raspbian, den Standard unter den Raspberry-Pi-Systemen. Falls Ihr das schon kennt, könnt Ihr es ganz normal nach beliebiger Vorgehensweise installieren, zum Beispiel über Noobs.

Ich werde hier aber den manuellen Weg aufzeigen, weil ich Raspbian headless installieren möchte. Das bedeutet, dass die grafische Benutzeroberfläche deaktiviert bleibt und nur noch die Konsole verfügbar ist. Das erspart erhebliche Mengen Speicherplatz und lässt das System deutlich schneller starten.

4.1.1 Raspbian herunterladen

Zunächst ladet Ihr die aktuelle Version von Raspbian herunter. Zum Zeitpunkt der Entstehung dieses Artikels heißt diese „Stretch“. Die Lite-Version genügt für unsere Zwecke.

4.1.2 SD-Karte formatieren

Eure SD-Karte muss vor der Installation formatiert werden. Unter Windows verwendet Ihr dazu am besten das Tool SD Card Formatter. Verwendet die schnelle Formatierung (die ausführliche dauert ewig und hat bei mir zu einem nicht bootfähigen System geführt).

4.1.3 ISO-Image aufspielen

Screenshot der Software "Win32 Disk Imager" mit ausgewählter Image-Datei und Laufwerksbuchstaben.Das heruntergeladene Raspbian-System entpackt Ihr und findet darin ein ISO-Image. Dieses Image muss auf die SD-Karte. Dafür ist das Tool Win32 Disk Imager die beste Wahl. Nach dem Formatieren solltet Ihr nur ein Laufwerk für die SD-Karte angezeigt bekommen, das Ihr in dem Tool auswählt. Außerdem gebt Ihr den Pfad zum ISO-Image an und startet den Vorgang mit Write.

4.1.4 System für SSH vorbereiten

Unser Raspberry Pi wird als eine Art kleiner Server arbeiten — deshalb headless, ohne grafische Benutzeroberfläche. Ihr müsst keine Tastatur oder Maus an den Raspberry Pi anschließen. Wir nehmen die weitere Konfiguration per Fernzugriff vor, was den Vorteil hat, dass die Kiste mit all ihren Kabeln hinter dem Schrank bleiben kann.

Ansicht des Installationsverzeichnisses von Raspbian mit hervorgehobener "ssh"-Datei.Dafür müssen wir SSH aktivieren, das Standardprotokoll für den Zugriff auf entfernte Systeme per Konsole.

Wechselt dazu in das Laufwerk Eurer SD-Karte, wo jetzt die Systemdateien liegen sollten. Dort erstellt Ihr eine leere Datei (Textdatei) mit dem Namen „ssh“. Achtet darauf, dass die Datei keine Dateiendung hat. Unter Windows sind Dateiendungen standardmäßig ausgeblendet.

4.1.5 Raspbian booten

Jetzt ist es Zeit, die SD-Karte sicher vom System zu entfernen und in den Raspberry Pi einzustecken. Strom dran und es sollte losgehen. Vergesst auch nicht, das Netzwerkkabel anzuschließen. Das System sollte booten und dann einfach im Konsolenmodus auf Anweisungen warten. Wenn Ihr den HDMI-Ausgang des Pi mit einem Monitor verbindet, solltet Ihr etwas sehen können.

4.1.6 IP-Adresse herausfinden

Als nächstes kommt ein wichtiger Schritt, dessen Ergebnis Ihr benötigt: Ihr müsst die IP-Adresse Eures Raspberry Pi herausfinden. Das geht am einfachsten, indem Ihr Euch die im Netzwerk angemeldeten Geräte in der Software Eures Routers anschaut. Dort werden alle bekannten Geräte aufgelistet. Sofern Ihr andere Geräte nicht irgendwann mal mit einem sinnvollen Namen versehen habt, könnte das ein wenig knifflig werden. Aber so viele Möglichkeiten wird es dann wohl auch nicht geben.

Falls Ihr den Pi an einem Monitor angeschlossen habt und eine Tastatur zur Eingabe zur Verfügung steht, könnt Ihr die IP-Adresse auch ganz einfach mit dem folgenden Befehl ermitteln:

ifconfig

4.1.7 Vom PC aus via SSH zugreifen

Ihr könnt alle weiteren Schritte im Grunde auch direkt mit der Tastatur am Raspberry Pi erledigen, aber es ist erfahrungsgemäß praktischer, direkt mit dem Fernzugriff über SSH weiter zu arbeiten.

Das macht Ihr unter Windows am bestem mit Putty. Heruntergeladen und gestartet gelangt Ihr in eine Anmeldemaske mit gefühlt achthundertdreiundsiebzig Optionen, aber Ihr braucht nur zwei davon.

Die Anmeldemaske von Putty, IP-Adresse und Port eingegeben.Gleich im ersten Textfeld gebt Ihr die IP-Adresse Eures Raspberry Pi ein. Als Port muss 22 angegeben sein und das Protokoll muss auf SSH stehen. Dann solltet Ihr Euch schon verbinden können.

Ihr landet dann in der Konsole und sollt Euch mit Benutzername und Passwort anmelden. Bei der Eingabe des Passworts wird sich der Cursor nicht bewegen, aber lasst Euch davon nicht aus der Ruhe bringen.

Ihr müsst die Standard-Zugangsdaten von Raspbian angeben, also Benutzername pi und Passwort raspberry.

Eingabe von Benutzername und Passwort zur Anmeldung an Raspbian in der Putty-Konsole.

Solltet Ihr mit Putty gar nicht erst auf die Konsole zugreifen können, habt Ihr entweder die falsche IP-Adresse oder der SSH-Dienst wurde nicht richtig aktiviert — vielleicht ein Fehler in Schritt 4.1.4?

Wenn die Möglichkeit für direkten Zugriff auf den Pi besteht oder Ihr ein vorhandenes oder nicht headless installiertes Raspbian-System verwendet, könnt Ihr SSH mit dieser Anleitung nachträglich aktivieren.

4.1.8 Optional: Passwort des Benutzers ändern

Mit aktivem SSH-Dienst ist Euer Raspbian-System für jeden offen, dem es gelingt, in Euer Netzwerk zu kommen. Das ist im Hinblick auf die Sicherheit nicht so schön. Daher solltet Ihr das Passwort des Standard-Benutzers pi in etwas sicheres ändern.

Das geht sehr einfach mit dem Befehl:

sudo raspi-config

Alles weitere sollte selbsterklärend sein. Hier findet Ihr eine detailliertere Anleitung. Das neue Passwort dürft Ihr natürlich nicht vergessen. Ab sofort meldet Ihr Euch damit am Pi an.

4.2 Erforderliche Komponenten installieren

Damit läuft das Betriebssystem schon mal. Höchste Zeit, die Software zu installieren. Das geht wesentlich flüssiger von der Hand.

Die im Folgenden gezeigten Befehle könnt Ihr einfach in die Konsole kopieren. Um mit Putty etwas in die Konsole einzufügen, was Ihr hier zuvor mit Strg + C kopiert habt, müsst Ihr in das Fenster rechtsklicken.

4.2.1 System auf den neuesten Stand bringen

Für den Anfang bringen wir mal alle Systemkomponenten auf den neuesten Stand.

sudo apt-get update
sudo apt-get upgrade

Den zweiten Befehl müsst Ihr zwischendurch mal mit Y und Enter bestätigen.

4.2.2 Notwendige Bibliotheken installieren

Motion benötigt einige Komponenten, die wir noch hinterher installieren müssen.

sudo apt-get install libmariadbclient18 libpq5 libavcodec57 libavformat57 libavutil55 libswscale4

4.2.3 Motion installieren

Anschließend installieren wir Motion direkt von der Quelle.

sudo wget https://github.com/Motion-Project/motion/releases/download/release-4.0.1/pi_stretch_motion_4.0.1-1_armhf.deb
sudo dpkg -i pi_stretch_motion_4.0.1-1_armhf.deb

4.3 Motion konfigurieren

Und schon können wir uns daran setzen, Motion zu konfigurieren, indem wir ein paar Konfigurationsdateien anpassen. Dazu verwenden wir nano als Editor in der Konsole. Profis wollen das vielleicht lieber mit vi machen, aber mir liegt nano mehr, weil es sich eher wie ein richtiger Editor anfühlt.

Am unteren Rand von nano sind alle wichtigen Befehle aufgelistet. Ihr benötigt:

  • Strg + W um eine Textstelle zu suchen
  • Strg + X um die Datei zu schließen und dabei zum Speichern aufgefordert zu werden
  • Strg + O um die Datei zu speichern, ohne sie zu schließen, bestätigen mit Y und Enter
  • ansonsten navigiert Ihr mit den Pfeiltasten

4.3.1 Motion Konfigurationsdatei anpassen

Die Hauptaufgabe ist es, die Konfiguration von Motion anzupassen. Diese öffnet Ihr mit dem folgenden Befehl für die Bearbeitung:

sudo nano /etc/motion/motion.conf

Wie oben beschrieben sucht Ihr nun jeweils nach den hier aufgeführten Optionen und ändert deren Werte entsprechend ab.

  • daemon on
  • stream_localhost off
  • output_pictures off
  • ffmpeg_output_movies off
    Diese und die vorherige Option sind erforderlich, da sich der Stream sonst immer nach kurzer Zeit aufhängt.
  • stream_maxrate 12
    Eine niedrigere Framerate sorgt für deutlich weniger Bildfehler und reduziert paradoxerweise das unregelmäßige Ruckeln zumindest gefühlt ein wenig.
  • framerate 100
    Mit diesem Wert (wie auch dem vorherigen) könnt Ihr mal ein bisschen rumspielen. Kleinere Zahlen sind anzustreben, aber ich hatte das beste funktionierende Ergebnis mit diesem hohen Wert.
  • width 720
  • height 576
    Breite und Höhe entsprechen der altbekannten analogen Bildauflösung bei PAL. Kann man auch zum Experimentieren nehmen. Größere Werte haben keinen Sinn, da das Bild nur hochskaliert würde. Kleinere Werte reduzieren die ohnehin schon mäßige Bildqualität.
  • text_right
    Mit dieser Option lässt sich der kleine Text unten rechts beeinflussen. Ich habe ihn drin gelassen, weil man daran schön sieht, dass das Video wirklich läuft. Allerdings habe ich ihn in einer Zeile ausgegeben, indem ich das \n durch ein Leerzeichen ersetzt habe.

4.3.2 Motion Dienst aktivieren

Wir wollen, dass Motion automatisch beim Starten des Systems als Dienst losläuft. Dazu nehmen wir noch eine Änderung in einer anderen Datei vor:

sudo nano /etc/default/motion

Die folgende Zeile dürfte nicht schwer zu finden sein. Wir ändern den Wert auf yes.

start_motion_daemon=yes

4.3.3 Dienst verwalten

Jetzt geht es nur noch darum, den Dienst zu starten und ggf. zu beenden oder neu zu starten.

sudo service motion start

startet den Dienst — das solltet Ihr gleich als erstes mal ausführen.

sudo service motion stop

stoppt den Dienst (nur der Vollständigkeit halber).

sudo service motion restart

startet den Dienst neu, was Ihr immer nach Änderungen an der Konfigurationsdatei ausführen müsst. Es ist am Anfang nicht ungewöhnlich, ständig zwischen der Konfiguration und dem Neustart des Dienstes zu wechseln. Mit der Taste blättert Ihr durch die zuvor ausgeführten Befehle.

Ich habe festgestellt, dass nach dem allerersten Start des Dienstes kein Bild zu bekommen war. Vielleicht war das nur bei mir so, aber falls der folgende Schritt bei Euch nicht funktioniert, führt einfach gleich noch ein restart aus.

4.3.4 Videostream testen

Jetzt kann es losgehen. Öffnet die folgende Adresse in einem aktuellen Browser Eurer Wahl:

http://<IP-Adresse>:8081

… wobei <IP-Adresse> natürlich mit der tatsächlichen IP-Adresse Eures Raspberry Pi zu ersetzen ist.

Browserfenster mit aktivem Vorschaubild, auf dem jedoch nichts zu sehen ist.Ihr solltet ein Fenster ähnlich dem hier abgebildeten sehen. Je nachdem, was Ihr per HDMI angeschlossen habt, dürfte diese Quelle zu erkennen sein. Eventuell kommt vom Raspberry Pi nur ein graues Bild oder die Konsole mit den Himbeeren oben. Wenn nichts angeschlossen ist, liefert der Videograbber das typische blaue Bild, wie man es noch von Videorecordern kennt.

Browserfenster mit aktivem Vorschaubild, das eine Ansicht der Raspbian-Konsole zeigt.Der Browser lässt derweil unentwegt seinen Ladekringel drehen. Das ist normal, denn Ihr habt den Stream direkt aufgerufen und ein Stream hat per Definition zunächst mal kein absehbares Ende. In jedem Fall solltet Ihr unten rechts im Bild die Uhrzeit und aktuelle Frames hochzählen sehen. Auch auf Smartphone und Tablet solltet Ihr die Adresse aufrufen können, sofern sich diese per WLAN im selben Netzwerk befinden.

4.3.5 Stabilität prüfen

Das ganze Gebilde soll ja jetzt auch noch zuverlässig laufen und alsbald hinterm Schrank verschwinden. Deshalb solltet Ihr testen, ob der Videostream nach einem Neustart gleich wieder von alleine sauber anläuft.

sudo init 6

Putty verliert dabei natürlich die SSH-Verbindung und Ihr müsst Euch nach kurzer Zeit neu anmelden. Der Start sollte in unter 30 Sekunden vonstatten gehen.

Derweil wurde der Videostream im Browser beendet und läuft von alleine nicht mehr an. Ladet die Seite neu, um wieder ein Bild zu bekommen.

Den Raspberry Pi könnt Ihr ähnlich einem Neustart sauber mit dem folgenden Befehl herunterfahren:

sudo init 0

Im Echtbetrieb hinter dem AV-Receiver wird das aber kaum praktikabel sein. Ihr könnt ihn einfach durchlaufen lassen, wenn Euch das nicht stört. Der Stromverbrauch pro Jahr ist jetzt nicht so viel mehr, als wenn Ihr Euch mal eine Pizza in den Ofen schiebt (auf ein Rechenbeispiel verzichte ich, Ihr wisst was ich sagen will).

Ansonsten zieht dem Pi einfach den Strom ab. Das ist zwar nicht die feine Art, aber andererseits macht das System ja auch nicht viel und sollte keine Schäden nehmen.

5. Optimierung der Anzeige

Browserfenster mit aktivem Vorschaubild, das eine Ansicht von Kodi zeigt.
Nur mit dem Vorschaubild durch die Filme in Kodi blättern.

Euch wird nicht entgangen sein, dass die Vorschau ein wenig „unproportional“ ist. Das Bild ist verzerrt und hat zudem je nach Quelle einen mehr oder weniger breiten Rand mit hässlichen Kanten. Die Ursache liegt in der Umsetzung des Bilds in das alte, analoge PAL-Format. Ja, früher sahen die meisten Videosignale so aus. Man konnte das nur nicht sehen, weil alte Röhrenfernseher einen relativ breiten Rand abgeschnitten haben (Overscan). Die Verzerrung rührt von der anamorphen Bildcodierung her.

Browserfenster mit aktivem Vorschaubild, das ein Konfigurationsmenü eines Yamaha-Receivers zeigt.
Die Konfiguration des AV-Receivers ist jetzt ebenfalls ohne Beamer möglich.

Ich habe versucht, das mit der Konfiguration von Motion gerade zu biegen, aber es gibt scheinbar keine passenden Einstellungen dafür. Da ich die Vorschau aber sowieso in meine HTML-basierte App integrieren wollte, habe ich das in diesem Zuge gelöst.

Im einfachsten Fall bindet Ihr den Videostream in eine HTML-Datei ein, die das alles gerade rückt. Statt die oben genannte Adresse aufzurufen, öffnet Ihr dann einfach die HTML-Datei im Browser Eurer Wahl.

Kopiert den folgenden Code in einen Texteditor (Sublime Text, Notepad++ oder notfalls den Windows Editor, aber keinesfalls Word oder dergleichen).

<!DOCTYPE html>
<html lang="de">
   <head>
      <meta charset="UTF-8" />
      <meta name="viewport"
            content="width=device-width, minimum-scale=0.1" />
      <title>Vorschaumonitor</title>
      <style type="text/css">
         body {
            margin: 0;
         }
      </style>
   </head>
   <body>
      <style type="text/css">
         .hkp-preview {
            position: relative;
            width: 100vw;
            height: 56.25vw;
            overflow: hidden;
         }
         .hkp-preview img {
            position: absolute;
            width: 105%;
            height: 104%;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
         }
      </style>
      <div class="hkp-preview">
         <img src="http://192.168.178.37:8081/"
              alt="Vorschaubild der HDMI-Ausgabe" />
      </div>
   </body>
</html>

Speichert das als Datei mit der Endung .html ab, zum Beispiel Vorschaumonitor.html. Achtet auch hier wieder darauf, dass es keine doppelte Dateiendung gibt.

Browserfenster mit aktivem Videostream, der über eine separate HTML-Datei aufgerufen wurde. Im Gegensatz zu allen anderen Vorschaubildern ist dieses nicht verzerrt und weist keinen Rand auf.
Entzerrt: das Vorschaubild über eine separate HTML-Datei geladen sieht gleich viel besser aus.

Die Datei könnt Ihr auch auf Euer Smartphone oder Tablet übertragen und dort im Browser öffnen. Mangels produktiver Werkzeuge auf Mobilgeräten müsst Ihr wahrscheinlich manuell die lokale Adresse der Datei in die Adressleiste des Browsers eingeben, zum Beispiel:

file:///sdcard/Download/Vorschaumonitor.htm

Der Pfad hängt natürlich vom Speicherort der Datei ab. Dann noch eine Verknüpfung auf dem Homescreen ablegen und Ihr habt die Vorschau wie eine App zur Verfügung.

Um die Vorschau in andere Systeme zur Haussteuerung einzubinden, müssen diese über eine HTML-Benutzeroberfläche verfügen. Die Homematic WebUI ist ein bekannter Vertreter dafür. Aber auch in die App des Light-Managers oder andere Systeme sollte sich das Vorschaubild einbinden lassen.

6. Typische Probleme

Wie bei komplexen Systemen so üblich, kann es auch hier zu Problemen kommen. Aber ich habe ja nicht behauptet, dass es einfach wird. Ein wenig Freude am Experimentieren gehört zu dieser Art von Vorschaumonitor dazu.

Im folgenden liste ich daher ein paar Punkte auf, die aus der Erfahrung problematisch zu sein scheinen.

6.1 Bildqualität

Bedingt durch die Art der Technik ist die Bildqualität nicht die beste. Wir haben es hier nicht einfach nur mit einer reduzierten Auflösung zu tun. Das Signal wird über den analogen Weg geschleust, was PAL-typische Effekte hervorruft. Dazu gehört auch das bei schnellen Bewegungen sichtbare horizontale Raster, welches auf die Halbbilder zurückzuführen ist.

Das ist zwar schade, fällt aber bei einem kleinen Vorschaubild nicht so sehr auf. Deutlicher sieht man die alle paar Sekunden aufblitzenden Bildstörungen in Form von horizontalen Linien. Bei einer geringeren Framerate treten diese seltener auf. Ich bin mir noch nicht sicher, ob das vom Videograbber oder vom Konverter kommt, wahrscheinlich letzterer.

Etwas nervig kann hingegen das rhythmische Ruckeln des Bilds sein. Das liegt ziemlich sicher an einer minderwertigen Signalkonvertierung und inkompatiblen Frameraten zwischen der Quelle und dem analogen PAL-Signal.

Wie auch immer: es ist ja nur eine Vorschau und sie erfüllt ihren Zweck. Hat so ein bisschen Retro-Flair.

6.2 Dienst will nicht anspringen

Ich hatte mehrfach das Problem, dass der Motion-Dienst nicht richtig starten wollte. Das machte sich dadurch bemerkbar, dass der o. g. Restart-Befehl sich gut 20 Sekunden Zeit gelassen hat, anstatt der üblichen 1–2 Sekunden. Der Stream war danach nicht abrufbar.

Die Ursache war nach meinen Beobachtungen, dass der Konverter seinen Strom aus einem der USB-Anschlüsse am Raspberry Pi bezog. Offenbar belastet das den Energiehaushalt des Pi so sehr, dass das System langsam wird oder eingeschränkt reagiert. Ich verwende allerdings auch nicht das oben verlinkte Netzteil für den Pi.

Solltet Ihr also derartiges Verhalten feststellen, gebt dem Konverter mal ein eigenes Netzteil oder schließt ihn wie ich am USB-Anschluss des AV-Receivers an. Dadurch kann er auch gleich automatisch mit dem AVR aktiviert werden.

Übrigens soll der Konverter wohl angeblich auch ohne USB-Stromzufuhr arbeiten können, wenn das HDMI-Signal genug Saft liefert. Ich kann das nicht ganz abstreiten, aber so richtig erfolgreich war ich ohne Stromanschluss nicht.

6.3 HDMI, die alte Zicke

Ich werde mich demnächst hier noch über die Zumutungen der HDMI-Schnittstelle auslassen. Hier haben wir ein schönes Beispiel dafür. Ich verwende die Vorschau mit einem Yamaha AV-Receiver der Mittelklasse, dem RX-V775. Was jetzt kommt, bezieht sich rein darauf, ich gehe jedoch davon aus, dass es ähnliches Verhalten auch mit anderen AVRs geben wird.

Nach dem Anschließen des ungewöhnlichen HDMI-Abnehmers am 2. Ausgang des AVR zeigte sich sehr komisches Verhalten. Zum Beispiel konnte ich erstmal aus keiner Quelle ein HDMI-Signal bekommen; das Menü des AVR ging, ansonsten kam aber nur der Hintergrund.

In anderen Fällen spielte das HDMI-Board völlig verrückt und die rote HDMI-2 Anzeige im Display blinkte regelmäßig alle paar Sekunden. Offenbar erfolgte hier eine endlose Aneinanderreihung erfolgloser Handshakes. Ich bin nicht sicher, ob der AVR hier zu zicken anfing, weil ich im laufenden Betrieb umgesteckt hatte.

Jedenfalls können derartige Verhaltensstörungen auftreten und sollten Euch erstmal nicht zu sehr beunruhigen. Bei mir hat es stets geholfen, den AV-Receiver und alle Zuspieler für ein paar Sekunden komplett vom Strom zu trennen. Wenn es dann einmal lief, blieb die gesamte Kette bisher über Wochen und Monate stabil. Also: nur nicht an den Steckern wackeln!

6.4 Blu-ray 3D

Der Konverter ist nicht 3D-fähig. Gleiches gilt für 4k-Signale. Es gelten die selben Bedingungen wie bei einem richtigen Vorschaumonitor (das ist also kein Problem dieser Lösung, sondern eines von HDMI im Allgemeinen). Das technisch unterlegene Gerät bestimmt über den Handshake für alle seine Zuspieler, welche Art von Signal diese ausgeben: kein 3D und maximal FullHD.

Ein HDMI EDID Manager: schwarzer Kasten mit je einem HDMI-Ein- und Ausgang sowie einem Schalter zur Wahl des unterstützen Signals.
Ein HDMI EDID Manager löst Probleme mit widersprüchlichen Angaben zu unterstützten Features.

Das ist ärgerlich, wenn 3D-Blu-rays sich entschließen, mangels 3D-fähiger Hardware am Ende der Kette in einer Sackgasse zu enden. Dagegen hilft ein HDMI EDID Manager vor dem Blu-ray-Player (direkt nach dem 2. HDMI-Ausgang war ich damit hingegen erfolglos).

Allerdings wird dem Konverter dann ein 3D-Signal geliefert, das er nicht verarbeiten kann. Kein Vorschaubild bei reinen 3D-Scheiben! Okay, damit kann ich leben.

Bei 4k muss der Konverter hingegen definitiv abgeklemmt werden, da sonst nur ein FullHD-Bild ausgegeben wird. Dazu könnt Ihr aber die HDMI-Kabel stecken lassen. Stattdessen deaktiviert Ihr über den AV-Receiver einfach den 2. HDMI-Ausgang. Bei Verwendung eines HDMI-Splitters sollte dieser ebenfalls die Möglichkeit bieten, den 2. Ausgang zu deaktivieren. Statt einem Splitter bietet eine HDMI-Matrix in der Regel diese Funktion.

Ja, das ist alles ein wenig unkomfortabel, ich weiß. Bedankt Euch bei den Erfindern dieser unsäglichen HDMI-Schnittstelle.


Videograbber mit Raspberry Pi – Der lange Weg von hier (HDMI-Ausgang) nach da (Netzwerkkabel und Smartphone mit Vorschaubild).

Hoppla, ist ein bisschen lang geworden. Ich hoffe diese Anleitung animiert den einen oder anderen unter Euch, seiner Heimkino-Steuerung oder Hausautomation ein echt cooles Feature hinzuzufügen. Es ist bei weitem nicht perfekt! Aber es ist das beste, was ich bisher mit einem vertretbaren monetären Aufwand hinbekommen habe. Und es ist verdammt abgefahren!

Wenn Ihr Euch entschließt, dieses Gebilde nachzubauen, würde ich mich über Eure Erfahrungen damit freuen. Schreibt doch kurz in einem Kommentar, auf welche Probleme Ihr gestoßen seid. Auch freue ich mich über Bilder (per E-Mail), die zeigen, wie Euer Tablet mit dem Vorschaubild auf dem Tisch liegt. Frohes Basteln!

Über Bert Kößler

Ein Kino in den eigenen vier Wänden fand ich schon immer spannend. Meine Leidenschaft gilt vor allem der Einrichtung, Steuerung und Automatisierung. Hier teile ich meine Erfahrungen mit Anfängern und Fortgeschrittenen, die mehr aus Ihrem Heimkino machen wollen.

4 Gedanken zu „HDMI-Vorschaubild als Videostream bereitstellen

  1. Hi Bert,

    ich stimme Dir vollauf zu, was die Akribie angeht 😀

    Sehr interessanter Artikel, ich werde aber trotzdem zum Monitor tendieren 😉

    Viele Grüße,
    Marco

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.