Commit Graph

8 Commits

Author SHA1 Message Date
root
898af6022b Improve stream reliability with stall detection and buffer management
Add video stall detection that monitors currentTime and auto-reconnects
after 15s of frozen video. Add MSE SourceBuffer trimming to prevent
QuotaExceededError from killing streams silently. Handle appendBuffer
errors with safe wrapper and SourceBuffer error listener. Wait for ICE
gathering before sending WebRTC offers. Add go2rtc stream availability
endpoint. Improve backend proxy error logging.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 10:00:13 -06:00
root
c39ec4e954 Add Prometheus exporter for go2rtc and Frigate stream health
Standalone Python exporter that polls go2rtc /api/streams and Frigate
/api/stats every 15s, tracking bytes_recv deltas to detect stalled
streams. Exposes metrics on port 9199 including stream_up,
bytes_per_second, consumers, and camera_fps.
2026-03-05 12:27:52 -06:00
root
f26acc409a Fix WebSocket proxy ping timeout killing MSE streams
The websockets library defaults to ping_interval=20, ping_timeout=20.
go2rtc doesn't respond to these pings, so the upstream WebSocket was
being killed after ~50 seconds causing all camera streams to freeze.

Disabled ping_interval and ping_timeout on the upstream connection.
2026-02-26 16:01:22 -06:00
root
23ca4ee742 Fix stream freezing and alert camera name matching
- Add auto-reconnect with exponential backoff to MSE and WebRTC streams
  when connections drop, preventing permanent freezes in grid view
- Add onDisconnect callback to Go2RTCWebRTC (connectionstate monitoring)
  and Go2RTCMSE (WebSocket close detection)
- Fix alert camera names to use Frigate names (Front_Porch, etc.)
  instead of display names which never matched MQTT events
- Disable offline WyzePanV3 camera
2026-02-26 15:55:44 -06:00
root
b630ba0337 Fix streaming: MSE-first with go2rtc init protocol
- Switch from WebRTC-first to MSE-first streaming (more reliable
  across all camera types including high-res IP cameras)
- Send required {"type":"mse"} init message to go2rtc WebSocket
- Fix infinite re-render loop in configStore (pre-compute enabled
  cameras instead of deriving in selector)
- Fix mqtt_bridge global variable scope in broadcast()
- Add React ErrorBoundary for visible crash reporting
- Remove unused go2rtcUrl dependency from useStream hook
2026-02-25 22:36:13 -06:00
root
ba2824ec56 Add go2rtc proxy to fix CORS-blocked WebRTC/MSE streams 2026-02-25 22:11:56 -06:00
root
da5637fbdb Fix systemd service working directory for module imports 2026-02-25 22:04:17 -06:00
root
11eab66e9d Initial scaffold: React+TS+Vite frontend, FastAPI backend, config system 2026-02-25 21:57:36 -06:00