From f7122a766e206d5109c0a5cb8582909d0f306608 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Fri, 8 Mar 2024 16:24:47 -0700 Subject: [PATCH] Ensure at least 2 frames are saved per minute in preview video (#10337) * simplify * Formatting --- frigate/output/preview.py | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/frigate/output/preview.py b/frigate/output/preview.py index de9dccce7..43dd9bb03 100644 --- a/frigate/output/preview.py +++ b/frigate/output/preview.py @@ -201,26 +201,18 @@ class PreviewRecorder: frame_time: float, ) -> bool: """Decide if this frame should be added to PREVIEW.""" - preview_output_fps = ( - 2 - if any( - o["label"] == "car" - for o in get_active_objects( - frame_time, self.config, current_tracked_objects - ) - ) - else 1 + active_objs = get_active_objects( + frame_time, self.config, current_tracked_objects ) + preview_output_fps = 2 if any(o["label"] == "car" for o in active_objs) else 1 + # limit output to 1 fps if (frame_time - self.last_output_time) < 1 / preview_output_fps: return False # send frame if a non-stationary object is in a zone - if any( - (len(o["current_zones"]) > 0 and not o["stationary"]) - for o in current_tracked_objects - ): + if len(active_objs > 0): self.last_output_time = frame_time return True @@ -228,6 +220,11 @@ class PreviewRecorder: self.last_output_time = frame_time return True + # ensure that at least 2 frames are written every minute + if frame_time - self.last_output_time > 30: + self.last_output_time = frame_time + return True + return False def write_frame_to_cache(self, frame_time: float, frame) -> None: