# 📦 Re-Render & Compress (H.264) > Status: **Entwurf / noch nichts implementiert.** Alle Zahlen unten sind > Hypothesen, bis sie auf dem Host gemessen sind (siehe Phase 0). ## Problem MJPEG überträgt jedes Frame als vollständiges JPEG → die Bandbreite skaliert linear mit Auflösung × Framerate × Clients. Bei höheren Auflösungen oder mehreren gleichzeitigen Clients kann das im WAN / mobil teuer werden. ⚠️ **Wichtig – aktuelle Realität prüfen, nicht annehmen:** Die Live-Streams laufen derzeit auf **320×240** (`liveSize` pro Kamera in [cameras.json](../cameras.json)), **nicht** 1080p. Das `1920x1080` dort ist die **`hiresSize`** — also das *Einzelbild* beim HD-Knopf bzw. im Snapshot-Modus, kein Dauerstream. Die oft zitierten „~30 MBit/s" gelten also bestenfalls für einen hypothetischen 1080p-Dauerstream, nicht für den heutigen Betrieb. 👉 Bevor hier irgendwas gebaut wird, gilt **Phase 0: messen**. Ohne belastbare Bandbreiten-Zahl ist unklar, ob sich der ganze Umbau überhaupt lohnt. ## Ziel Reduktion der Bandbreite durch **optionale, pro Kamera schaltbare** Neukodierung MJPEG → H.264 (GPU), **ohne** die schlanke Default-Architektur (Node besitzt die Kameras, MJPEG-Passthrough, ``-Viewer) für den LAN-Fall aufzugeben. Zielbitrate (Hypothese): ~2–5 MBit/s bei vergleichbarer wahrgenommener Qualität. --- ## ⚠️ Der eigentliche Knackpunkt zuerst: Wiedergabe im Browser Das ist der Teil, der den Umbau groß macht — und der im ersten Entwurf als „UI-Checkbox" verharmlost war. Der aktuelle Viewer rendert den Stream in einem **``** ([public/viewer.js](../public/viewer.js)), gespeist aus `multipart/x-mixed-replace` ([src/snapshotService.js](../src/snapshotService.js)). Ein `` kann **ausschließlich MJPEG** darstellen. > **H.264 läuft niemals in einem ``.** „Der Browser soll mit beidem umgehen" > ist daher kein Schalter, sondern ein **zweiter, vollständiger Wiedergabe-Pfad.** H.264 + MJPEG schließen sich auch im Transport gegenseitig aus — H.264 lässt sich nicht in MJPEG-multipart verpacken. Es braucht einen eigenen Container und einen eigenen Player. Optionen: | Transport | Client | Aufwand | Latenz (Erwartung, zu messen) | |-----------|--------|---------|-------------------------------| | **MSE (fMP4)** | `