mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-04-15 03:22:10 +03:00
Add review config for cutoff times
This commit is contained in:
parent
e135d4cf9f
commit
174a2b4903
@ -390,6 +390,8 @@ review:
|
||||
labels:
|
||||
- car
|
||||
- person
|
||||
# Time to cutoff alerts after no alert-causing activity has occurred (default: shown below)
|
||||
cutoff_time: 40
|
||||
# Optional: required zones for an object to be marked as an alert (default: none)
|
||||
# NOTE: when settings required zones globally, this zone must exist on all cameras
|
||||
# or the config will be considered invalid. In that case the required_zones
|
||||
@ -404,6 +406,8 @@ review:
|
||||
labels:
|
||||
- car
|
||||
- person
|
||||
# Time to cutoff detections after no detection-causing activity has occurred (default: shown below)
|
||||
cutoff_time: 30
|
||||
# Optional: required zones for an object to be marked as a detection (default: none)
|
||||
# NOTE: when settings required zones globally, this zone must exist on all cameras
|
||||
# or the config will be considered invalid. In that case the required_zones
|
||||
|
||||
@ -26,6 +26,10 @@ class AlertsConfig(FrigateBaseModel):
|
||||
enabled_in_config: Optional[bool] = Field(
|
||||
default=None, title="Keep track of original state of alerts."
|
||||
)
|
||||
cutoff_time: int = Field(
|
||||
default=40,
|
||||
title="Time to cutoff alerts after no alert-causing activity has occurred.",
|
||||
)
|
||||
|
||||
@field_validator("required_zones", mode="before")
|
||||
@classmethod
|
||||
@ -48,6 +52,10 @@ class DetectionsConfig(FrigateBaseModel):
|
||||
default_factory=list,
|
||||
title="List of required zones to be entered in order to save the event as a detection.",
|
||||
)
|
||||
cutoff_time: int = Field(
|
||||
default=30,
|
||||
title="Time to cutoff detection after no detection-causing activity has occurred.",
|
||||
)
|
||||
|
||||
enabled_in_config: Optional[bool] = Field(
|
||||
default=None, title="Keep track of original state of detections."
|
||||
|
||||
@ -40,9 +40,6 @@ logger = logging.getLogger(__name__)
|
||||
THUMB_HEIGHT = 180
|
||||
THUMB_WIDTH = 320
|
||||
|
||||
THRESHOLD_ALERT_ACTIVITY = 40
|
||||
THRESHOLD_DETECTION_ACTIVITY = 30
|
||||
|
||||
|
||||
class PendingReviewSegment:
|
||||
def __init__(
|
||||
@ -472,11 +469,14 @@ class ReviewSegmentMaintainer(threading.Thread):
|
||||
return
|
||||
|
||||
if segment.severity == SeverityEnum.alert and frame_time > (
|
||||
segment.last_alert_time + THRESHOLD_ALERT_ACTIVITY
|
||||
segment.last_alert_time + camera_config.review.alerts.cutoff_time
|
||||
):
|
||||
needs_new_detection = (
|
||||
segment.last_detection_time > segment.last_alert_time
|
||||
and (segment.last_detection_time + THRESHOLD_DETECTION_ACTIVITY)
|
||||
and (
|
||||
segment.last_detection_time
|
||||
+ camera_config.review.detections.cutoff_time
|
||||
)
|
||||
> frame_time
|
||||
)
|
||||
last_detection_time = segment.last_detection_time
|
||||
@ -510,7 +510,8 @@ class ReviewSegmentMaintainer(threading.Thread):
|
||||
activity.camera_config.name
|
||||
].last_detection_time = last_detection_time
|
||||
elif segment.severity == SeverityEnum.detection and frame_time > (
|
||||
segment.last_detection_time + THRESHOLD_DETECTION_ACTIVITY
|
||||
segment.last_detection_time
|
||||
+ camera_config.review.detections.cutoff_time
|
||||
):
|
||||
self._publish_segment_end(segment, prev_data)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user