From 661f7baa21daac420247d9ab61ca1b38df813a98 Mon Sep 17 00:00:00 2001 From: Blake Blackshear Date: Mon, 13 Sep 2021 20:33:00 -0500 Subject: [PATCH] fix global live config --- frigate/config.py | 4 ++ frigate/test/test_config.py | 75 +++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/frigate/config.py b/frigate/config.py index edba6a410..6144613d4 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -677,6 +677,9 @@ class FrigateConfig(FrigateBaseModel): snapshots: SnapshotsConfig = Field( default_factory=SnapshotsConfig, title="Global snapshots configuration." ) + live: CameraLiveConfig = Field( + default_factory=CameraLiveConfig, title="Global live configuration." + ) rtmp: RtmpConfig = Field( default_factory=RtmpConfig, title="Global RTMP restreaming configuration." ) @@ -715,6 +718,7 @@ class FrigateConfig(FrigateBaseModel): include={ "record": ..., "snapshots": ..., + "live": ..., "rtmp": ..., "objects": ..., "motion": ..., diff --git a/frigate/test/test_config.py b/frigate/test/test_config.py index 49fcf6d03..bf10f6ae4 100644 --- a/frigate/test/test_config.py +++ b/frigate/test/test_config.py @@ -958,6 +958,81 @@ class TestConfig(unittest.TestCase): runtime_config = frigate_config.runtime_config assert runtime_config.cameras["back"].rtmp.enabled + def test_global_live(self): + + config = { + "mqtt": {"host": "mqtt"}, + "live": {"quality": 4}, + "cameras": { + "back": { + "ffmpeg": { + "inputs": [ + { + "path": "rtsp://10.0.0.1:554/video", + "roles": ["detect"], + }, + ] + }, + } + }, + } + frigate_config = FrigateConfig(**config) + assert config == frigate_config.dict(exclude_unset=True) + + runtime_config = frigate_config.runtime_config + assert runtime_config.cameras["back"].live.quality == 4 + + def test_default_live(self): + + config = { + "mqtt": {"host": "mqtt"}, + "cameras": { + "back": { + "ffmpeg": { + "inputs": [ + { + "path": "rtsp://10.0.0.1:554/video", + "roles": ["detect"], + }, + ] + } + } + }, + } + frigate_config = FrigateConfig(**config) + assert config == frigate_config.dict(exclude_unset=True) + + runtime_config = frigate_config.runtime_config + assert runtime_config.cameras["back"].live.quality == 8 + + def test_global_live_merge(self): + + config = { + "mqtt": {"host": "mqtt"}, + "live": {"quality": 4, "height": 480}, + "cameras": { + "back": { + "ffmpeg": { + "inputs": [ + { + "path": "rtsp://10.0.0.1:554/video", + "roles": ["detect"], + }, + ] + }, + "live": { + "quality": 7, + }, + } + }, + } + frigate_config = FrigateConfig(**config) + assert config == frigate_config.dict(exclude_unset=True) + + runtime_config = frigate_config.runtime_config + assert runtime_config.cameras["back"].live.quality == 7 + assert runtime_config.cameras["back"].live.height == 480 + def test_global_timestamp_style(self): config = {