HDMI Viewer

Ein schlanker Qt6/C++ HDMI-Viewer für Arch Linux mit V4L2 (Video) und ALSA (Audio).
Gedacht als Companion zu OBS Studio: Anzeigen ohne Aufnehmen.

Features

  • Live-Vorschau vom HDMI-Grabber via V4L2 (YUYV und NV12)
  • ALSA-Audio direkt vom Grabber-Gerät
  • Gerät-Auswahl beim Start, Audio-Gerät wird gespeichert
  • F → Vollbild / F oder Esc im Vollbild → Fenstermodus
  • Esc im Fenstermodus → zurück zur Gerät-Auswahl (Device wird sauber freigegeben)
  • Seitenverhältnis immer bewahrt (Letterbox/Pillarbox)
  • Titelleiste zeigt tatsächliche Auflösung und FPS
  • Colorspace-Konvertierung im ThreadPool (kein Ruckeln)
  • FPS explizit auf 60fps gesetzt (was Grabber liefert wird in Statusbar angezeigt)
  • Bildglättung (standardmäßig an): GPU-Shader trennt Luma/Chroma und behandelt sie getrennt Chroma wird stärker weichgezeichnet (killt Dot-Crawl/Farbrauschen billiger Composite→HDMI-Scaler wie Lioncast Mini AV2HDMI o.ä.), Luma wird leicht geglättet und dezent gegengeschärft (nimmt harte Scaler-Kanten raus, ohne matschig zu wirken). Keine Optik- Spielerei, sondern eine echte Bildverbesserung. Taste S zum Umschalten.
  • Retro-Optik (standardmäßig aus): separater Nostalgie-Look Scanlines, Phosphor-/Aperture-Grille-Maske, leichte Wölbung wie bei einem alten Röhrenfernseher. Lässt sich mit der Bildglättung kombinieren. Taste C.
  • Helligkeit (Tasten , dunkler / . heller): Gamma-Anpassung, live und persistiert. Sinnvoll als Feinjustierung, falls Farbraum-Erkennung (siehe unten) allein nicht perfekt zum eigenen Bildschirm passt.
  • Hardware-Helligkeit: Beim Öffnen des Geräts wird (falls vom Chip unterstützt) der V4L2-Brightness-Regler direkt am Grabber moderat angehoben (+20 % des Wertebereichs ab Werkseinstellung) das wirkt bereits VOR der JPEG-Kompression und kann so tatsächlich verlorene Schattendetails retten, statt nur nachträglich zu strecken, was von der Kompression übrig blieb. Diagnose-Ausgabe der verfügbaren Regler landet beim Start im Terminal.
  • Studio-/Full-Range-Korrektur: Das fertig dekodierte Bild wird von einem komprimierten Kontrastumfang (Schwarzpunkt niedrig angesetzt, Weißpunkt ≈235/255) auf den vollen 0255-Kontrastumfang gedehnt. Ohne diese Korrektur wirkt das Bild dumpf, kontrastarm und zu dunkel viele billige HDMI-Grabber liefern (oder kodieren, auch bei MJPEG) genau in diesem komprimierten Bereich. Greift direkt im GPU-Shader auf dem fertigen RGB-Bild, also unabhängig vom Pixelformat.

Abhängigkeiten (Arch Linux)

sudo pacman -S qt6-base cmake alsa-lib linux-headers base-devel

qt6-base bringt auf Arch bereits die benötigten Qt6OpenGL- und Qt6OpenGLWidgets-Module mit.

Bauen

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

Starten

./hdmi-viewer

Tastenkürzel

Taste Funktion
F Vollbild ein/aus
S Bildglättung ein/aus
C Retro-Optik (Scanlines/Maske) ein/aus
, / . Dunkler / Heller (Helligkeit, gespeichert)
Esc Vollbild verlassen ODER zurück zum Dialog

Einstellungen

Werden gespeichert in: ~/.config/hdmi-viewer/HDMIViewer.conf
(Standard XDG-Pfad, kein manuelles Anlegen nötig)

Audio-Gerät finden

# Alle ALSA-Capture-Geräte auflisten
arecord -l

# Testen (hw:X,Y aus arecord -l, z.B. hw:2,0)
arecord -D hw:2,0 -f S16_LE -r 48000 -c 2 /tmp/test.wav
aplay /tmp/test.wav

Das Gerät dann im Dialog so eingeben: z.B. hw:2,0 oder plughw:2,0
(plughw macht automatische Sample-Rate-Konvertierung, falls nötig)

Description
Tool zur Anzeige von HDMI Grabber direkt mit Sound
Readme 300 KiB
Languages
C++ 97.5%
CMake 1.5%
Shell 1%