mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-12 22:25:24 +03:00
Catch case where images do not exist
This commit is contained in:
parent
de9160ccaa
commit
42be7efde4
@ -659,9 +659,14 @@ class CameraState:
|
|||||||
def update(self, frame_time, current_detections, motion_boxes, regions):
|
def update(self, frame_time, current_detections, motion_boxes, regions):
|
||||||
# get the new frame
|
# get the new frame
|
||||||
frame_id = f"{self.name}{frame_time}"
|
frame_id = f"{self.name}{frame_time}"
|
||||||
current_frame = self.frame_manager.get(
|
|
||||||
frame_id, self.camera_config.frame_shape_yuv
|
try:
|
||||||
)
|
current_frame = self.frame_manager.get(
|
||||||
|
frame_id, self.camera_config.frame_shape_yuv
|
||||||
|
)
|
||||||
|
except FileNotFoundError:
|
||||||
|
logger.error(f"Failed to get {frame_id} from SHM")
|
||||||
|
return
|
||||||
|
|
||||||
tracked_objects = self.tracked_objects.copy()
|
tracked_objects = self.tracked_objects.copy()
|
||||||
current_ids = set(current_detections.keys())
|
current_ids = set(current_detections.keys())
|
||||||
|
|||||||
@ -94,7 +94,11 @@ def output_frames(
|
|||||||
|
|
||||||
frame_id = f"{camera}{frame_time}"
|
frame_id = f"{camera}{frame_time}"
|
||||||
|
|
||||||
frame = frame_manager.get(frame_id, config.cameras[camera].frame_shape_yuv)
|
try:
|
||||||
|
frame = frame_manager.get(frame_id, config.cameras[camera].frame_shape_yuv)
|
||||||
|
except FileNotFoundError:
|
||||||
|
logger.error(f"Failed to get {frame_id} from SHM")
|
||||||
|
continue
|
||||||
|
|
||||||
# send camera frame to ffmpeg process if websockets are connected
|
# send camera frame to ffmpeg process if websockets are connected
|
||||||
if any(
|
if any(
|
||||||
|
|||||||
@ -712,6 +712,8 @@ class SharedMemoryFrameManager(FrameManager):
|
|||||||
self.shm_store[name].close()
|
self.shm_store[name].close()
|
||||||
self.shm_store[name].unlink()
|
self.shm_store[name].unlink()
|
||||||
del self.shm_store[name]
|
del self.shm_store[name]
|
||||||
|
else:
|
||||||
|
logger.error(f"Could not delete {name} the store is {self.shm_store}")
|
||||||
|
|
||||||
|
|
||||||
def create_mask(frame_shape, mask):
|
def create_mask(frame_shape, mask):
|
||||||
|
|||||||
@ -147,8 +147,6 @@ def capture_frames(
|
|||||||
try:
|
try:
|
||||||
# add to the queue
|
# add to the queue
|
||||||
frame_queue.put(current_frame.value, False)
|
frame_queue.put(current_frame.value, False)
|
||||||
# close the frame
|
|
||||||
frame_manager.close(frame_name)
|
|
||||||
except queue.Full:
|
except queue.Full:
|
||||||
# if the queue is full, skip this frame
|
# if the queue is full, skip this frame
|
||||||
skipped_eps.update()
|
skipped_eps.update()
|
||||||
@ -572,9 +570,12 @@ def process_frames(
|
|||||||
current_frame_time.value = frame_time
|
current_frame_time.value = frame_time
|
||||||
ptz_metrics["ptz_frame_time"].value = frame_time
|
ptz_metrics["ptz_frame_time"].value = frame_time
|
||||||
|
|
||||||
frame = frame_manager.get(
|
try:
|
||||||
f"{camera_name}{frame_time}", (frame_shape[0] * 3 // 2, frame_shape[1])
|
frame = frame_manager.get(
|
||||||
)
|
f"{camera_name}{frame_time}", (frame_shape[0] * 3 // 2, frame_shape[1])
|
||||||
|
)
|
||||||
|
except FileNotFoundError:
|
||||||
|
frame = None
|
||||||
|
|
||||||
if frame is None:
|
if frame is None:
|
||||||
logger.info(f"{camera_name}: frame {frame_time} is not in memory store.")
|
logger.info(f"{camera_name}: frame {frame_time} is not in memory store.")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user