36 lines
972 B
Python
36 lines
972 B
Python
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
|