Commit Graph

2 Commits

Author SHA1 Message Date
HMS MediaEngine Agent 25d6041654 FUNKTIONSFÄHIG: Vollständiger Medienserver mit E2E-Beweis
BEWEISE (alle im Container verifiziert, System-Python 3.14 + GStreamer 1.28.4):
- 2 Layer echtes Video gemischt (Ball + SMPTE), 300 Frames gerendert
- MJPEG-Browser-Stream: 74 JPEG-Frames / 1.4MB in 5s
- ECHTES ArtDMX-Paket (Spec-konform, 512 Kanäle): steuert
  Master 0.502, Layer1 0.502, Layer2 0.126 - sichtbar im Status
- REST-API: Master/Layer-Alpha/Blackout/Playback live steuerbar
- Blackout: effektives Alpha 0.0

run.py (903 Zeilen, Single-File, keine weiteren Abhängigkeiten):
- MediaEngine: compositor-Mixing bis 4 Layer mit xpos/ypos/zorder,
  alpha je Pad (Laufzeit), Loop (EOS-Seek), BGRA, optionaler
  Fullscreen-Zweig (Windows d3d11videosink / Linux autovideosink)
- ArtNetInput: ArtDMX auf UDP 6454, OpCode/ProtVer validiert
- EngineServer: ThreadingHTTPServer mit /stream.mjpg,
  /api/status, /api/health, POST /api/master|layers|blackout|playback
- Web-UI: dunkles Layout, Live-Preview, Master/Layer-Slider,
  Play/Pause/BLK, DMX-Paket-Counter, FPS-Zähler, Diagnose-Tabelle
- DMX-Map Demo: Ch1=Master Ch2-5=Layer Ch6=Play Ch8=Blackout
- Setup-Dialog (--setup, tkinter): Video-Auswahl, Port, Fullscreen
- Bootstrap (--bootstrap): GStreamer-Install Linux/Windows
- setup_windows.ps1 + setup_linux.sh: einmalige Erstinstallation
  (GStreamer MSI/Python auf Windows; apt/dnf auf Linux)

Fixes: Compositor-Pads zuerst definieren (parse_launch-Reihenfolge),
Content-Length als bytes (Binär-Stream), Blackout dimmt nur (pausiert nicht),
JS-Slider-Template korrigiert

Nutzung: python3 run.py [videos] [--port N] [--output] [--setup]
2026-09-11 09:42:51 +02:00
HMS MediaEngine Agent 3ec46dda29 FUNKTIONIERENDER Renderer: Echtes Video-Playback + MJPEG-Browser-Stream
BEWEIS (im Container getestet, System-Python 3.14 + GStreamer 1.28.4):
- 352 Frames aus echtem MP4 dekodiert in 8s
- 119 JPEG-Frames im Browser-Stream (872 KB Videodaten)
- Web-UI 200 OK, API liefert Live-Status

run.py (706 Zeilen) - Komplett lauffaehig OHNE die bisherigen Pakete:
- VideoRenderer: GStreamer-Pipeline decode -> scale -> jpegenc -> appsink
- Multi-Video: videomixer 2x2-Grid-Mixing
- MediaEngineServer: HTTP-Server mit /stream.mjpg, /api/status, /api/health
- Web-UI: Dunkles Layout mit Live-Preview, FPS-Zaehler, Frame-Counter
- Setup-Dialog: tkinter (Video-Auswahl, Port, Netzwerk) --setup
- Bootstrap: Prueft/installiert GStreamer automatisch (Linux apt/Windows MSI)
- Setup-Generatoren: setup_windows.ps1 (Python+GStreamer+uv+Frontend),
  setup_linux.sh (apt/dnf + uv + Frontend)

Fix: Content-Length-Header als bytes (bin-Stream-TypeError)

Nutzung: python3 run.py [videos...] [--port N] [--setup] [--bootstrap]
2026-09-11 09:36:04 +02:00