'use strict'; // go2rtc Player-Modi – Fallback-Reihenfolge: WebRTC → MSE → MJPEG const MODE = 'webrtc,mse,mjpeg'; // ── Logging (sichtbar in Browser DevTools → Console → F12) ────────────────── const P = '[WebcamViewer]'; const log = (c, m) => console.log(`${P}[${c}] ${m}`); const warn = (c, m) => console.warn(`${P}[${c}] ⚠ ${m}`); const err = (c, m, e) => console.error(`${P}[${c}] ✗ ${m}`, e ?? ''); // ── Kamera-View aufbauen ───────────────────────────────────────────────────── function buildCamera(camId, go2rtcPort, container) { // WebSocket direkt zu go2rtc – kein Proxy-Zwischenschritt, garantiert stabil. // Protokoll: ws:// auf LAN (http). Für Internet mit TLS wird aus ws: wss: (Caddy). const wsUrl = `ws://${location.hostname}:${go2rtcPort}/api/ws?src=${encodeURIComponent(camId)}`; log(camId, `View erstellt mode="${MODE}" ws=${wsUrl}`); const box = document.createElement('div'); box.className = 'cam-box'; const stream = document.createElement('video-stream'); stream.mode = MODE; // Events vom inneren