cc3527f86a5a8ad75431929b5f2e7d2f284eeb6e
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 0–255-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
Languages
C++
97.5%
CMake
1.5%
Shell
1%