mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-04 18:25:22 +03:00
Correct format
This commit is contained in:
parent
b14da7732c
commit
50349b23ab
@ -56,11 +56,11 @@ PRESETS_FFMPEG_HW_ACCEL = {
|
|||||||
"preset-rpi-32-h264": "h264_v4l2m2m",
|
"preset-rpi-32-h264": "h264_v4l2m2m",
|
||||||
"preset-rpi-64-h264": "h264_v4l2m2m",
|
"preset-rpi-64-h264": "h264_v4l2m2m",
|
||||||
"preset-vaapi": "h264_vaapi",
|
"preset-vaapi": "h264_vaapi",
|
||||||
"preset-intel-qsv-h264": "h264_qsv", # From Sandy Bridge (gen 6)
|
"preset-intel-qsv-h264": "h264_qsv", # From Sandy Bridge (gen 6)
|
||||||
"preset-intel-qsv-h265": "h264_qsv", # From Sandy Bridge (gen 6)
|
"preset-intel-qsv-h265": "h264_qsv", # From Sandy Bridge (gen 6)
|
||||||
"preset-nvidia-h264": "h264_nvenc",
|
"preset-nvidia-h264": "h264_nvenc",
|
||||||
"preset-nvidia-h265": "h264_nvenc",
|
"preset-nvidia-h265": "h264_nvenc",
|
||||||
"default": "libx264", # SW codecs
|
"default": "libx264", # SW codecs
|
||||||
}
|
}
|
||||||
|
|
||||||
PRESETS_HW_ACCEL_DECODE = {
|
PRESETS_HW_ACCEL_DECODE = {
|
||||||
@ -198,14 +198,14 @@ def _parse_rotation_scale(
|
|||||||
elif rotate == 180:
|
elif rotate == 180:
|
||||||
if arg.startswith("preset-vaapi") or arg.startswith("preset-intel-qsv"):
|
if arg.startswith("preset-vaapi") or arg.startswith("preset-intel-qsv"):
|
||||||
transpose = "reverse"
|
transpose = "reverse"
|
||||||
else: # No 'reverse' option suported, then 2 'clocks' rotations
|
else: # No 'reverse' option suported, then 2 'clocks' rotations
|
||||||
transpose = "clock,transpose=clock"
|
transpose = "clock,transpose=clock"
|
||||||
elif rotate == 270:
|
elif rotate == 270:
|
||||||
transpose = "cclock"
|
transpose = "cclock"
|
||||||
else : # Rotation not need or not supported
|
else: # Rotation not need or not supported
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
return PRESETS_HW_ACCEL_SCALE_ROTATION.get(arg, "").get(mode).format(transpose)
|
return PRESETS_HW_ACCEL_SCALE_ROTATION.get(arg, "").get(mode, "").format(transpose)
|
||||||
|
|
||||||
|
|
||||||
def parse_preset_hardware_acceleration_scale(
|
def parse_preset_hardware_acceleration_scale(
|
||||||
@ -218,11 +218,13 @@ def parse_preset_hardware_acceleration_scale(
|
|||||||
) -> list[str]:
|
) -> list[str]:
|
||||||
"""Return the correct scaling preset or default preset if none is set."""
|
"""Return the correct scaling preset or default preset if none is set."""
|
||||||
if not isinstance(arg, str) or " " in arg:
|
if not isinstance(arg, str) or " " in arg:
|
||||||
scale = PRESETS_HW_ACCEL_SCALE["default"].format(fps, width, height, "").split(" ")
|
scale = (
|
||||||
|
PRESETS_HW_ACCEL_SCALE["default"].format(fps, width, height, "").split(" ")
|
||||||
|
)
|
||||||
scale.extend(detect_args)
|
scale.extend(detect_args)
|
||||||
return scale
|
return scale
|
||||||
|
|
||||||
transpose =_parse_rotation_scale(arg, "detect", rotate)
|
transpose = _parse_rotation_scale(arg, "detect", rotate)
|
||||||
|
|
||||||
scale = PRESETS_HW_ACCEL_SCALE.get(arg, "")
|
scale = PRESETS_HW_ACCEL_SCALE.get(arg, "")
|
||||||
|
|
||||||
@ -442,7 +444,7 @@ def parse_preset_output_record(arg: Any, hw_acc: Any, rotate: int) -> list[str]:
|
|||||||
audio = preset_record_video_audio["audio"]
|
audio = preset_record_video_audio["audio"]
|
||||||
|
|
||||||
video = preset_record_video_audio["video"]
|
video = preset_record_video_audio["video"]
|
||||||
transpose =_parse_rotation_scale(hw_acc, "record", rotate)
|
transpose = _parse_rotation_scale(hw_acc, "record", rotate)
|
||||||
if transpose != "" or not "copy" in video:
|
if transpose != "" or not "copy" in video:
|
||||||
encode = PRESETS_FFMPEG_HW_ACCEL.get(hw_acc, "libx264")
|
encode = PRESETS_FFMPEG_HW_ACCEL.get(hw_acc, "libx264")
|
||||||
video = transpose + " -c:v " + encode
|
video = transpose + " -c:v " + encode
|
||||||
|
|||||||
@ -86,9 +86,7 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_hwaccel_rotate_90_preset(self):
|
def test_ffmpeg_hwaccel_rotate_90_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 90
|
||||||
"rotate"
|
|
||||||
] = 90
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-nvidia-h264"
|
] = "preset-nvidia-h264"
|
||||||
@ -108,9 +106,7 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_hwaccel_rotate_180_preset(self):
|
def test_ffmpeg_hwaccel_rotate_180_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 180
|
||||||
"rotate"
|
|
||||||
] = 180
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-rpi-64-h264"
|
] = "preset-rpi-64-h264"
|
||||||
@ -119,21 +115,17 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
"width": 2560,
|
"width": 2560,
|
||||||
"fps": 10,
|
"fps": 10,
|
||||||
}
|
}
|
||||||
|
|
||||||
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
||||||
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
||||||
assert "preset-rpi-64-h264" not in (
|
assert "preset-rpi-64-h264" not in (
|
||||||
" ".join(frigate_config.cameras["back"].ffmpeg_cmds[0]["cmd"])
|
" ".join(frigate_config.cameras["back"].ffmpeg_cmds[0]["cmd"])
|
||||||
)
|
)
|
||||||
assert (
|
assert "-r 10 -vf transpose=clock,transpose=clock -s 2560x1920" in (
|
||||||
"-r 10 -vf transpose=clock,transpose=clock -s 2560x1920"
|
" ".join(frigate_config.cameras["back"].ffmpeg_cmds[0]["cmd"])
|
||||||
in (" ".join(frigate_config.cameras["back"].ffmpeg_cmds[0]["cmd"]))
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_hwaccel_rotate_180_vaapi_preset(self):
|
def test_ffmpeg_hwaccel_rotate_180_vaapi_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 180
|
||||||
"rotate"
|
|
||||||
] = 180
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-vaapi"
|
] = "preset-vaapi"
|
||||||
@ -142,7 +134,6 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
"width": 2560,
|
"width": 2560,
|
||||||
"fps": 10,
|
"fps": 10,
|
||||||
}
|
}
|
||||||
|
|
||||||
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
||||||
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
||||||
assert "preset-vaapi" not in (
|
assert "preset-vaapi" not in (
|
||||||
@ -154,9 +145,7 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_hwaccel_rotate_180_qsv_preset(self):
|
def test_ffmpeg_hwaccel_rotate_180_qsv_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 180
|
||||||
"rotate"
|
|
||||||
] = 180
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-intel-qsv-h264"
|
] = "preset-intel-qsv-h264"
|
||||||
@ -165,7 +154,6 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
"width": 2560,
|
"width": 2560,
|
||||||
"fps": 10,
|
"fps": 10,
|
||||||
}
|
}
|
||||||
|
|
||||||
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
||||||
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
||||||
assert "preset-intel-qsv-h264" not in (
|
assert "preset-intel-qsv-h264" not in (
|
||||||
@ -177,9 +165,7 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_hwaccel_rotate_270_preset(self):
|
def test_ffmpeg_hwaccel_rotate_270_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 270
|
||||||
"rotate"
|
|
||||||
] = 270
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-nvidia-h264"
|
] = "preset-nvidia-h264"
|
||||||
@ -199,9 +185,7 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_hwaccel_rotate_wrong_preset(self):
|
def test_ffmpeg_hwaccel_rotate_wrong_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 20
|
||||||
"rotate"
|
|
||||||
] = 20
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-nvidia-h264"
|
] = "preset-nvidia-h264"
|
||||||
@ -244,7 +228,7 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
assert "preset-rtmp-generic" not in (
|
assert "preset-rtmp-generic" not in (
|
||||||
" ".join(frigate_config.cameras["back"].ffmpeg_cmds[0]["cmd"])
|
" ".join(frigate_config.cameras["back"].ffmpeg_cmds[0]["cmd"])
|
||||||
)
|
)
|
||||||
assert (" ".join(parse_preset_input("preset-rtmp-generic", 5))) in (
|
assert " ".join(parse_preset_input("preset-rtmp-generic", 5)) in (
|
||||||
" ".join(frigate_config.cameras["back"].ffmpeg_cmds[0]["cmd"])
|
" ".join(frigate_config.cameras["back"].ffmpeg_cmds[0]["cmd"])
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -292,16 +276,13 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_output_record_rotate_90_preset(self):
|
def test_ffmpeg_output_record_rotate_90_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 90
|
||||||
"rotate"
|
|
||||||
] = 90
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-nvidia-h264"
|
] = "preset-nvidia-h264"
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
||||||
"record"
|
"record"
|
||||||
] = "preset-record-generic-audio-aac"
|
] = "preset-record-generic-audio-aac"
|
||||||
|
|
||||||
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
||||||
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
||||||
assert "preset-record-generic-audio-aac" not in (
|
assert "preset-record-generic-audio-aac" not in (
|
||||||
@ -312,16 +293,13 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_output_record_rotate_180_preset(self):
|
def test_ffmpeg_output_record_rotate_180_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 180
|
||||||
"rotate"
|
|
||||||
] = 180
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-rpi-64-h264"
|
] = "preset-rpi-64-h264"
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
||||||
"record"
|
"record"
|
||||||
] = "preset-record-generic-audio-aac"
|
] = "preset-record-generic-audio-aac"
|
||||||
|
|
||||||
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
||||||
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
||||||
assert "preset-rpi-64-h264" not in (
|
assert "preset-rpi-64-h264" not in (
|
||||||
@ -332,16 +310,13 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_output_record_rotate_180_vaapi_preset(self):
|
def test_ffmpeg_output_record_rotate_180_vaapi_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 180
|
||||||
"rotate"
|
|
||||||
] = 180
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-vaapi"
|
] = "preset-vaapi"
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
||||||
"record"
|
"record"
|
||||||
] = "preset-record-generic-audio-aac"
|
] = "preset-record-generic-audio-aac"
|
||||||
|
|
||||||
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
||||||
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
||||||
assert "preset-vaapi" not in (
|
assert "preset-vaapi" not in (
|
||||||
@ -352,16 +327,13 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_output_record_rotate_180_qsv_preset(self):
|
def test_ffmpeg_output_record_rotate_180_qsv_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 180
|
||||||
"rotate"
|
|
||||||
] = 180
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-intel-qsv-h264"
|
] = "preset-intel-qsv-h264"
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
||||||
"record"
|
"record"
|
||||||
] = "preset-record-generic-audio-aac"
|
] = "preset-record-generic-audio-aac"
|
||||||
|
|
||||||
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
||||||
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
||||||
assert "preset-intel-qsv-h264" not in (
|
assert "preset-intel-qsv-h264" not in (
|
||||||
@ -372,16 +344,13 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_output_record_rotate_270_preset(self):
|
def test_ffmpeg_output_record_rotate_270_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 270
|
||||||
"rotate"
|
|
||||||
] = 270
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-nvidia-h264"
|
] = "preset-nvidia-h264"
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
||||||
"record"
|
"record"
|
||||||
] = "preset-record-generic-audio-aac"
|
] = "preset-record-generic-audio-aac"
|
||||||
|
|
||||||
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
||||||
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
||||||
assert "preset-nvidia-h264" not in (
|
assert "preset-nvidia-h264" not in (
|
||||||
@ -392,16 +361,13 @@ class TestFfmpegPresets(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_ffmpeg_output_record_rotate_wrong_preset(self):
|
def test_ffmpeg_output_record_rotate_wrong_preset(self):
|
||||||
self.default_ffmpeg["cameras"]["back"][
|
self.default_ffmpeg["cameras"]["back"]["rotate"] = 20
|
||||||
"rotate"
|
|
||||||
] = 20
|
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"][
|
||||||
"hwaccel_args"
|
"hwaccel_args"
|
||||||
] = "preset-nvidia-h264"
|
] = "preset-nvidia-h264"
|
||||||
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
self.default_ffmpeg["cameras"]["back"]["ffmpeg"]["output_args"][
|
||||||
"record"
|
"record"
|
||||||
] = "preset-record-generic-audio-aac"
|
] = "preset-record-generic-audio-aac"
|
||||||
|
|
||||||
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
frigate_config = FrigateConfig(**self.default_ffmpeg)
|
||||||
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
frigate_config.cameras["back"].create_ffmpeg_cmds()
|
||||||
assert "preset-nvidia-h264" not in (
|
assert "preset-nvidia-h264" not in (
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user