import cv2
import numpy as np
def validar_video(video_path: str, min_frames=10, umbral_negro=15, umbral_mov=5) -> tuple[bool, str]:
    cap = cv2.VideoCapture(video_path)
    total_frames = 0
    negros = 0
    anteriores = []

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        total_frames += 1

        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        media_lum = np.mean(gray)

        if media_lum < umbral_negro:
            negros += 1

        if total_frames <= 10:
            anteriores.append(gray)

    cap.release()

    if total_frames < min_frames or negros == total_frames:
        return False, "La cámara parece estar tapada o no hay contenido en el video."

    if len(anteriores) >= 2:
        cambios = [
            np.sum(cv2.absdiff(anteriores[i], anteriores[i-1]) > 10)
            for i in range(1, len(anteriores))
        ]
        if max(cambios) < umbral_mov * 100:
            return False, "El video parece ser una imagen estática. No hay movimiento detectable."

    return True, "Video válido"
