dev #17

Merged
siwat merged 29 commits from dev into main 2025-09-25 19:59:50 +00:00
Showing only changes of commit 08cb4eafc4 - Show all commits

View file

@ -90,24 +90,30 @@ class RTSPReader:
# Read frame immediately without rate limiting for minimum latency
try:
ret, frame = self.cap.read()
# Force grab then retrieve for better error handling
ret = self.cap.grab()
if ret:
ret, frame = self.cap.retrieve()
else:
frame = None
except Exception as read_error:
logger.error(f"Camera {self.camera_id}: cap.read() threw exception: {type(read_error).__name__}: {read_error}")
logger.error(f"Camera {self.camera_id}: cap.grab/retrieve threw exception: {type(read_error).__name__}: {read_error}")
ret, frame = False, None
if not ret or frame is None:
consecutive_errors += 1
# Verbose logging to see actual errors
# Enhanced logging to diagnose the issue
logger.error(f"Camera {self.camera_id}: cap.read() failed - ret={ret}, frame={frame is not None}")
# Try to get more info from the capture
try:
if self.cap.isOpened():
if self.cap and self.cap.isOpened():
backend = self.cap.getBackendName()
logger.debug(f"Camera {self.camera_id}: Capture still open, backend: {backend}")
pos_frames = self.cap.get(cv2.CAP_PROP_POS_FRAMES)
logger.error(f"Camera {self.camera_id}: Capture open, backend: {backend}, pos_frames: {pos_frames}")
else:
logger.error(f"Camera {self.camera_id}: Capture is closed!")
logger.error(f"Camera {self.camera_id}: Capture is closed or None!")
except Exception as info_error:
logger.error(f"Camera {self.camera_id}: Error getting capture info: {type(info_error).__name__}: {info_error}")