mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-08-06 19:07:20 +03:00
Fixes (#18795)
* Catch error when regex is invalid * Fix i18n label * Mobile camera drawer i18n fixes * additional frame cache debug logs * Add Romanian * Fix exports thumbnail path * Improve clip buffer and remove outdated comments --------- Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
This commit is contained in:
co-authored by
Josh Hawkins
parent
4ff81d5877
commit
8a9ebe9292
@@ -598,7 +598,7 @@ def recording_clip(
|
||||
if clip.start_time < start_ts:
|
||||
file.write(f"inpoint {int(start_ts - clip.start_time)}\n")
|
||||
|
||||
# if this is the ending clip and end trim is enabled, add an outpoint
|
||||
# if this is the ending clip, add an outpoint
|
||||
if clip.end_time > end_ts:
|
||||
file.write(f"outpoint {int(end_ts - clip.start_time)}\n")
|
||||
|
||||
|
||||
@@ -350,6 +350,7 @@ class CameraState:
|
||||
removed_obj = tracked_objects[id]
|
||||
if "end_time" not in removed_obj.obj_data:
|
||||
removed_obj.obj_data["end_time"] = frame_time
|
||||
logger.debug(f"{self.name}: end callback for object {id}")
|
||||
for c in self.callbacks["end"]:
|
||||
c(self.name, removed_obj, frame_name)
|
||||
|
||||
@@ -441,6 +442,17 @@ class CameraState:
|
||||
for t in self.frame_cache.keys()
|
||||
if t not in current_thumb_frames and t not in current_best_frames
|
||||
]
|
||||
if len(thumb_frames_to_delete) > 0:
|
||||
logger.debug(f"{self.name}: Current frame cache contents:")
|
||||
for k, v in self.frame_cache.items():
|
||||
logger.debug(f" frame time: {k}, object id: {v['object_id']}")
|
||||
for obj_id, obj in tracked_objects.items():
|
||||
thumb_time = (
|
||||
obj.thumbnail_data["frame_time"] if obj.thumbnail_data else None
|
||||
)
|
||||
logger.debug(
|
||||
f"{self.name}: Tracked object {obj_id} thumbnail frame_time: {thumb_time}"
|
||||
)
|
||||
for t in thumb_frames_to_delete:
|
||||
object_id = self.frame_cache[t].get("object_id", "unknown")
|
||||
logger.debug(f"{self.name}: Deleting {t} from frame cache for {object_id}")
|
||||
|
||||
@@ -1500,18 +1500,24 @@ class LicensePlateProcessingMixin:
|
||||
|
||||
# Determine subLabel based on known plates, use regex matching
|
||||
# Default to the detected plate, use label name if there's a match
|
||||
sub_label = next(
|
||||
(
|
||||
label
|
||||
for label, plates in self.lpr_config.known_plates.items()
|
||||
if any(
|
||||
re.match(f"^{plate}$", top_plate)
|
||||
or distance(plate, top_plate) <= self.lpr_config.match_distance
|
||||
for plate in plates
|
||||
)
|
||||
),
|
||||
None,
|
||||
)
|
||||
try:
|
||||
sub_label = next(
|
||||
(
|
||||
label
|
||||
for label, plates in self.lpr_config.known_plates.items()
|
||||
if any(
|
||||
re.match(f"^{plate}$", top_plate)
|
||||
or distance(plate, top_plate) <= self.lpr_config.match_distance
|
||||
for plate in plates
|
||||
)
|
||||
),
|
||||
None,
|
||||
)
|
||||
except re.error:
|
||||
logger.error(
|
||||
f"{camera}: Invalid regex in known plates configuration: {self.lpr_config.known_plates}"
|
||||
)
|
||||
sub_label = None
|
||||
|
||||
# If it's a known plate, publish to sub_label
|
||||
if sub_label is not None:
|
||||
|
||||
@@ -126,7 +126,7 @@ class RecordingExporter(threading.Thread):
|
||||
minutes = int(diff / 60)
|
||||
seconds = int(diff % 60)
|
||||
ffmpeg_cmd = [
|
||||
"7.0",
|
||||
"/usr/lib/ffmpeg/7.0/bin/ffmpeg", # hardcode path for exports thumbnail due to missing libwebp support
|
||||
"-hide_banner",
|
||||
"-loglevel",
|
||||
"warning",
|
||||
|
||||
Reference in New Issue
Block a user