Format files and fix tests

This commit is contained in:
Nick Mowen 2022-09-14 17:02:28 -06:00
parent c44c74ddfe
commit b7adb74209
4 changed files with 69 additions and 26 deletions

View File

@ -667,13 +667,19 @@ class CameraConfig(FrigateBaseModel):
+ ["pipe:"] + ["pipe:"]
) )
if "rtmp" in ffmpeg_input.roles and self.rtmp.enabled: 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 = ( ffmpeg_output_args = (
rtmp_args + [f"rtmp://127.0.0.1/live/{self.name}"] + 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: 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 = ( ffmpeg_output_args = (
record_args record_args

View File

@ -40,7 +40,7 @@ def parse_preset_input(arg: Any, detect_fps: int) -> str:
return None return None
if arg is "preset-jpeg-generic": 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) 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.""" """Return the correct preset if in preset format otherwise return raw input."""
if not isinstance(arg, str): if not isinstance(arg, str):
return None return None

View File

@ -31,58 +31,95 @@ class TestFfmpegPresets(unittest.TestCase):
def test_default_ffmpeg(self): def test_default_ffmpeg(self):
frigate_config = FrigateConfig(**self.default_ffmpeg) frigate_config = FrigateConfig(**self.default_ffmpeg)
frigate_config.cameras["back"].create_ffmpeg_cmds()
assert self.default_ffmpeg == frigate_config.dict(exclude_unset=True) assert self.default_ffmpeg == frigate_config.dict(exclude_unset=True)
def test_ffmpeg_hwaccel_preset(self): 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) frigate_config = FrigateConfig(**self.default_ffmpeg)
assert "preset-rpi-64-h264" not in frigate_config.cameras["back"]["ffmpeg_cmds"][0] frigate_config.cameras["back"].create_ffmpeg_cmds()
assert "-c:v h264_v4l2m2m" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] 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): 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) 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): def test_default_ffmpeg_input_arg_preset(self):
frigate_config = FrigateConfig(**self.default_ffmpeg) 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) 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): 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) frigate_config = FrigateConfig(**self.default_ffmpeg)
assert "preset-rtmp-generic" not in frigate_config.cameras["back"]["ffmpeg_cmds"][0] frigate_config.cameras["back"].create_ffmpeg_cmds()
assert parse_preset_input("preset-rtmp-generic") in frigate_config.cameras["back"]["ffmpeg_cmds"][0] 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): def test_ffmpeg_input_not_preset(self):
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["input_args"] = "-some inputs" self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["input_args"] = "-some inputs"
frigate_config = FrigateConfig(**self.default_ffmpeg) 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): 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) frigate_config = FrigateConfig(**self.default_ffmpeg)
assert "preset-record-generic-audio" not in frigate_config.cameras["back"]["ffmpeg_cmds"][0] frigate_config.cameras["back"].create_ffmpeg_cmds()
assert "-c:v copy -c:a aac" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] 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): 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) 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): 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) frigate_config = FrigateConfig(**self.default_ffmpeg)
assert "preset-rtmp-jpeg" not in frigate_config.cameras["back"]["ffmpeg_cmds"][0] frigate_config.cameras["back"].create_ffmpeg_cmds()
assert "-c:v libx264" in frigate_config.cameras["back"]["ffmpeg_cmds"][0] 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): 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) 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__": if __name__ == "__main__":

View File

@ -888,7 +888,7 @@ def vainfo_hwaccel() -> sp.CompletedProcess:
def get_ffmpeg_arg_list(arg: Any) -> list: def get_ffmpeg_arg_list(arg: Any) -> list:
"""Use arg if list or convert to list format.""" """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): class FrameManager(ABC):