import cv2 import time class CamaraRTSP: def __init__(self, url, nombre): self.url = url self.nombre = nombre self.cap = None self._conectar() def _conectar(self): self.cap = cv2.VideoCapture(self.url) self.cap.set(cv2.CAP_PROP_OPEN_TIMEOUT_MSEC, 5000) self.cap.set(cv2.CAP_PROP_READ_TIMEOUT_MSEC, 5000) def leer_frame(self): if self.cap is None or not self.cap.isOpened(): print(f"[{self.nombre}] Reconectando...") try: self._conectar() except Exception as e: print(f"[{self.nombre}] Error al reconectar: {e}") self.cap = None time.sleep(2) return None ok, frame = self.cap.read() if not ok: print(f"[{self.nombre}] Frame perdido, reintentando...") self.cap.release() self.cap = None return None return frame