- detect role on the high-res main stream
- record role on a low-res sub-stream
- audio role missing/misassigned
Problem Description
Your Frigate camera roles are misconfigured — object detection is running on the high-resolution main stream (causing high CPU), recordings are saving in low resolution, or the live view shows the wrong stream. Frigate uses separate stream roles (detect, record, restream) that should map to the camera's sub stream and main stream correctly.
Why This Happens in Real Homes
Frigate camera roles being misconfigured usually shows up as high CPU or the wrong footage being recorded, because the roles determine which stream is used for what. The detect role should use a low-resolution sub-stream (detection doesn't need full res, and running it on a high-res stream spikes CPU), while the record role should use the high-resolution main stream for quality footage.
In your config, assign the detect role to the camera's low-res sub-stream and the record role to the high-res main stream, and add the audio role to a stream that actually carries audio. Confirm you haven't swapped the main and sub streams. Getting the roles right — low-res for detection, high-res for recording — is what keeps CPU low while recording good-quality footage.
Symptoms
- Camera roles misconfigured
- Wrong stream assigned to a role
- High CPU from role misassignment
- Recording the wrong stream
- Detect on the main stream
- Roles not working as expected
- Stream/role mismatch
- Detect/record on the wrong stream
Recognize these? Here's what usually causes it.
Common Causes
- detect role on the high-res main stream
- record role on a low-res sub-stream
- audio role missing/misassigned
- Both roles on one stream unnecessarily
- Roles not matching the intended streams
- Config error in role assignment
- Sub-stream and main stream swapped
- Misunderstanding of roles
Most fixes happen in the first 3 steps.
Do not optimize by guess; measure impact after each role change.
Tools & Requirements
Step-by-Step Solution
Understand Frigate camera stream roles
Frigate uses multiple stream roles for each camera. The 'detect' role provides frames to the object detection model (should be low resolution: 640x480 or 1280x720 for performance). The 'record' role saves video clips (should be the camera's main high-resolution stream: 1920x1080 or higher). The 'rtmp/restream' role provides the live view in Home Assistant (can be either stream). If roles are swapped — detect pointing to the high-res stream and record pointing to the low-res stream — detection uses excessive CPU and recordings are low quality.
Configure the correct RTSP stream paths
Most IP cameras offer two RTSP streams: a main stream (high resolution, high bitrate) and a sub stream (low resolution, low bitrate). In frigate.yml, assign them correctly: cameras: your_camera: ffmpeg: inputs: - path: rtsp://user:pass@camera-ip/stream1 (main stream) roles: [record] - path: rtsp://user:pass@camera-ip/stream2 (sub stream) roles: [detect]. The sub stream URL varies by camera brand: Amcrest uses /cam/realmonitor?channel=1&subtype=1, Hikvision uses /Streaming/Channels/102, Reolink uses /h264Preview_01_sub.
Set the correct detect resolution
The detect role resolution should match the camera's sub stream output, not the main stream. In frigate.yml: cameras: your_camera: detect: width: 1280, height: 720, fps: 5. If the detect resolution does not match the actual stream resolution: Frigate resizes every frame, wasting CPU. Check your camera's sub stream settings in the camera's web interface — set it to 720p at 15fps with H.264 encoding. Then match Frigate's detect width/height to the same resolution.
Verify roles in the Frigate dashboard
Open the Frigate web UI (http://your-ip:5000) and click on a camera. The debug view shows which streams are assigned to which roles. Check: the detect stream should show the low-resolution feed with the object detection overlay (bounding boxes). The recording indicator should show the high-resolution stream. If detect shows a high-res feed: the roles are swapped in your config. If both detect and record point to the same stream: you are wasting resources by running detection on the full-res stream.
Assign roles for live view separately
The live view in Home Assistant can use either the detect stream (lower quality but less bandwidth) or the record stream (higher quality but more bandwidth). In frigate.yml: add 'restream' or 'rtmp' to the roles list of whichever input you want for live view. Example: - path: rtsp://camera-ip/stream1, roles: [record, restream] gives you a high-quality live view. If you want to minimize bandwidth: assign restream to the sub stream instead. The Frigate integration in Home Assistant automatically uses the restream role for the camera entity.
Quick Solutions
Still having issues? This is usually the deeper cause below.
Camera issues that start suddenly almost always trace back to an upload bandwidth drop — run a speed test before assuming hardware failure.
Role separation is the fastest path to stable Frigate performance.
Live view problems that start suddenly usually trace back to an upload speed drop — the camera itself is fine, the bandwidth path to the cloud isn't.
- detect role on the high-res main stream
- record role on a low-res sub-stream
- audio role missing/misassigned
- Both roles on one stream unnecessarily
- Roles not matching the intended streams
Before you go — try one of these (they fix most cases).
Official Manufacturer Manual
Frigate provides official product documentation through their online manual rather than downloadable PDF. Access setup guides, troubleshooting steps, and product specifications for your Frigate Camera Roles.
Source: docs.frigate.video
Need More Help? Frigate Support
Note: The contact information below connects you directly to Frigate's official customer support team, not Trunetto. They can help with warranty claims, device replacements, and advanced technical issues.





