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.

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

6 feeds de cámara con estado de grabación, indicadores de detección de movimiento y asignaciones de zona.

Cómo Funciona

Loading diagram…

Sistemas Soportados

SistemaProtocoloCaracterísticas
HikvisionRTSPStream en vivo, detección de movimiento, PTZ
DahuaRTSPStream en vivo, detección de movimiento
AxisRTSP/ONVIFStream en vivo, analíticas
NVR GenéricoRTSPSolo stream en vivo
Webcam USBV4L2Stream 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:

  1. FFmpeg procesa el stream RTSP en tiempo real
  2. Un cambio de escena por encima del umbral activa la extracción de clip
  3. El búfer de pre-grabación captura 5 segundos antes del evento
  4. La post-grabación captura 10 segundos después de que el movimiento se detiene
  5. El clip se sube a Nextcloud con metadatos
  6. El evento se registra en el libro mayor inmutable

Configuración

ParámetroPredeterminadoDescripción
sensitivity0.3Umbral de cambio de escena (0-1)
pre_record_seconds5Búfer antes del movimiento
post_record_seconds10Continuar después de que el movimiento se detiene
min_duration_seconds2Ignorar eventos muy cortos
max_clip_seconds300Duració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.

Relacionado