Reolink high-resolution cameras (8MP+) in 2025: HTTP vs RTSP best practices #19650
Replies: 5 comments 6 replies
|
|
I have 3 TrackMix PoE cameras running with Frigate 0.16. On the TrackMix, the codec and resolution cannot be changed on the camera itself. The sub-stream resolution is too low to be useful, so I’m using the main stream and in Frigate I set detection to 1920×1080 @ 5 fps. This keeps performance reasonable and has been stable enough in practice. For the other Reolink models you listed I can’t say for sure, but I strongly suspect they behave similarly (no codec switch, limited sub-stream). So, in practice:
|
|
I started using Frigate with 0.13.0 release since everything changed a lot. In my case, Reolink cameras have not changed in the last 2 years (only their configurations based on frigate updates). Now with the latest version 0.16.0, my system works as follows without errors:
I think, I have to change my current hw to solve all of my limitations. Currently I'm looking for a new hw that could solve 10 Reolink cams, facial and plate recognition, 7/24 recordings and detection on the main stream, works with both h265 and h264 encodings, 2-way audios... NUC 12 Pro or Lenovo/HP/Dell Tiny 1L PCs (Lenovo M90q Gen 3 Tiny / HP Elite Mini 800 G9). Here are my cameras and they settings on Reolink app: Here is my current config (IPs have masked out): # MQTT server
mqtt:
enabled: true
host: <HA IP where my mqtt server run>
port: 1883
topic_prefix: frigate
client_id: frigate # Optional, NOTE: must be unique if you are running multiple instances
user: '{FRIGATE_MQTT_USER}'
password: '{FRIGATE_MQTT_PASSWORD}'
stats_interval: 30 # Optional: interval in seconds for publishing stats (default: 60)
# edge TPUs
detectors:
CoralPCIe:
type: edgetpu
device: pci:0
tls:
enabled: false # Optional: Enable TLS for port 8971 (default: True), NOTE: if there is no valid certificate set, it has issue if it is enabled
# Global logger settings
logger:
default: info
# Optional: birdseye configuration
# NOTE: Can (enabled, mode) be overridden at the camera level
birdseye:
enabled: true
# Optional: Restream birdseye via RTSP (default: False)
# NOTE: Enabling this will set birdseye to run 24/7 which may increase CPU usage somewhat.
restream: true
# Optional: Width of the output resolution (default: 1280)
width: 1280
# Optional: Height of the output resolution (default: 720)
height: 720
# Optional: Encoding quality of the mpeg1 feed (default: 8)
# 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources.
quality: 8
# Optional: Mode of the view. Available options are: objects, motion, and continuous
# objects - cameras are included if they have had a tracked object within the last 30 seconds
# motion - cameras are included if motion was detected in the last 30 seconds
# continuous - all cameras are included always
mode: continuous
# Optional: Threshold for camera activity to stop showing camera (default: 30)
inactivity_threshold: 30
# Global ffmpeg settings
ffmpeg:
path: '5.0' # In v0.15.0, ffmpeg is v7, if it cause errors, you can downgrade the ffmpeg v5.0
# hwaccel_args: preset-vaapi # For intel-vaapi
hwaccel_args: preset-intel-qsv-h264 # Use hardware acceleration for ffmpeg with h264 and intel quicksync video
input_args: preset-rtsp-restream
output_args:
#record: preset-record-generic-audio-copy # Changed from v0.15.1 to v0.16.0-beta1
record: preset-record-generic-audio-aac
# Global record settings, can be overridden at the camera level
record:
enabled: true
# Optional: Number of minutes to wait between cleanup runs (default: 60)
# This can be used to reduce the frequency of deleting recording segments from disk if you want to minimize i/o
expire_interval: 120
# Keep all recordings for 10 days
retain:
days: 10
# Optional: Mode for retention. Available options are: all, motion, and active_objects
# all - save all recording segments regardless of activity
# motion - save all recordings segments with any detected motion
# active_objects - save all recording segments with active/moving objects
# NOTE: this mode only applies when the days setting above is greater than 0
mode: all
export:
# Optional: Timelapse Output Args (default: "-vf setpts=0.04*PTS -r 30").
# NOTE: The default args are set to fit 24 hours of recording into 1 hour playback.
# See https://stackoverflow.com/a/58268695 for more info on how these args work.
# As an example: if you wanted to go from 24 hours to 30 minutes that would be going
# from 86400 seconds to 1800 seconds which would be 1800 / 86400 = 0.02.
# The -r (framerate) dictates how smooth the output video is.
# So the args would be -vf setpts=0.02*PTS -r 30 in that case.
timelapse_args: -vf setpts=0.04*PTS -r 30
# Optional: Recording Preview Settings
preview:
# Optional: Quality of recording preview (default: medium).
# Options are: very_low, low, medium, high, very_high
quality: medium
# Keep event recordings for 20 days
alerts:
# Optional: Number of seconds before the alert to include (default: 5)
pre_capture: 5
# Optional: Number of seconds after the alert to include (default: 5)
post_capture: 5
retain:
days: 20
mode: active_objects
detections:
# Optional: Number of seconds before the detection to include (default: 5)
pre_capture: 5
# Optional: Number of seconds after the detection to include (default: 5)
post_capture: 5
retain:
days: 20
mode: active_objects
# Optional: Configuration for the jpg snapshots written to the clips directory for each tracked object
# Global snapshot settings, can be overridden at the camera level
snapshots:
enabled: true
clean_copy: true # Optional: save a clean PNG copy of the snapshot image (default: True)
timestamp: false # Optional: print a timestamp on the snapshots (default: False)
bounding_box: true # Optional: draw bounding box on the snapshots (default: True)
crop: true # Optional: crop the snapshot (default: False)
retain:
default: 20 # days
quality: 100 # Optional: quality of the encoded jpeg, 0-100 (default: 70)
# Optional: Live stream configuration for WebUI.
# NOTE: Can be overridden at the camera level
live:
# Optional: Set the name of the stream configured in go2rtc
# that should be used for live view in frigate WebUI. (default: name of camera)
# NOTE: In most cases this should be set at the camera level only.
#stream_name: camera_name
# Optional: Set the height of the jsmpeg stream. (default: 720)
# This must be less than or equal to the height of the detect stream. Lower resolutions
# reduce bandwidth required for viewing the jsmpeg stream. Width is computed to match known aspect ratio.
height: 720
# Optional: Set the encode quality of the jsmpeg stream (default: 8)
# 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources.
quality: 31
# Optional: in-feed timestamp style configuration
# NOTE: Can be overridden at the camera level
timestamp_style:
# Optional: Position of the timestamp (default: tl)
# "tl" (top left), "tr" (top right), "bl" (bottom left), "br" (bottom right)
position: tl
format: '%Y/%m/%d %H:%M:%S'
color:
red: 255
green: 255
blue: 255
thickness: 2 # Optional: Line thickness of font (default: 2)
# Optional: Effect of lettering (default: None)
# None (No effect),
# "solid" (solid background in inverse color of font)
# "shadow" (shadow for font)
effect: shadow
go2rtc:
webrtc:
candidates:
- <HA IP on camera network>:8555
- stun:8555
streams:
garage_front:
# Reolink Duo 3 PoE - High Res Stream (codec: h.265/HEVC, res: 7680*2160, 32/9 aspect ratio, fps:15/1, bitrate:12288kbps, I-frame Interval:1x, Frame Rate Mode:Constant, Bitrate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<Garage front IP>:554/h265Preview_01_main
#- ffmpeg:garage_front#audio=opus
garage_front_sub:
# Reolink Duo 3 PoE - Low Res Stream (codec: h.264/AVC/MPEG-4 part 10, res: 1536*432, 32/9 aspect ratio, fps:7/1, bitrate:2048kbps, I-frame Interval:1x, Frame Rate Mode:Constant, Bitrate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<Garage front IP>:554/h264Preview_01_sub
garage_back:
# Reolink CX410 PoE - High Res Stream (codec: h.264/AVC/MPEG-4 part 10, res: 2560x1440, 16/9 aspect ratio, fps:15/1, bitrate:6144kbps, I-frame Interval:1x, Frame Rate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<Garage back IP>:554/h264Preview_01_main
#- ffmpeg:garage_back#audio=opus
garage_back_sub:
# Reolink CX410 PoE - Low Res Stream (codec: h.264/AVC/MPEG-4 part 10, res: 640x360, 16/9 aspect ratio, fps:7/1, bitrate:512kbps I-frame Interval:1x, Frame Rate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<Garage back IP>:554/h264Preview_01_sub
backyard:
# Reolink Duo 3 PoE - High Res Stream (codec: h.265/HEVC, res: 7680*2160, 32/9 aspect ratio, fps:15/1, bitrate:12288kbps, I-frame Interval:1x, Frame Rate Mode:Constant, Bitrate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<backyard IP>:554/h265Preview_01_main
#- ffmpeg:backyard#audio=opus
backyard_sub:
# Reolink Duo 3 PoE - Low Res Stream (codec: h.264/AVC/MPEG-4 part 10, res: 1536*432, 32/9 aspect ratio, fps:7/1, bitrate:2048kbps, I-frame Interval:1x, Frame Rate Mode:Constant, Bitrate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<backyard IP>:554/h264Preview_01_sub
bedroom_baby:
# Reolink E1 Pro - High Res Stream (codec: h.264/AVC/MPEG-4 part 10, res: 2560x1440, 16/9 aspect ratio, fps:15/1, bitrate:4096kbps, I-frame Interval:1x, Frame Rate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<bedroom baby IP>:554/h264Preview_01_main
#- ffmpeg:bedroom_barni#audio=opus
bedroom_baby_sub:
# Reolink E1 Pro - Low Res Stream (codec: h.264/AVC/MPEG-4 part 10, res: 640x360, 16/9 aspect ratio, fps:7/1, bitrate:512kbps I-frame Interval:1x, Frame Rate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<bedroom baby IP>:554/h264Preview_01_sub
livingroom:
# Reolink Duo 2V PoE - High Res Stream (codec: h.265/HEVC, res: 5120*1552, 320/97 aspect ratio, fps:15/1, bitrate:8192kbps, I-frame Interval:1x, Frame Rate Mode:Constant, Bitrate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<livingroom IP>:554/h265Preview_01_main
#- ffmpeg:livingroom#audio=opus
livingroom_sub:
# Reolink Duo 2V PoE - Low Res Stream (codec: h.264/AVC/MPEG-4 part 10, res: 1920*576, 10/3 aspect ratio, fps:7, bitrate:2048kbps I-frame Interval:1x, Frame Rate Mode:Constant, Bitrate Mode:Constant, Audio: AAC)
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@<livingroom IP>:554/h264Preview_01_sub
doorbell:
# # EMOS Doorbell - Front Gate - High Res Stream / stream0 720P (codec: h.264/AVC/MPEG-4 part 10, resolution: 1280x720, 16/9 aspect ratio, fps:25/1, Audio: PCM ALAW, mono, 8kHz, 16bit)
- rtsp://<DB IP>:554/stream0
#- ffmpeg:doorbell#audio=aac#hardwer
#- ffmpeg:rtsp://127.0.0.1:8554/doorbell#audio=aac
# Camera configuration
cameras:
# Reolink Duo 3 PoE - Garage Front, Driveway
garage_front:
# Optional: Enable/Disable the camera (default: True).
# If disabled: config is used but no live stream and no capture etc.
# Events/Recordings are still viewable.
enabled: true
ffmpeg:
inputs:
# High Res Stream
- path: rtsp://127.0.0.1:8554/garage_front
hwaccel_args: preset-intel-qsv-h265
roles:
- record
# Low Res Stream
- path: rtsp://127.0.0.1:8554/garage_front_sub
roles:
- detect
live:
streams:
Main Stream: garage_front
Sub Stream: garage_front_sub
detect:
width: 1536
height: 432
fps: 7
annotation_offset: 0
ui:
order: 2
dashboard: true
birdseye:
order: 2
# Reolink CX410 PoE - Garage Back
garage_back:
enabled: true
ffmpeg:
inputs:
# High Res Stream
- path: rtsp://127.0.0.1:8554/garage_back
roles:
- record
# Low Res Stream
- path: rtsp://127.0.0.1:8554/garage_back_sub
roles:
- detect
live:
streams:
Main Stream: garage_back
Sub Stream: garage_back_sub
detect:
width: 640
height: 360
fps: 7
annotation_offset: 0
ui:
order: 3
dashboard: true
birdseye:
order: 3
# Reolink Duo 3 PoE - BackYard
backyard:
enabled: true
ffmpeg:
inputs:
# High Res Stream
- path: rtsp://127.0.0.1:8554/backyard
hwaccel_args: preset-intel-qsv-h265
roles:
- record
# Low Res Stream
- path: rtsp://127.0.0.1:8554/backyard_sub
roles:
- detect
live:
streams:
Main Stream: backyard
Sub Stream: backyard_sub
detect:
width: 1536
height: 432
fps: 7
annotation_offset: 0
ui:
order: 4
dashboard: true
birdseye:
order: 4
# Reolink E1 Pro - Bedroom Baby
bedroom_baby:
enabled: true
ffmpeg:
inputs:
# High Res Stream
- path: rtsp://127.0.0.1:8554/bedroom_baby
roles:
- record
# Low Res Stream
- path: rtsp://127.0.0.1:8554/bedroom_baby_sub
roles:
- detect
live:
streams:
Main Stream: bedroom_baby
Sub Stream: bedroom_baby_sub
detect:
width: 640
height: 360
fps: 7
annotation_offset: 0
ui:
order: 5
dashboard: true
birdseye:
order: 5
# EMOS Doorbell - Front Gate
doorbell:
enabled: true
ffmpeg:
inputs:
# High Res Stream / stream0 720P (1280x720)
- path: rtsp://127.0.0.1:8554/doorbell
hwaccel_args: []
roles:
- record
- detect
output_args:
record: preset-record-generic-audio-aac # Override the global settings
live:
streams:
doorbell: doorbell
detect:
width: 1280
height: 720
# default fps for emos doorbell is 25
fps: 25 # doorbell detect fps is set to 25. This does NOT need to match your camera's frame rate. High values could lead to reduced performance. Recommended value is 5.
annotation_offset: 0
snapshots:
enabled: true
timestamp: true
bounding_box: true
retain:
default: 30
ui:
order: 1
dashboard: true
birdseye:
order: 1
# Reolink Duo 2V PoE - Living Room
livingroom:
enabled: true
ffmpeg:
inputs:
# High Res Stream
- path: rtsp://127.0.0.1:8554/livingroom
hwaccel_args: preset-intel-qsv-h265
roles:
- record
# Low Res Stream
- path: rtsp://127.0.0.1:8554/livingroom_sub
# input_args: preset-rtsp-restream-low-latency
roles:
- detect
live:
streams:
Main Stream: livingroom
Sub Stream: livingroom_sub
detect:
width: 1920
height: 576
fps: 7
annotation_offset: 0
ui:
order: 6
dashboard: true
birdseye:
order: 6
ui: {}
version: 0.16-0
camera_groups:
Inside:
order: 1
icon: LuWarehouse
cameras:
- livingroom
- bedroom_baby
Outside:
order: 2
icon: LuTrees
cameras:
- garage_front
- garage_back
- backyard
- doorbell
detect:
enabled: true
semantic_search:
enabled: true
model_size: small
face_recognition:
enabled: true
model_size: small
lpr:
enabled: true
classification:
bird:
enabled: false |
|
My Configs, note that Reolink supports several different aliases for the primary and secondary stream I used these to avoid confusion as on the 4K cameras the primary stream is ALWAYS h.265 and the sub stream is ALWAYS h.264 on these cameras where as the reference config from reolink sometimes has h264 in the stream name even if it is h.265 Reolink WiFI Doorbell Black The Black WiFi doorbell firmware still sucks, there was one release where RTSP worked fairly well but the HDR in the current firmware helps shade / sunlight too much to ignore so it is my ONLY flv reolink device. I use FLV to record the primary and use the sub stream for two way audio via RTSP. 4k Cameras with H.265 primary and H.264 sub stream. This is not a recommendation however all of the below cameras work, with few if any errors in the RTSP stream. I 'sometimes' see an infrequent glitch (maybe once or twice in 24 hrs) or error in the decode but in general very stable. DUO 2 POE Edit: for got to add on the camera config I use input_args: preset-rtsp-generic as it seems slightly more stable than the restream preset. |
|
With my Reolink 811A, there is also the option to select H.264 in the mainstream… and that works perfectly. The camera is connected via RTSP. I was skeptical at first, but it actually runs really well with I-frame set to 1 and 15 FPS. Of course, they can’t compete with my Dahuas, especially regarding night vision, but the Reolink serves its purpose |
Uh oh!
There was an error while loading. Please reload this page.
Hi everyone,
Back in 2022, several discussions (notably #3235) and the official documentation suggested that for Reolink cameras above 8 MP, HTTP/FLV streaming was not supported and that RTSP should be used instead (docs.frigate.video).
Now, three years later (August 2025), I’d like to check if anything has changed for the following models:
Questions:
Any updated experiences, configs, or practical tips on these newer 8 MP+ models would be very valuable. Thanks in advance for sharing!
All reactions