Browse Source

fix global live config

Blake Blackshear 3 years ago
parent
commit
661f7baa21
2 changed files with 79 additions and 0 deletions
  1. 4 0
      frigate/config.py
  2. 75 0
      frigate/test/test_config.py

+ 4 - 0
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": ...,

+ 75 - 0
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 = {