StartSteuerungHDMI-Vorschaubild als Videostream bereitstellen
Smartphone oder Tablet als Vorschaumonitor nutzen

HDMI-Vorschaubild als Videostream bereitstellen

Ein Vorschaumonitor ist im Heimkino praktisch, wenn du deine Filmvorführung einrichten willst, ohne dass die Gäste ein Blu-ray-Menü auf der Leinwand sehen. Mindestens genauso praktisch ist es beim Musikhören, um das Lüftergeräusch des Beamers nicht ertragen zu müssen. Was aber machst du, wenn du keinen Vorschaumonitor haben kannst oder willst? Hier ist ein Vorschaubild als Videostream die Lösung.

Vorschaubild im Browserfenster zeigt das Menü eines Streamingdienstes an
Menü eines Streamingdienstes als HDMI-Vorschaubild abgegriffen und im Browserfenster angezeigt

Über die Vorzüge eines Vorschaumonitors habe ich ja schon ausführlich berichtet. 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?

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.

Unsere Lösung muss also einen Videostream aus dem HDMI-Signal des AV-Receivers erstellen, der im hauseigenen Netzwerk zur Verfügung gestellt wird und überall abrufbar ist. Wie das geht, zeige ich dir hier im Detail.

Hier zunächst die Inhalte dieser doch recht umfangreichen Anleitung.

  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 findest du am Ende des Artikels.

1. Die Idee hinter dem virtuellen Vorschaumonitor

Ursprünglich hatte ich die Idee zu diesem Vorschaubild, weil eine Lösung im Netz kursierte, mit der man sich eine dem Philips Ambilight ähnliche Hintergrundbeleuchtung selbst bauen konnte. Irgendwie mussten die ja das HDMI-Signal abgreifen, um daraus die Farben entlang dem Bildrand auslesen zu können, mit denen dann die LED-Stripes angesteuert werden.

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

Du siehst vielleicht schon die Schwachstelle in dieser Kette: das analoge Videosignal. Inzwischen sind wir da etwas weiter. Mit dem Einzug von 4k-Video mussten diverse „sekundäre HDMI-Lösungen“ aufgerüstet werden. Inzwischen gibt es die ersten beiden Komponenten, Konverter und USB-Videograbber, in einem kleinen Kästchen vereint: HDMI rein, USB raus. Voilà: die HDMI Capture Card.

HDMI Video Capture Card bzw. Videograbber
Herzstück der Operation: Das HDMI Video Capture Interface

Während die Bildqualität mit den alten Komponenten noch analog-typisch extrem minderwertig war (man hatte das Gefühl, einen VHS-Videorekorder anzuschließen), kann sich das Ergebnis mit aktuellen Komponenten durchaus sehen lassen. Dennoch ist es sehr eingeschränkt, was wahrscheinlich der Grund ist, dass es solche Hardware überhaupt geben darf, denn sie bricht ja offenbar den HDCP-Kopierschutz (und darf trotzdem verkauft werden).

Für die Ansteuerung von LEDs brauchte 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 vum 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:

  • HDMI Video Capture Interface – fortan immer „Konverter“ genannt
  • Raspberry Pi 4 Starter Kit – Ich verlinke dir dieses, weil hier alles dabei ist, was du brauchst – und weil zum Zeitpunkt der letzten Aktualisierung dieses Artikels keine anderen Modelle mehr zu bekommen sind. Aber auch die älteren Raspberry-Pi-Modelle, insbesondere 2 und 3 sind absolut fein. Selbst mit Modell 1 sollte das laufen (nicht getestet).

Wenn du kein komplettes Starter Kit verwendest, benötigst du zusätzlich zum puren Raspberry Pi noch folgendes Zubehör:

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

Die Komponenten rund um den Pi entsprechen weitestgehend denen, die ich schon für eine Kodi-Installation auf dem Raspberry Pi empfohlen habe. 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.

Solltest du bereits über einen anderen Kleinrechner mit Linux-System verfügen, kannst du 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 kannst du die Verbindung über dein 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.

Du benötigst zudem einen Speicherkartenleser für SD-Karten um am PC das System aufspielen zu können.

3. Aufbauen und zusammen stecken

Du siehst, die Komponenten sind ein übersichtliches Kuddelmuddel an Kästchen und Kabeln. Zum Glück verschwindet das alles hinter dem Schrank. Jetzt kann der Spaß beginnen.

Notwendige Hardware zur Erstellung eines Vorschaubilds vom HDMI-Ausgang
Von HDMI (schwarzes Kabel) zu Netzwerk (weißes Kabel)

Den Raspberry Pi baust du in sein Gehäuse ein und klebst zwei Kühlkörper auf die Chips. Die Größe zeigt ziemlich eindeutig, was wo drauf geklebt werden muss.

Vom zweiten HDMI-Ausgang des AV-Receivers (oder vom HDMI-Splitter) gehst du mit dem HDMI-Kabel in den Konverter. Der Konverter wird in einen der USB-Ports des Raspberry Pi eingesteckt.

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

Diesen ganzen Aufbau nimmst du zu Anfang am besten an deinem PC-Arbeitsplatz vor. Den brauchst du sowieso, weil du dem Pi ja gleich noch seine Aufgabe beibringen musst. 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 steckst du das HDMI-Kabel erstmal dort ein und komplettierst damit auf aberwitzige Weise dein Video-Labor.

Raspberry Pi mit per USB angeschlossener HDMI Video Capture Card
Die zwei wichtigsten Komponenten: Raspberry Pi und Konverter (HDMI Video Capture Interface)

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 und leicht zu erzeugen ist.

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 Raspberry Pi OS installieren

Als Grundlage für unseren Raspberry Pi verwenden wir Raspberry Pi OS (ehemals Raspbian), den Standard unter den Raspberry-Pi-Systemen. Falls du das schon kennst, kannst du es ganz normal nach bewährter Vorgehensweise installieren.

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 Raspberry Pi OS herunterladen

Zunächst lädst du die aktuelle Version von Raspberry Pi OS herunter. Für unsere Zwecke genügt die Lite-Version.

4.1.2 SD-Karte formatieren

Deine SD-Karte muss vor der Installation eventuell noch formatiert werden. Unter Windows verwendest du dazu am besten das Tool SD Card Formatter. Verwende 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 System entpackst du und findest darin ein ISO-Image. Dieses Image muss auf die SD-Karte. Dafür ist das Tool Win32 Disk Imager eine gute Wahl. Nach dem Formatieren solltest du nur ein Laufwerk für die SD-Karte angezeigt bekommen, das du in dem Tool auswählst. Außerdem gibst du den Pfad zum ISO-Image an und startest 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. Du musst 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.

Wechsle dazu in das Laufwerk deiner SD-Karte, wo jetzt die Systemdateien liegen sollten. Dort erstellst du 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 Raspberry Pi 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 du den HDMI-Ausgang des Pi mit einem Monitor verbindest, solltest du etwas sehen können.

4.1.6 IP-Adresse herausfinden

Als nächstes kommt ein wichtiger Schritt, dessen Ergebnis du benötigst: Du musst die IP-Adresse deines Raspberry Pi herausfinden. Das geht am einfachsten, indem du dir die im Netzwerk angemeldeten Geräte in der Software deines Routers anschaust. Dort werden alle bekannten Geräte aufgelistet. Sofern du andere Geräte nicht irgendwann mal mit einem sinnvollen Namen versehen hast, könnte das ein wenig knifflig werden. Aber so viele Möglichkeiten wird es dann wohl auch nicht geben.

Falls du den Pi an einem Monitor angeschlossen hast und eine Tastatur zur Eingabe zur Verfügung steht, kannst du die IP-Adresse auch ganz einfach mit dem folgenden Befehl ermitteln:

ifconfig

4.1.7 Vom PC aus via SSH zugreifen

Du kannst 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 machst du unter Windows am bestem mit Putty. Heruntergeladen und gestartet gelangst du in eine Anmeldemaske mit gefühlt achthundertdreiundsiebzig Optionen, aber du brauchst nur zwei davon.

Die Anmeldemaske von Putty, IP-Adresse und Port eingegeben.

Gleich im ersten Textfeld gibst du die IP-Adresse deines Raspberry Pi ein. Als Port muss 22 angegeben sein und das Protokoll muss auf SSH stehen. Dann solltest du dich schon verbinden können.

Du landest dann in der Konsole und sollst dich mit Benutzername und Passwort anmelden. Bei der Eingabe des Passworts wird sich der Cursor nicht bewegen, aber lass dich davon nicht aus der Ruhe bringen.

Du musst die Standard-Zugangsdaten des Benutzers angeben, also Benutzername pi und Passwort raspberry.

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

Solltest du mit Putty gar nicht erst auf die Konsole zugreifen können, hast du 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 du ein vorhandenes oder nicht headless installiertes System verwendest, kannst du SSH mit dieser Anleitung nachträglich aktivieren.

4.1.8 Optional: Passwort des Benutzers ändern

Mit aktivem SSH-Dienst ist dein Raspberry-Pi-System für jeden offen, dem es gelingt, in dein Netzwerk zu kommen. Das ist im Hinblick auf die Sicherheit nicht so schön. Daher solltest du 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 findest du eine detailliertere Anleitung. Das neue Passwort darfst du natürlich nicht vergessen. Ab sofort meldest du dich 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 kannst du einfach in die Konsole kopieren. Um mit Putty etwas in die Konsole einzufügen, was du hier zuvor mit Strg + C kopiert hast, musst du 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 musst du 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. Du benötigst:

  • 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 navigierst du mit den Pfeiltasten

4.3.1 Motion Konfigurationsdatei anpassen

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

sudo nano /etc/motion/motion.conf

Wie oben beschrieben suchst du nun jeweils nach den hier aufgeführten Optionen und änderst deren Werte entsprechend ab.

ParameterWertBeschreibung
daemononAktiviert den Hintergrunddienst. Grundsätzlich erforderlich.
stream_localhostoffStreams nur auf den Raspberry Pi selbst einschränken – das muss deaktiviert werden, sonst kannst du die Vorschau nicht aufrufen.
output_picturesoffWenn du das nicht deaktivierst, schreibt dir Motion permanent Einzelbilder als Dateien auf den Raspberry Pi und füllt damit den Speicher.
ffmpeg_output_moviesoffAuch das ist erforderlich, da sich der Stream sonst möglicherweise immer nach kurzer Zeit aufhängt.
stream_maxrate12Eine niedrigere Framerate reduziert paradoxerweise das unregelmäßige Ruckeln zumindest gefühlt ein wenig. Höhere Werte sorgen nicht wirklich für eine Verbesserung.
stream_quality80Die JPG-Bildqualität des Streams. Standard ist 50, bei größerer Darstellung macht es sich aber in Menüs bezahlt, hier auf 80 zu erhöhen, um weniger JPG-Artefakte zu sehen.
framerate100Mit diesem Wert kannst du mal ein bisschen rumspielen. Kleinere Zahlen sind anzustreben, aber ich hatte das beste funktionierende Ergebnis mit diesem Maximalwert.
width640Die Breite des ausgegebenen Bilds. Muss durch 8 teilbar sein!
height480Dazu passend die Höhe des ausgegebenen Bilds. Muss ebenfalls durch 8 teilbar sein. Je größer die Werte, um so ruckeliger wird die Vorschau. Kleinere Werte scheinen aber keine Veränderung mehr zu bewirken.
text_rightDein TextMit 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.
Die wesentlichen Parameter der Motion-Konfiguration und die für unsere Zwecke empfohlenen Werte

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 solltest du 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 du immer nach Änderungen an der Konfigurationsdatei ausführen musst. Es ist am Anfang nicht ungewöhnlich, ständig zwischen der Konfiguration und dem Neustart des Dienstes zu wechseln. Mit der Taste blätterst du in der Konsole 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 dir nicht funktioniert, führe einfach gleich noch ein restart aus.

4.3.4 Videostream testen

Jetzt kann es losgehen. Öffne die folgende Adresse in einem aktuellen Browser deiner Wahl:

http://<IP-Adresse>:8081

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

Buntes Testbild der HDMI-Vorschau im Browserfenster
Das Testbild, das du wahrscheinlich als erstes sehen wirst.

Du solltest ein Fenster ähnlich dem hier abgebildeten sehen. Je nachdem, was du per HDMI angeschlossen hast, 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 Konverter ein buntes Testbild oder etwas in der Art.

Browserfenster mit aktivem Vorschaubild, das eine Ansicht der Raspbian-Konsole zeigt.

Der Browser lässt derweil unentwegt seinen Ladekringel drehen. Das ist normal, denn du hast den Stream direkt aufgerufen und ein Stream hat per Definition zunächst mal kein absehbares Ende. In jedem Fall solltest du unten rechts im Bild die Uhrzeit und aktuelle Frames hochzählen sehen. Auch auf Smartphone und Tablet solltest du 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 solltest du testen, ob der Videostream nach einem Neustart gleich wieder von alleine sauber anläuft.

So führst du einen Neustart aus:

sudo init 6

Putty verliert dabei natürlich die SSH-Verbindung und du musst dich 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. Lade die Seite neu, um wieder ein Bild zu bekommen.

Den Raspberry Pi kannst du ähnlich einem Neustart sauber mit dem folgenden Befehl herunterfahren:

sudo init 0

Im Echtbetrieb hinter dem AV-Receiver wird das aber kaum praktikabel sein. Du kannst ihn einfach durchlaufen lassen, wenn dich das nicht stört. Der Stromverbrauch pro Jahr ist jetzt nicht so viel mehr, als wenn du dir einmal eine Pizza in den Ofen schiebst (auf ein Rechenbeispiel verzichte ich, du weißt was ich sagen will).

Ansonsten zieh 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

Vorschaubild im Browserfenster zeigt das Menü eines Streamingdienstes an
Nur mit dem Vorschaubild durch die Filme bei einem Streamingdienst blättern.

Dir wird nicht entgangen sein, dass die Vorschau ein wenig „unproportional“ ist. Ich habe versucht, das mit der Konfiguration von Motion gerade zu biegen, aber es gibt scheinbar keine passenden Einstellungen dafür.

  • Wenn du als Breite und Höhe für die Bildausgabe natives 16:9-Format wie 1280×720 Pixel konfigurierst, bekommst du auch ein 16:9-Bild in genau dieser Auflösung. Das ist allerdings ziemlich unperformant und es macht keinen Spaß, sich damit durch die Menüs zu hangeln.
  • Bei jeder kleineren Auflösung, die du einstellst, scheint Motion unweigerlich 640×480 Pixel auszugeben, und damit eben ein 4:3-Seitenverhältnis.

Das kannst du aber korrigieren, wenn du das Vorschaubild irgendwo einbindest. Ich integriere sie zum Beispiel in meine HTML-basierte App und habe das somit in diesem Zuge gelöst.

Vorschaubild des AVR-Setups im Browserfenster
Die Konfiguration des AV-Receivers ist jetzt ebenfalls ohne Beamer möglich.

Im einfachsten Fall bindest du den Videostream in eine HTML-Datei ein, die das alles gerade rückt. Statt die oben genannte Adresse aufzurufen, öffnest du dann einfach die HTML-Datei im Browser deiner Wahl.

Kopiere 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;
            background-color: #000;
            overflow: hidden;
         }
      </style>
   </head>
   <body>
      <style type="text/css">
         .hkp-preview {
            position: relative;
            width: 100vw;
            height: 56.25vw;
            top: 50%;
            transform: translateY(-50%);
            overflow: hidden;
         }
         .hkp-preview img {
            position: absolute;
            width: 102%;
            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>

Speichere das als Datei mit der Endung .html ab, zum Beispiel Vorschaumonitor.html. Achte 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 kannst du auch auf dein Smartphone oder Tablet übertragen und dort im Browser öffnen. Mangels produktiver Werkzeuge auf Mobilgeräten musst du 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 du hast 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. Suche im Zweifelsfall nach Möglichkeiten zur Einbindung von Überwachungskameras.

Sie sehen gerade einen Platzhalterinhalt von Youtube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

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 Dienst will nicht anspringen / kein Bild

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.

Auch wenn der Dienst scheinbar startet, kann es vorkommen, dass danach kein Bild als Videostream kommt. Es wird dann einfach nicht geladen.

Es hat ein wenig gedauert, bis ich darauf gekommen bin – die Lösung steht letztendlich auch in der Konfigurationsdatei: Die Breite und Höhe des Vorschaubilds muss jeweils eine durch 8 teilbare Zahl sein! Ist das nicht der Fall, wird der Stream nicht richtig erzeugt.

Verwende hier also am besten wie oben beschrieben eine Auflösung von 640×480 – zumal Motion ja ohnehin keine anderen Bildgrößen bzw. Seitenverhältnisse zu erzeugen scheint (außer du gibst die native Auflösung für HD oder Full-HD an).

6.2 HDMI, die alte Zicke

An anderer Stelle habe ich mich schon über die Zumutungen der HDMI-Schnittstelle auslassen. Hier haben wir ein schönes Beispiel dafür. Ich habe die Vorschau zuerst mit einem Yamaha AV-Receiver der Mittelklasse, dem RX-V775, entwickelt. 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 HDMI-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 dich 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.3 Blu-ray 3D

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

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.

Helfen kann dagegen ein HDMI EDID Manager, der in die Strecke vor dem Blu-ray-Player eingebaut wird. Direkt hinter dem HDMI-Ausgang 2 war ich damit hingegen erfolglos.

Der HDMI EDID Manager sollte dazu aber gleichzeitig Blu-ray-3D und 4k vorgaukeln können. Wenn jeweils nur eines davon möglich ist, bist du gezwungen, immer umständlich dessen Konfiguration anzupassen (meist ein kleines Drehknöpfchen). Da kann man auch gleich das HDMI-Kabel trennen.

Letztendlich führt das dazu, dass die Geräte denken, da hinten würde ein 3D-fähiges Endgerät hängen. Damit funktioniert erstmal wieder alles. 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.

Eine Alternative wäre noch, den zweiten HDMI-Ausgang über den AV-Receiver zu deaktivieren – sofern der AV-Receiver das kann. Somit wird der Konverter blind, aber er gibt dafür auch nicht mehr seine 3D-Unfähigkeit beim Handshake preis. Falls du einen HDMI-Splitter einsetzen musst, ist das in der Regel nicht möglich; jedoch kann eine HDMI-Matrix häufig einzelne Ausgänge gezielt deaktivieren.

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


Raspberry Pi in rotem Kunststoffgehäuse
Der Raspberry Pi dient als Host für unser Vorschaubild

Hoppla, ist ein bisschen lang geworden. Ich hoffe diese Anleitung animiert den einen oder anderen, 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 du dich entschließt, dieses Gebilde nachzubauen, würde ich mich über deine Erfahrungen damit freuen. Schreib doch kurz in einem Kommentar, auf welche Probleme du gestoßen bist. Auch freue ich mich über Bilder (per E-Mail), die zeigen, wie dein Tablet mit dem Vorschaubild auf dem Tisch liegt. Frohes Basteln!

12 Kommentare 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

  2. Tolle Idee und super Anleitung! Danke dafür, da wäre ich selbst nie darauf gekommen.

    Habe das flott nachbauen können und hatte die meisten Teile davon bereits zuhause. Einzig mein Netzteil für den Raspberry 3 B+ machte Probleme und sorgte für einen instabilen Betrieb. Muss mir noch ein neues Netzteil besorgen.

    Jetzt kann ich meinen alten Grundig-Vorschaumonitor endlich entsorgen. Der war auch immer so eine Zicke bei den Einschaltmakros der Harmony.

  3. Der vMonitor läuft entweder auf meinem Android-Handy oder am 8″ Tablet. Das Flackern alle paar Sekunden habe ich auch, ich muss auch mal ein wenig mit den Einstellungen spielen, vielleicht bekommt man das ja doch weg.

  4. Der laufende Raspberry 3B+ mit motion daemon verbraucht 7W! Ganz schön viel um den dauerhaft laufen zu lassen und erzeugt leider auch hohe CPU-Temperaturen.

    An meinem Denon AVR (6500) habe ich den Projektor an HDMI-OUT1 hängen, den Raspberry an HDMI-OUT2. Den 12V Triggerausgang Trigger2 habe ich so konfiguriert, dass der Raspberry über eine geschaltete Steckdose nur bei HDMI-OUT2 Strom bekommt. So habe ich entweder 4K am Projektor oder 1080p am vMonitor, die Auflösungen kommen sich nicht in die Quere und es gibt keinen unnötigen Stromverbrauch.

    Tolle Lösung, nochmals vielen, vielen Dank für deine Idee und Anleitung!

Kommentar verfassen

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

Warenkorb