Detección de Movimiento

Sistema híbrido de detección de movimiento de dos niveles que combina análisis de escena FFmpeg del lado del servidor con identificación opcional de objetos TensorFlow.js en el navegador.

Última actualización: 2025-02-18

Detección de Movimiento

El sistema de detección de movimiento de Certexi utiliza una arquitectura híbrida de dos niveles que combina detección confiable del lado del servidor con identificación opcional de objetos en el navegador.

Arquitectura

Loading diagram…

Cuadrícula de Vigilancia

La cuadrícula de cámaras 2x3 muestra feeds en vivo de las zonas del almacén con indicadores de estado para grabación, detección de movimiento y alertas.

certexi.com/app/surveillance/grid
Loading interactive demo...

6 feeds de cámara — haga clic en cualquier feed para expandir. Indicadores de detección de movimiento y alertas mostrados en tiempo real.

Nivel 1: Detección del Lado del Servidor

El motor de detección primario ejecuta FFmpeg con filtros de detección de escena:

ffmpeg -rtsp_transport tcp \
       -i rtsp://camera-url \
       -vf "select='gt(scene,0.3)',showinfo" \
       -f null -

Cómo Funciona

  1. Se genera un proceso FFmpeg de larga duración por cámara
  2. El filtro scene calcula diferencias de píxeles entre cuadros (escala 0-1)
  3. Cuando la diferencia supera el umbral de sensibilidad, se dispara un evento de movimiento
  4. El callback extrae un clip del búfer circular (pre/post grabación configurable)
  5. Los clips se suben opcionalmente a Nextcloud para almacenamiento de evidencia

Rendimiento

MétricaValor
Latencia de detección200-500ms
CPU por cámara5-10%
Memoria por cámara50-100MB
Cámaras concurrentes10-20+ (servidor típico)
Tasa de falsos positivosBaja (análisis a nivel de píxel)
ℹ️

Auto-Recuperación

El singleton SimpleMotionDetector gestiona los procesos FFmpeg con reinicio automático en caso de falla. Si un proceso se cae, se regenera en segundos.

Nivel 2: Detección de Objetos en el Navegador

Una mejora opcional que ejecuta TensorFlow.js COCO-SSD en el navegador:

  • Descarga el modelo (~6MB, almacenado en caché después de la primera carga)
  • Ejecuta inferencia a 5 FPS sobre el elemento de video
  • Detecta 80 clases de objetos (persona, auto, camión, etc.)
  • Dibuja cuadros delimitadores con puntuaciones de confianza
  • Se ejecuta completamente en el navegador — ningún cuadro se envía al servidor
💡

Privacidad

La detección en el navegador preserva la privacidad. Los cuadros de video se analizan localmente usando aceleración WebGL y nunca salen del dispositivo.

Este nivel es puramente visual — toda la grabación de clips ocurre del lado del servidor. Los usuarios pueden deshabilitarlo sin afectar la funcionalidad de detección de movimiento.

API

Iniciar Detección

POST /api/iot/detection/motion-stream
Content-Type: application/json

{
  "cctvId": 1,
  "action": "start",
  "sensitivity": 0.3,
  "cooldownSeconds": 5,
  "preRecordSeconds": 5,
  "postRecordSeconds": 10,
  "uploadToNextcloud": true
}

Consultar Estado

GET /api/iot/detection/motion-stream?cctvId=1

Retorna el estado de ejecución, conteo de cuadros y estadísticas de cuadros con movimiento.

Configuración

ParámetroPredeterminadoDescripción
sensitivity0.3Umbral de movimiento (0-1, menor = más sensible)
cooldownSeconds5Segundos mínimos entre clips
preRecordSeconds5Segundos de búfer antes del movimiento
postRecordSeconds10Continuar grabando después del movimiento
uploadToNextcloudtrueAuto-subir clips al almacenamiento de evidencia

Detección en Navegador

ParámetroPredeterminadoDescripción
confidenceThreshold0.5Confianza mínima de detección
maxDetections20Máximo de objetos por cuadro
fps5Tasa de cuadros de detección

Integración con Captura de Evidencia

Los clips de detección de movimiento se vinculan automáticamente a la cadena de evidencia:

  1. Movimiento detectado -> clip extraído del búfer circular
  2. Clip subido a Nextcloud con metadatos (ID de cámara, marca de tiempo, duración)
  3. Evento de detección creado en el libro mayor de eventos
  4. Hash de evidencia computado y anclado
  5. Clip disponible en la Máquina del Tiempo para reproducción

Guía de Ajustes

  • Cámaras interiores: Sensibilidad 0.2-0.3 (menor para entornos estables)
  • Cámaras exteriores: Sensibilidad 0.4-0.5 (mayor para filtrar viento/clima)
  • Áreas de alto tráfico: Aumentar cooldown a 10-15 segundos
  • Zonas críticas de seguridad: Reducir cooldown a 2-3 segundos

Relacionado