Commit Graph

6 Commits

Author SHA1 Message Date
Julian Vollmer 14a24bb1d8 Allow pinch-to-zoom on live fullscreen page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 17:42:09 +02:00
Julian Vollmer cd133cec32 Add shutdown and reboot buttons to web UI
- POST /system/shutdown and /system/reboot Flask endpoints (sudo shutdown)
- index.html: new System card with Neustart + Ausschalten buttons (confirm dialog)
- live.html: red ⏻ button in bottom bar, replaces page with message on shutdown

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:55:02 +02:00
Julian Vollmer 6ff2c329b0 Fix audio on Android Chrome / Mi Browser
- audioCtx.resume() explizit aufrufen (Android suspendiert AudioContext)
- ws:// vs wss:// dynamisch je nach Seitenprotokoll
- Button zeigt "Verbinde…" bis WebSocket offen ist
- onclose Handler setzt Button zurück auf "Ton an"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:42:08 +02:00
Julian Vollmer e4b8cc55f7 Replace HTTP audio stream with WebSocket + Web Audio API
HTTP Ogg-Streaming hat zu viel Latenz durch Browser-Buffering.
Neuer Ansatz: Raw PCM S16_LE über WebSocket, Web Audio API spielt
direkt ab. Latenz ~100-200ms statt mehrere Sekunden.

- /audio-ws: WebSocket-Endpunkt, streamt arecord PCM-Chunks (512 Bytes = ~32ms)
- live.html: startAudio() öffnet WebSocket, dekodiert PCM zu Float32,
  plant Playback mit AudioContext.createBufferSource() in 40ms-Queue

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:23:47 +02:00
Julian Vollmer a53eceb83a Add audio streaming via USB microphone
- Neuer Endpunkt GET /audio: ffmpeg liest von plughw:2,0 (USB-Soundkarte CM108)
  und streamt Ogg/Opus mit 16kHz Mono 24kbps
- live.html: Ton-Button (🔇/🔊) startet/stoppt Audio-Stream on demand
- setup.sh: ffmpeg installieren, pi zur audio-Gruppe hinzufügen
- pi zur audio-Gruppe hinzugefügt (war nötig für /dev/snd Zugriff)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:15:21 +02:00
Julian Vollmer d9514e23d7 Add fullscreen live view at /live
- Schwarzer Hintergrund, Stream füllt den ganzen Bildschirm (object-fit: cover)
- Overlay mit Uhrzeit und Einstellungs-Link erscheint bei Tap/Klick, blendet sich nach 3s aus
- Vollbild-Button nutzt Fullscreen API
- Auf Handys wird automatisch Landscape angefragt
- Stream-Box auf Hauptseite ist jetzt klickbar und verlinkt auf /live

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 15:49:33 +02:00