WebRTC Streaming
WebRTC provides the lowest-latency camera streaming in HomeBe·at. Here's how to set it up with your Home Assistant instance.
Why WebRTC?
HomeBe·at supports multiple streaming protocols. WebRTC offers the best balance of low latency and quality — typically under 1 second of delay, compared to 5–15 seconds for HLS.
| Protocol | Latency | Quality | Setup |
|---|---|---|---|
| WebRTC | < 1s | High | Built-in since HA 2024.11 |
| RTSP | < 1s | High | Direct connection to camera |
| HLS | 5–15s | Medium | Built-in with HA cameras |
| MJPEG | 1–2s | Low | Built-in fallback |
go2rtc in Home Assistant
go2rtc is built into Home Assistant since version 2024.11 and provides WebRTC streaming out of the box.
Requirements
- Home Assistant 2024.11+ with go2rtc integration
- Docker-based installation (HA OS, Container, or Supervised) — go2rtc is NOT available in Python/Core installations
- UDP network connectivity between the HA server and your device
Default Configuration
Modern versions of Home Assistant include go2rtc support out of the box. If your cameras expose an RTSP stream, HA can automatically use go2rtc for WebRTC delivery. Check that your camera entities show a "WebRTC" stream option in the HA dashboard.
Manual go2rtc configuration
For cameras that don't auto-configure, you can add them to your go2rtc.yaml configuration:
streams:
front_door:
- rtsp://admin:[email protected]:554/stream1
backyard:
- rtsp://admin:[email protected]:554/h264Streaming in HomeBe·at
HomeBe·at supports WebRTC, HLS, and MJPEG streaming for Home Assistant cameras, plus RTSP for custom cameras. The app automatically detects which protocols are available for each camera and uses the best one. You can override the stream protocol per camera in the app's settings.
Supported Codecs
HomeBe·at supports H.264, H.265 (HEVC), VP8, VP9, and AV1. The codec is negotiated automatically between go2rtc and the app during the WebRTC handshake. No manual configuration is needed — if your camera streams in H.265, it will be decoded natively.
Reolink Cameras
Reolink cameras that expose separate fluent (low-res) and clear (high-res) stream entities work natively with HomeBe·at. The app detects these resolution channels and uses them for quality switching — Medium quality connects to the fluent stream, High quality connects to the clear stream. This avoids bitrate throttling and provides the best picture at each quality level. Multi-lens cameras (e.g. Reolink Duo 3 PoE) appear as separate cameras, one per lens.
Enabling Clear Channel Entities
By default, Home Assistant only enables the fluent (low-resolution) camera entity for Reolink cameras. To get high-quality streaming in HomeBe·at, you need to enable the clear channel:
- In Home Assistant, go to Settings → Devices & Services → Reolink
- Click on your camera device
- Under Entities, find the disabled entities (shown in grey or behind a "Show disabled" toggle)
- Enable the Clear camera entity (e.g. camera.driveway_clear or camera.driveway_clear_lens_0)
- Wait a few seconds for HA to register the entity, then restart HomeBe·at or reconnect
Once enabled, HomeBe·at automatically detects the clear channel and uses it for High quality streaming.
Additional Reolink Entities
Reolink cameras expose several other entities that HomeBe·at can use if enabled in Home Assistant:
| Entity | Type | Description |
|---|---|---|
| Fluent/Clear bitrate | Number (slider) | Stream bitrate for each channel. Adjust to control bandwidth usage. |
| Fluent/Clear framerate | Number (slider) | Stream framerate for each channel. Higher FPS = smoother video. |
| PTZ position sensors | Sensor | Current pan and tilt position (read-only). |
| PTZ buttons | Button | Directional movement (left, right, up, down) and stop. HomeBe·at uses press-and-hold for continuous movement. |
| PTZ zoom | Number (slider) | Optical zoom level. HomeBe·at divides the range into usable steps for the +/- zoom control. |
| PTZ presets | Select/Button | Saved camera positions (e.g. "Front Door", "Driveway"). |
To enable these entities, follow the same steps as for the clear channel — find them under the device's disabled entities in Home Assistant and toggle them on.
Troubleshooting
WebRTC Not Connecting
- Check go2rtc is running — In Home Assistant, go to Settings > Add-ons and verify go2rtc is active.
- Check UDP connectivity — WebRTC requires UDP traffic between the HA server and your device. Some corporate or restrictive networks block UDP.
- Check error codes — If HA returns "unknown_command", the WebRTC endpoint doesn't exist (update to HA 2024.11+). If it returns "not_found", the go2rtc integration isn't loaded.
Automatic Fallback
If WebRTC fails, HomeBe·at immediately falls back to MJPEG while simultaneously attempting to establish an HLS stream. Once HLS is ready, it takes over from MJPEG. You'll see the active protocol badge update on the camera as the fallback progresses.
Users Who Cannot Use WebRTC
- Python/Core Home Assistant installations (no go2rtc)
- Users who have manually disabled go2rtc
- Networks that block all UDP traffic
In these cases, HomeBe·at falls back to MJPEG or HLS automatically.