Integración CCTV
Conecta cámaras CCTV y sistemas NVR a la cadena de evidencia — streams en vivo, clips por detección de movimiento, detección de objetos en el navegador y vinculación automática de evidencia.
Última actualización: 2025-02-18
Integración CCTV
Certexi conecta las cámaras CCTV del almacén directamente a la cadena de evidencia. Los clips activados por movimiento se graban automáticamente, se almacenan en Nextcloud y se vinculan a eventos de colocación para una cobertura de auditoría completa.
6 feeds de cámara con estado de grabación, indicadores de detección de movimiento y asignaciones de zona.
Cómo Funciona
Sistemas Soportados
| Sistema | Protocolo | Características |
|---|---|---|
| Hikvision | RTSP | Stream en vivo, detección de movimiento, PTZ |
| Dahua | RTSP | Stream en vivo, detección de movimiento |
| Axis | RTSP/ONVIF | Stream en vivo, analíticas |
| NVR Genérico | RTSP | Solo stream en vivo |
| Webcam USB | V4L2 | Stream en vivo, detección por software |
Tarjeta de Estado de Cámara
<Card className="w-72"> <CardHeader className="pb-2 flex flex-row items-center justify-between"> <CardTitle className="text-sm">Muelle de Carga — Cám 3</CardTitle> <Badge className="bg-green-500 text-white text-[10px]">En Vivo</Badge> </CardHeader> <CardContent className="space-y-3"> <div className="aspect-video rounded-md bg-gradient-to-br from-gray-800 to-gray-900 flex items-center justify-center"> <div className="text-center"> <div className="text-gray-400 text-xs">Stream RTSP Activo</div> <div className="text-gray-500 text-[10px] font-mono mt-1">1920x1080 @ 25fps</div> </div> </div> <div className="flex items-center justify-between text-xs"> <span className="text-muted-foreground">Zona</span> <Badge variant="outline">Zona C — Envío</Badge> </div> <div className="flex items-center justify-between text-xs"> <span className="text-muted-foreground">Movimiento</span> <Badge className="bg-red-500 text-white text-[10px]">Grabando</Badge> </div> <div className="flex gap-1"> <Button size="sm" variant="outline" className="flex-1 text-xs h-7">Expandir</Button> <Button size="sm" variant="outline" className="flex-1 text-xs h-7">Clips</Button> <Button size="sm" variant="ghost" className="text-xs h-7">Ajustes</Button> </div> </CardContent> </Card>
Detección de Movimiento
La detección de movimiento se ejecuta del lado del servidor mediante detección de cambio de escena de FFmpeg:
- FFmpeg procesa el stream RTSP en tiempo real
- Un cambio de escena por encima del umbral activa la extracción de clip
- El búfer de pre-grabación captura 5 segundos antes del evento
- La post-grabación captura 10 segundos después de que el movimiento se detiene
- El clip se sube a Nextcloud con metadatos
- El evento se registra en el libro mayor inmutable
Configuración
| Parámetro | Predeterminado | Descripción |
|---|---|---|
sensitivity | 0.3 | Umbral de cambio de escena (0-1) |
pre_record_seconds | 5 | Búfer antes del movimiento |
post_record_seconds | 10 | Continuar después de que el movimiento se detiene |
min_duration_seconds | 2 | Ignorar eventos muy cortos |
max_clip_seconds | 300 | Duración máxima del clip |
Detección de Objetos en el Navegador
Privacidad Primero
TensorFlow.js COCO-SSD se ejecuta completamente en el navegador. Ningún cuadro de video sale del dispositivo. Los resultados de detección (cuadros delimitadores, etiquetas) se superponen al stream localmente.
La detección opcional en el navegador proporciona superposiciones de clasificación de objetos:
- Detección de personas con puntuaciones de confianza
- Identificación de vehículos en puntos de entrada/salida
- Detección de paquetes/pallets en muelles de carga
- Seguimiento de montacargas en zonas del almacén
Vinculación de Evidencia
Los clips se vinculan automáticamente a eventos del WHMS cuando:
- Ocurre una colocación en una zona con una cámara activa
- Se detecta movimiento dentro de 60 segundos de un evento
- Un operador adjunta manualmente un clip a un registro
<Card className="w-80"> <CardHeader className="pb-2"> <CardTitle className="text-sm">Vinculación de Evidencia</CardTitle> <CardDescription>Clip CCTV auto-vinculado</CardDescription> </CardHeader> <CardContent className="space-y-2"> <div className="flex items-center gap-3"> <div className="w-20 h-12 rounded bg-muted flex items-center justify-center text-[10px] text-muted-foreground">Miniatura</div> <div className="flex-1"> <div className="text-xs font-medium">Cám 3 — Muelle de Carga</div> <div className="text-[10px] text-muted-foreground">14:32:05 — 14:32:17 (12s)</div> </div> </div> <div className="flex items-center justify-between text-xs"> <span className="text-muted-foreground">Vinculado a</span> <span className="font-mono">TU-2025-00042</span> </div> <div className="flex items-center justify-between text-xs"> <span className="text-muted-foreground">Evento</span> <Badge variant="outline">COLOCADO en A-01-03</Badge> </div> </CardContent> </Card>
Guía de Configuración
1. Agregar Cámara
Navegue a Configuración > IoT > Cámaras y agregue su URL RTSP:
rtsp://admin:password@192.168.1.100:554/Streaming/Channels/101
2. Asignar a Zona
Vincule la cámara a una zona del almacén para que los clips se asocien automáticamente con eventos de la zona.
3. Habilitar Detección de Movimiento
Active la detección de movimiento por cámara. Ajuste la sensibilidad según las condiciones del entorno.
4. Configurar Almacenamiento
Los clips se almacenan en Nextcloud en /Evidence/CCTV/{nombre_camara}/{fecha}/. Configure la retención en Configuración > Evidencia > Retención.