diff --git a/frigate/video.py b/frigate/video.py
index 89543e21a..abf490a72 100755
--- a/frigate/video.py
+++ b/frigate/video.py
@@ -606,23 +606,24 @@ def process_frames(
startup_scan = True
stationary_frame_counter = 0
+ camera_enabled = True
region_min_size = get_min_region_size(model_config)
- prev_enabled = None
-
while not stop_event.is_set():
- _, enabled_config = enabled_config_subscriber.check_for_update()
- current_enabled = (
- enabled_config.enabled
- if enabled_config
- else (prev_enabled if prev_enabled is not None else True)
- )
- if prev_enabled is None:
- prev_enabled = current_enabled
+ _, updated_enabled_config = enabled_config_subscriber.check_for_update()
- if prev_enabled and not current_enabled and camera_metrics.frame_queue.empty():
+ if updated_enabled_config:
+ prev_enabled = camera_enabled
+ camera_enabled = updated_enabled_config.enabled
+
+ if (
+ not camera_enabled
+ and prev_enabled != camera_enabled
+ and camera_metrics.frame_queue.empty()
+ ):
logger.debug(f"Camera {camera_name} disabled, clearing tracked objects")
+ prev_enabled = camera_enabled
# Clear norfair's dictionaries
object_tracker.tracked_objects.clear()
@@ -638,9 +639,7 @@ def process_frames(
for tracker in object_tracker.default_tracker.values():
tracker.tracked_objects = []
- prev_enabled = current_enabled
-
- if not current_enabled:
+ if not camera_enabled:
time.sleep(0.1)
continue
diff --git a/web/src/components/player/LivePlayer.tsx b/web/src/components/player/LivePlayer.tsx
index f7121d40e..c34f4c94c 100644
--- a/web/src/components/player/LivePlayer.tsx
+++ b/web/src/components/player/LivePlayer.tsx
@@ -301,22 +301,6 @@ export default function LivePlayer({
player =
Stream offline
diff --git a/web/src/types/frigateConfig.ts b/web/src/types/frigateConfig.ts index e468c534f..9b3d60606 100644 --- a/web/src/types/frigateConfig.ts +++ b/web/src/types/frigateConfig.ts @@ -155,15 +155,20 @@ export interface CameraConfig { record: { enabled: boolean; enabled_in_config: boolean; - events: { - objects: string[] | null; + alerts: { post_capture: number; pre_capture: number; - required_zones: string[]; retain: { - default: number; + days: number; + mode: string; + }; + }; + detections: { + post_capture: number; + pre_capture: number; + retain: { + days: number; mode: string; - objects: Record