diff --git a/biz/checkpoint/checkpoint_biz.py b/biz/checkpoint/checkpoint_biz.py index f215d71..4e9bf68 100644 --- a/biz/checkpoint/checkpoint_biz.py +++ b/biz/checkpoint/checkpoint_biz.py @@ -725,7 +725,7 @@ class FrameProcessorWorker(threading.Thread): # 抽帧控制 if ts - self.last_ts.get(cam_id, 0) < target_interval: - self.raw_queue.task_done() + # self.raw_queue.task_done() continue self.last_ts[cam_id] = ts @@ -793,9 +793,10 @@ class FrameProcessorWorker(threading.Thread): # logger.info(f"[PERF] Camera {cam_id} - Total: {total_time:.1f}ms | " # f"Detect: {detect_time:.1f}ms | " # f"Encode: {encode_time:.1f}ms | ") - self.raw_queue.task_done() except Exception as e: logger.error(f"[ERROR] Frame processing failed for camera {cam_id if 'cam_id' in locals() else 'unknown'}: {e}") logger.exception("Exception details:") # 打印完整的堆栈跟踪 # 继续处理下一帧,不要退出循环 + finally: + self.raw_queue.task_done() diff --git a/rtsp_service_ws_kadian.py b/rtsp_service_ws_kadian.py index f697343..8b439bb 100644 --- a/rtsp_service_ws_kadian.py +++ b/rtsp_service_ws_kadian.py @@ -188,7 +188,7 @@ class RTSPService: for c in cfg.get("cameras", [])] self.stop_event = threading.Event() - self.raw_queue = queue.Queue(maxsize=500) + self.raw_queue = queue.Queue(maxsize=2) self.ws_queue = queue.Queue(maxsize=1000) self.capture_workers = []