diff --git a/frigate/config.py b/frigate/config.py index 48e785c53b..a321594e6e 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -44,6 +44,7 @@ DEFAULT_TRACKED_OBJECTS = ["person"] DEFAULT_DETECTORS = {"cpu": {"type": "cpu"}} +DEFAULT_DETECT_DIMENSIONS = {"width": 1280, "height": 720} class FrigateBaseModel(BaseModel): @@ -268,8 +269,14 @@ class StationaryConfig(FrigateBaseModel): class DetectConfig(FrigateBaseModel): autoconf: bool = Field(default=True, title="Auto detect height, width and fps.") - 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.") + height: int = Field( + default=DEFAULT_DETECT_DIMENSIONS["height"], + title="Height of the stream for the detect role.", + ) + width: int = Field( + default=DEFAULT_DETECT_DIMENSIONS["width"], + title="Width of the stream for the detect role.", + ) fps: int = Field( default=5, title="Number of frames per second to process through detection." ) @@ -672,8 +679,19 @@ def __init__(self, **config): config["ffmpeg"]["inputs"][0]["roles"].append("rtmp") for input in config["ffmpeg"]["inputs"]: - if config["detect"].get("autoconf") and ( - "detect" in input.get("roles", []) + if ( + config["detect"].get("autoconf") + and ("detect" in input.get("roles", [])) + and ( + config["detect"].get("height") is None + or config["detect"].get("width") is None + or ( + config["detect"].get("height") + == DEFAULT_DETECT_DIMENSIONS["height"] + and config["detect"].get("width") + == DEFAULT_DETECT_DIMENSIONS["width"] + ) + ) ): try: streamInfo = get_video_properties(input.get("path"))