|
@@ -162,6 +162,29 @@ class RuntimeMotionConfig(MotionConfig):
|
|
extra = Extra.ignore
|
|
extra = Extra.ignore
|
|
|
|
|
|
|
|
|
|
|
|
+class StationaryMaxFramesConfig(FrigateBaseModel):
|
|
|
|
+ default: Optional[int] = Field(title="Default max frames.", ge=1)
|
|
|
|
+ objects: Dict[str, int] = Field(
|
|
|
|
+ default_factory=dict, title="Object specific max frames."
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class StationaryConfig(FrigateBaseModel):
|
|
|
|
+ interval: Optional[int] = Field(
|
|
|
|
+ default=0,
|
|
|
|
+ title="Frame interval for checking stationary objects.",
|
|
|
|
+ ge=0,
|
|
|
|
+ )
|
|
|
|
+ threshold: Optional[int] = Field(
|
|
|
|
+ title="Number of frames without a position change for an object to be considered stationary",
|
|
|
|
+ ge=1,
|
|
|
|
+ )
|
|
|
|
+ max_frames: StationaryMaxFramesConfig = Field(
|
|
|
|
+ default_factory=StationaryMaxFramesConfig,
|
|
|
|
+ title="Max frames for stationary objects.",
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+
|
|
class DetectConfig(FrigateBaseModel):
|
|
class DetectConfig(FrigateBaseModel):
|
|
height: int = Field(default=720, title="Height of the stream for the detect role.")
|
|
height: int = Field(default=720, title="Height of the stream for the detect role.")
|
|
width: int = Field(default=1280, title="Width of the stream for the detect role.")
|
|
width: int = Field(default=1280, title="Width of the stream for the detect role.")
|
|
@@ -172,14 +195,9 @@ class DetectConfig(FrigateBaseModel):
|
|
max_disappeared: Optional[int] = Field(
|
|
max_disappeared: Optional[int] = Field(
|
|
title="Maximum number of frames the object can dissapear before detection ends."
|
|
title="Maximum number of frames the object can dissapear before detection ends."
|
|
)
|
|
)
|
|
- stationary_interval: Optional[int] = Field(
|
|
|
|
- default=0,
|
|
|
|
- title="Frame interval for checking stationary objects.",
|
|
|
|
- ge=0,
|
|
|
|
- )
|
|
|
|
- stationary_threshold: Optional[int] = Field(
|
|
|
|
- title="Number of frames without a position change for an object to be considered stationary",
|
|
|
|
- ge=1,
|
|
|
|
|
|
+ stationary: StationaryConfig = Field(
|
|
|
|
+ default_factory=StationaryConfig,
|
|
|
|
+ title="Stationary objects config.",
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
@@ -772,8 +790,8 @@ class FrigateConfig(FrigateBaseModel):
|
|
|
|
|
|
# Default stationary_threshold configuration
|
|
# Default stationary_threshold configuration
|
|
stationary_threshold = camera_config.detect.fps * 10
|
|
stationary_threshold = camera_config.detect.fps * 10
|
|
- if camera_config.detect.stationary_threshold is None:
|
|
|
|
- camera_config.detect.stationary_threshold = stationary_threshold
|
|
|
|
|
|
+ if camera_config.detect.stationary.threshold is None:
|
|
|
|
+ camera_config.detect.stationary.threshold = stationary_threshold
|
|
|
|
|
|
# FFMPEG input substitution
|
|
# FFMPEG input substitution
|
|
for input in camera_config.ffmpeg.inputs:
|
|
for input in camera_config.ffmpeg.inputs:
|