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.

ProtocolLatencyQualitySetup
WebRTC< 1sHighBuilt-in since HA 2024.11
RTSP< 1sHighDirect connection to camera
HLS5–15sMediumBuilt-in with HA cameras
MJPEG1–2sLowBuilt-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/h264

Streaming 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:

  1. In Home Assistant, go to Settings → Devices & Services → Reolink
  2. Click on your camera device
  3. Under Entities, find the disabled entities (shown in grey or behind a "Show disabled" toggle)
  4. Enable the Clear camera entity (e.g. camera.driveway_clear or camera.driveway_clear_lens_0)
  5. 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:

EntityTypeDescription
Fluent/Clear bitrateNumber (slider)Stream bitrate for each channel. Adjust to control bandwidth usage.
Fluent/Clear framerateNumber (slider)Stream framerate for each channel. Higher FPS = smoother video.
PTZ position sensorsSensorCurrent pan and tilt position (read-only).
PTZ buttonsButtonDirectional movement (left, right, up, down) and stop. HomeBe·at uses press-and-hold for continuous movement.
PTZ zoomNumber (slider)Optical zoom level. HomeBe·at divides the range into usable steps for the +/- zoom control.
PTZ presetsSelect/ButtonSaved 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

  1. Check go2rtc is running — In Home Assistant, go to Settings > Add-ons and verify go2rtc is active.
  2. Check UDP connectivity — WebRTC requires UDP traffic between the HA server and your device. Some corporate or restrictive networks block UDP.
  3. 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.

Tip: If you experience connection issues with WebRTC, check that your network allows UDP traffic between the HA server and your device.