From b7adb742094c6ea6985ab726aa9bed50aa135f62 Mon Sep 17 00:00:00 2001 From: Nick Mowen Date: Wed, 14 Sep 2022 17:02:28 -0600 Subject: [PATCH] Format files and fix tests --- frigate/config.py | 10 +++- frigate/ffmpeg_presets.py | 4 +- frigate/test/test_ffmpeg_presets.py | 79 +++++++++++++++++++++-------- frigate/util.py | 2 +- 4 files changed, 69 insertions(+), 26 deletions(-) diff --git a/frigate/config.py b/frigate/config.py index 3114bad23..ca6ead667 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -667,13 +667,19 @@ class CameraConfig(FrigateBaseModel): + ["pipe:"] ) if "rtmp" in ffmpeg_input.roles and self.rtmp.enabled: - rtmp_args = get_ffmpeg_arg_list(parse_preset_output_rtmp(self.ffmpeg.output_args.args.rtmp) or self.ffmpeg.output_args.rtmp) + rtmp_args = get_ffmpeg_arg_list( + parse_preset_output_rtmp(self.ffmpeg.output_args.rtmp) + or self.ffmpeg.output_args.rtmp + ) ffmpeg_output_args = ( rtmp_args + [f"rtmp://127.0.0.1/live/{self.name}"] + ffmpeg_output_args ) if "record" in ffmpeg_input.roles and self.record.enabled: - record_args = get_ffmpeg_arg_list(parse_preset_output_record(self.ffmpeg.output_args.record) or self.ffmpeg.output_args.record) + record_args = get_ffmpeg_arg_list( + parse_preset_output_record(self.ffmpeg.output_args.record) + or self.ffmpeg.output_args.record + ) ffmpeg_output_args = ( record_args diff --git a/frigate/ffmpeg_presets.py b/frigate/ffmpeg_presets.py index e652c4bd4..06214c868 100644 --- a/frigate/ffmpeg_presets.py +++ b/frigate/ffmpeg_presets.py @@ -40,7 +40,7 @@ def parse_preset_input(arg: Any, detect_fps: int) -> str: return None if arg is "preset-jpeg-generic": - return PRESETS_INPUT[arg].format(f'{detect_fps}') + return PRESETS_INPUT[arg].format(f"{detect_fps}") return PRESETS_INPUT.get(arg, None) @@ -70,7 +70,7 @@ PRESETS_RTMP_OUTPUT = { } -def parse_preset_output_rtmp(arg: Any, detect_fps: int) -> str: +def parse_preset_output_rtmp(arg: Any) -> str: """Return the correct preset if in preset format otherwise return raw input.""" if not isinstance(arg, str): return None diff --git a/frigate/test/test_ffmpeg_presets.py b/frigate/test/test_ffmpeg_presets.py index dfd74c606..7af232bf5 100644 --- a/frigate/test/test_ffmpeg_presets.py +++ b/frigate/test/test_ffmpeg_presets.py @@ -31,58 +31,95 @@ class TestFfmpegPresets(unittest.TestCase): def test_default_ffmpeg(self): frigate_config = FrigateConfig(**self.default_ffmpeg) + frigate_config.cameras["back"].create_ffmpeg_cmds() assert self.default_ffmpeg == frigate_config.dict(exclude_unset=True) def test_ffmpeg_hwaccel_preset(self): - self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["hwaccel_args"] = "preset-rpi-64-h264" + self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ + "hwaccel_args" + ] = "preset-rpi-64-h264" frigate_config = FrigateConfig(**self.default_ffmpeg) - assert "preset-rpi-64-h264" not in frigate_config.cameras["back"]["ffmpeg_cmds"][0] - assert "-c:v h264_v4l2m2m" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] + frigate_config.cameras["back"].create_ffmpeg_cmds() + assert "preset-rpi-64-h264" not in frigate_config.cameras["back"].ffmpeg_cmds[0] + assert "-c:v h264_v4l2m2m" in frigate_config.cameras["back"].ffmpeg_cmds[0] def test_ffmpeg_hwaccel_not_preset(self): - self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["hwaccel_args"] = "-other-hwaccel args" + self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ + "hwaccel_args" + ] = "-other-hwaccel args" frigate_config = FrigateConfig(**self.default_ffmpeg) - assert "-other-hwaccel args" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] + frigate_config.cameras["back"].create_ffmpeg_cmds() + assert "-other-hwaccel args" in frigate_config.cameras["back"].ffmpeg_cmds[0] def test_default_ffmpeg_input_arg_preset(self): frigate_config = FrigateConfig(**self.default_ffmpeg) - self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["input_args"] = "preset-rtsp-generic" + self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ + "input_args" + ] = "preset-rtsp-generic" frigate_preset_config = FrigateConfig(**self.default_ffmpeg) - assert frigate_preset_config.cameras["back"]["ffmpeg_cms"][0] == frigate_config.cameras["back"]["ffmpeg_cmds"][0] + frigate_config.cameras["back"].create_ffmpeg_cmds() + assert ( + frigate_preset_config.cameras["back"].ffmpeg_cmds[0] + == frigate_config.cameras["back"].ffmpeg_cmds[0] + ) def test_ffmpeg_input_preset(self): - self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["input_args"] = "preset-rtmp-generic" + self.default_ffmpeg["cameras"]["back"]["ffmpeg"][ + "input_args" + ] = "preset-rtmp-generic" frigate_config = FrigateConfig(**self.default_ffmpeg) - assert "preset-rtmp-generic" not in frigate_config.cameras["back"]["ffmpeg_cmds"][0] - assert parse_preset_input("preset-rtmp-generic") in frigate_config.cameras["back"]["ffmpeg_cmds"][0] + frigate_config.cameras["back"].create_ffmpeg_cmds() + assert ( + "preset-rtmp-generic" not in frigate_config.cameras["back"].ffmpeg_cmds[0] + ) + assert ( + parse_preset_input("preset-rtmp-generic", 5) + in frigate_config.cameras["back"].ffmpeg_cmds[0] + ) def test_ffmpeg_input_not_preset(self): self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["input_args"] = "-some inputs" frigate_config = FrigateConfig(**self.default_ffmpeg) - assert "-some inputs" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] + frigate_config.cameras["back"].create_ffmpeg_cmds() + assert "-some inputs" in frigate_config.cameras["back"].ffmpeg_cmds[0] def test_ffmpeg_output_record_preset(self): - self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"] = "preset-record-generic-audio" + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][ + "record" + ] = "preset-record-generic-audio" frigate_config = FrigateConfig(**self.default_ffmpeg) - assert "preset-record-generic-audio" not in frigate_config.cameras["back"]["ffmpeg_cmds"][0] - assert "-c:v copy -c:a aac" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] + frigate_config.cameras["back"].create_ffmpeg_cmds() + assert ( + "preset-record-generic-audio" + not in frigate_config.cameras["back"].ffmpeg_cmds[0] + ) + assert "-c:v copy -c:a aac" in frigate_config.cameras["back"].ffmpeg_cmds[0] def test_ffmpeg_output_record_not_preset(self): - self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["input_args"] = "-some output" + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][ + "record" + ] = "-some output" frigate_config = FrigateConfig(**self.default_ffmpeg) - assert "-some output" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] + frigate_config.cameras["back"].create_ffmpeg_cmds() + assert "-some output" in frigate_config.cameras["back"].ffmpeg_cmds[0] def test_ffmpeg_output_rtmp_preset(self): - self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["input_args"] = "preset-rtmp-jpeg" + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][ + "rtmp" + ] = "preset-rtmp-jpeg" frigate_config = FrigateConfig(**self.default_ffmpeg) - assert "preset-rtmp-jpeg" not in frigate_config.cameras["back"]["ffmpeg_cmds"][0] - assert "-c:v libx264" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] + frigate_config.cameras["back"].create_ffmpeg_cmds() + assert "preset-rtmp-jpeg" not in frigate_config.cameras["back"].ffmpeg_cmds[0] + assert "-c:v libx264" in frigate_config.cameras["back"].ffmpeg_cmds[0] def test_ffmpeg_output_rtmp_not_preset(self): - self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["input_args"] = "-some output" + self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][ + "rtmp" + ] = "-some output" frigate_config = FrigateConfig(**self.default_ffmpeg) - assert "-some output" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] + frigate_config.cameras["back"].create_ffmpeg_cmds() + assert "-some output" in frigate_config.cameras["back"].ffmpeg_cmds[0] if __name__ == "__main__": diff --git a/frigate/util.py b/frigate/util.py index e5bfb7af3..c74a4b685 100755 --- a/frigate/util.py +++ b/frigate/util.py @@ -888,7 +888,7 @@ def vainfo_hwaccel() -> sp.CompletedProcess: def get_ffmpeg_arg_list(arg: Any) -> list: """Use arg if list or convert to list format.""" - return (arg if isinstance(arg, list) else arg.split(" ")) + return arg if isinstance(arg, list) else arg.split(" ") class FrameManager(ABC):