go2rtc is a tiny streaming server that takes camera feeds (RTSP, USB, ONVIF) and re-publishes them as low-latency WebRTC to a browser — the backbone of theLAB's live camera viewing.
Why go2rtc
- Sub-second latency via WebRTC, with automatic fallback to MSE/HLS.
- One source, many consumers — it pulls the camera's RTSP once and fans it out, so you don't hammer the camera with multiple connections.
- Mixes Reolink (RTSP) and USB webcams in one config.
Minimal config
# go2rtc.yaml
streams:
driveway: rtsp://user:pass@camera-ip/h264Preview_01_main
garage: ffmpeg:device?video=/dev/video0
It serves a dashboard and an API on :1984; a small live.php viewer embeds the WebRTC players.
Gotcha: USB device sharing
A USB camera can be held by only one process. If another app grabs /dev/video0, go2rtc can't — restart order matters, or proxy through go2rtc as the single owner.
Pairs with vision: feed a frame to a local VLM (qwen-vl) for "what's in the driveway?" alerts.
Related: theLAB Fleet Map · Local Image Generation with ComfyUI