Streaming Settings - homebridge-plugins/homebridge-eufy-security GitHub Wiki
Streaming
Node.js Compatibility Warning: Certain Node.js versions break livestream/P2P functionality. See Node.js Compatibility for details.
Contents
General Information
Eufy cameras support two streaming modes:
- P2P Streaming — referred to as 'Local Livestreams' by the plugin
- RTSP Streaming — only available on some devices
| Local Livestream (P2P) | RTSP Stream | |
|---|---|---|
| Availability | All cameras | Only some devices |
| Activation | None required | Must be enabled in the Eufy app + plugin settings |
| Limitations | Only one camera per homebase can stream at a time | Not available on all devices. May interfere with HKSV. |
You can follow this guide to enable RTSP. The app may claim a NAS is required, but RTSP can generally be activated without one.
Enabling Cameras
Set up cameras using the configuration wizard in Homebridge UI. Click on settings and log in with your eufy credentials. Click on any device to access its settings.
See also: Device Settings
Most cameras load as motion sensors by default. You must enable camera mode in the device settings. Doorbells are always recognized as cameras.
The Streaming Process
When you stream from a camera through HomeKit:
- The plugin requests the video/audio stream from the camera (P2P) or the RTSP URL
- FFmpeg encodes the input into a format suitable for HomeKit
- The encoded stream is sent to your Apple device (iPhone, iPad, Apple TV, etc.)
Video encoding is resource-intensive. If your hardware isn't powerful enough, some features may not be available.
By default, the plugin uses the libx264 H.264 encoder and tries to match the parameters requested by the HomeKit controller. For less powerful hardware, choose a preset:
Presets
Select presets in the device config UI under 'Advanced Video Config'. Presets only affect video processing (not audio).
-
No Preset (default): Encodes with
libx264to match the requested resolution, FPS, and bitrate. -
Copy: Forwards the video data to HomeKit without re-encoding. Great performance and quality, but some users report frame skipping due to high bitrate. Try reducing stream quality in the Eufy app if this happens. Video and audio run as separate FFmpeg processes for faster start times.
-
Performance: Reduces resolution and FPS to lower the encoding workload. Good for Raspberry Pi and similar hardware. Video and audio run as separate FFmpeg processes.
-
Custom: Mix and match settings for your specific setup.
Advanced Video Config Settings Explained
| Setting | Description |
|---|---|
| ffmpeg debug | Write FFmpeg debug messages to the Homebridge log. Useful when FFmpeg crashes, but generates a lot of output. |
| Separate processes for video and audio | Split encoding onto separate processes. Can improve performance, but may cause issues on some systems. |
| readRate | Encode at realtime speed. Can usually be ignored for streaming. |
| vcodec | Video codec. Default: libx264. Set to copy to skip re-encoding. |
| acodec | Audio codec. Default: libfdk_aac. Changing this will likely break audio. |
| videoFilter | Custom FFmpeg video filters (-filter:v). |
| encoderOptions | Additional codec options. Default for libx264: -preset ultrafast -tune zerolatency. |
| probeSize | Size of data analyzed to detect stream information. |
| analyzeDuration | Microseconds analyzed to probe input. Higher values = more latency. |
| maxStreams | Maximum concurrent streams. Default: 2. |
| maxWidth / maxHeight | Maximum output resolution. |
| Force crop to requested resolution | Crops to match the requested aspect ratio (e.g., 4:3 doorbell → 16:9 HomeKit). |
| fps | Frames per second. |
| bitrate | Video bitrate. Default: whatever HomeKit requests. |
For streaming problems, see Common Issues — Streaming.