Funcionalidades
Todo lo que aparece a continuación está hoy en el producto.
Mosaicos de vídeo
Los mosaicos los define una vez el administrador y los abren los operadores. Distribuciones
disponibles: 1x1, 1x2, 2x2, 1+5, 1+7, 3x3, 4x3, 4x4.
Cada celda es independiente: se alterna entre directo y archivo, recorre los flujos de la cámara
(main, sub, …), se amplía a pantalla completa o muestra el mando PTZ y los controles de relé
sin salir del mosaico.
Cada celda elige además el flujo que le conviene por tamaño. Una celda pequeña de un mosaico 4x4 abre el flujo secundario en lugar del principal a resolución completa, y cambia sin cortes cuando se redimensiona: la decisión se toma con los parámetros de imagen que el grabador observa realmente, no con una etiqueta configurada. Eso es lo que mantiene fluido un mosaico de dieciséis cámaras.
Los operadores disponen además de paneles de investigación: mosaicos propios y temporales, siempre en reproducción, con cualquier cámara a la que tengan acceso. Un panel terminado puede entregarse como copia a otro usuario.
Reproducción sincronizada
Todo el mosaico comparte un único cursor de tiempo. Reproducir, pausar, saltar ±30 segundos, ir a una fecha y hora exactas o pasar al día anterior o siguiente que realmente tenga grabaciones: todas las celdas se mueven juntas.
La alineación entre cámaras no es aproximada: el archivo se sirve como HLS con marcas de hora real
EXT-X-PROGRAM-DATE-TIME, de modo que las celdas se mantienen en el mismo instante.
La línea temporal inferior muestra barras de cobertura con lo que hay realmente grabado y corchetes que señalan los eventos, y permite acercar y desplazar hasta el segundo.

Grabación
Perfiles — tres modos:
| Modo | Comportamiento |
|---|---|
| Continuo | graba todo el tiempo que la cámara está armada |
| Pre-alarma | mantiene un búfer circular y lo confirma cuando salta una alarma |
| Apagado | no graba |

La pre-grabación, la post-grabación y la longitud de segmento se configuran en segundos. La pre-alarma es lo que conserva las imágenes anteriores al disparo: el búfer circular se limpia de forma continua y solo sobreviven los clips ligados a una alarma.
Horarios — con nombre, con zona horaria, pintados sobre una rejilla semanal en pasos de 15 minutos, afinados con rangos escritos al segundo, más fechas concretas puntuales. Un margen de entrada inicia la grabación antes de que se abra la ventana.

Almacenamiento — defina tantos volúmenes como quiera y asigne varios a una cámara por orden de prioridad. Si la ruta del volumen principal no está accesible, el grabador pasa automáticamente al siguiente. Un volumen también puede retirarse de servicio a mano, y el grabador lo omite.
Una grabación que no puede ocurrir ya no se parece a una que sí está ocurriendo. Antes de activar la grabación se pregunta al servicio de ficheros si es posible: una cámara sin almacenamiento asignado, una ruta inaccesible o un volumen que rechaza un fichero de prueba se informan en el momento del clic, con la causa, en vez de descubrirse más tarde por los ficheros que faltan. En la lista de cámaras el marco rojo significa que se está grabando ahora; el material que solo se conserva se marca aparte.
Videoanalítica
La detección se ejecuta sobre OpenVINO, en CPU o GPU. La imagen incluye dos modelos: un detector YOLO11 para personas y vehículos, y un detector de rostros específico. Nada que descargar, nada que montar.
La analítica se activa por flujo, no por cámara: apúntela al flujo secundario y el principal queda intacto para la grabación. Cada vigilancia define:
| Ajuste | Para qué |
|---|---|
| Clases | persona, rostro, vehículo — en cualquier combinación |
| Confianza mínima | las detecciones por debajo del umbral se descartan |
| Frecuencia de muestreo | fotogramas por segundo realmente analizados; 1–2 basta en la mayoría de escenas |
| Expiración del evento | cuánto tiempo sin detecciones antes de cerrar el evento |
| Recortes de depuración | conservar las imágenes recortadas para revisión, o ahorrar ese espacio |
Armar una cámara tiene que ver con grabar, no con mirar: una cámara que simplemente graba las veinticuatro horas también se anota con detecciones y eventos, de modo que su archivo lleva recuadros y sus clips pueden recomprimirse. Lo que cuesta la analítica lo fija la propia vigilancia: su frecuencia de muestreo, o apagarla.
El grabador publica un flujo dedicado para el trabajador de detección en lugar de dejar que lea la misma ruta que está viendo un operador. Activar la analítica ya no compite con la visualización en directo.

Reidentificación entre cámaras. Cada cuerpo detectado recibe un descriptor de apariencia y los avistamientos se comparan contra una galería deslizante. Una persona que pasa de una cámara a otra sigue siendo un mismo objeto y se agrupa en un solo evento en lugar de generar uno por cámara; lo mismo ocurre cuando alguien sale del encuadre y vuelve a entrar.
Lo que ve el operador:
- eventos agrupados por origen (analítica u ONVIF), con duración y los clips que los cubren;
- una galería de recortes en miniatura por evento, ampliables con un clic;
- recuadros dibujados sobre el vídeo en directo: una sola conexión de eventos del servidor para todo el mosaico, filtrada según los permisos de quien mira;
- un clic desde un evento lleva a la reproducción sincronizada detenida en ese instante.
Las detecciones, los recortes y los eventos se limpian por ventana de retención y por límite de tamaño, de modo que la analítica no se come el volumen en silencio.
Búsqueda por apariencia
Cada detección puede guardar un descriptor de apariencia, lo que convierte el archivo en algo que se consulta por objeto y no por hora. Parta de un recuadro pulsado sobre el vídeo en directo, de una detección de un evento, de una traza del archivo o de un JPEG subido, y el sistema ordena las apariciones parecidas en todas las cámaras.
| Tipos de objeto | persona, rostro, vehículo, matrícula |
| Dónde buscar | cualquier subconjunto de las cámaras que el usuario pueda ver |
| Cuándo | un intervalo de tiempo arbitrario |
| Cuán estricto | un umbral de similitud; los rostros entre cámaras suelen necesitar uno más bajo que los cuerpos |
Los resultados se agrupan por aparición en lugar de listarse como coincidencias sueltas: una traza en una cámara es una fila, con su mejor recorte, el primer y el último avistamiento y un clic directo a la reproducción sincronizada detenida en ese instante. Si la detección cae en un hueco de grabación —analítica funcionando sin grabar— se ofrece el material más cercano en vez de un error.
Es una pista, no una identificación. El sistema ordena a quién se parece; decide el operador.
Seguimiento automático PTZ
A una cámara PTZ se le puede entregar un objeto en movimiento para que lo mantenga en el encuadre por sí sola.
El operador pulsa un recuadro sobre el vídeo en directo y la cámara sigue a partir de ahí. O no pulsa nadie: se le da a la cámara una lista ordenada de preferencias —persona, rostro, vehículo— y elige objetivo sola, las veinticuatro horas, esté mirando alguien o no. Los recuadros pueden venir del detector propio, de los metadatos ONVIF de la cámara o de ambos.
La ley de control mantiene el objeto dentro del encuadre en lugar de centrarlo: un sujeto quieto y completamente visible ya está bien encuadrado, y cada orden enviada para mejorarlo es un tirón de la imagen pagado a cambio de nada. El movimiento va en ráfagas cortas, una por avistamiento, así que un productor que se calla deja la cámara quieta en vez de a la deriva. Un objetivo perdido tras un obstáculo se recupera primero por apariencia y después por proximidad, de modo que la cámara conserva el mismo objeto en lugar de agarrar lo siguiente que se mueva.
Calibración. Hacia dónde se desplaza la imagen cuando gira el motor depende de cómo esté montada la cámara, así que cada una se calibra una vez: automáticamente —el sistema mueve los ejes y mide el desplazamiento del fondo— o con un asistente en el que el operador ejecuta los movimientos e indica hacia dónde fue la imagen. Una cámara colgada de lado o invertida sigue entonces correctamente.
Qué cámaras pueden gobernarse es una marca explícita por cámara y no la capacidad ONVIF: el firmware anuncia un servicio PTZ tenga o no un motor instalado.
Recompresión del archivo
La compresión de vídeo corriente no sabe qué importa en el encuadre: una pared vacía y la matrícula de un coche que llega se guardan con el mismo detalle. El sistema ya sabe dónde estaban las personas y los vehículos, porque los encontró él, así que los clips terminados se recodifican más tarde protegiendo esas regiones y apretando más el resto.
- En directo no se toca nada. La cámara graba como siempre; la recompresión va después, con un retardo configurable, para dejar en paz el material reciente que justamente se está mirando.
- Solo los clips que lo merecen. Un clip sin detecciones se omite: no hay nada que proteger y recodificar porque sí solo pierde calidad. Una banda de cobertura decide el resto: por debajo el detector vio demasiado poco; por encima los objetos ocupan tanto encuadre que no queda fondo con el que pagar.
- En caso de empate gana el original. Si la recodificación no sale más pequeña, la grabación se conserva tal como se grabó y se marca así.
- Hardware si lo hay. Intel Quick Sync, VA-API o CPU, elegido automáticamente; no hace falta GPU.
- Visible en la interfaz. Las grabaciones indican si se recomprimieron o se conservaron tal cual, para que el operador sepa siempre qué está viendo.
Medido en una escena de prueba de 1280×720: HEVC 8,38 → 4,82 MB (−42%), H.264 7,05 → 4,50 MB (−36%). En un clip de 2688×1520 de un archivo real, con personas cerca de la cámara, 39,55 → 31,23 MB. El ahorro crece cuanto menor es la parte del encuadre que debe quedar nítida, y la calidad dentro de las regiones protegidas no baja.
Cámaras y ONVIF
Las cámaras se añaden mediante descubrimiento —un barrido WS-Discovery de la red que lista los dispositivos y previsualiza sus perfiles ONVIF antes de confirmar— o escribiendo directamente una URL RTSP.
Una cámara también puede ser un fichero en lugar de un dispositivo: apunte un flujo a un fichero de vídeo y el resto del sistema lo trata exactamente igual que a una cámara. Útil para demostrar el producto, para reproducir un incidente y para probar un despliegue antes de que llegue el hardware.

Configurar el propio dispositivo
No hace falta la interfaz web de la cámara. Las pestañas aparecen según lo que cada dispositivo declara realmente, así que solo se ve lo que esa cámara admite:
- Vídeo — resolución, fotogramas por segundo, tasa de bits, longitud de GOP, perfil H.264, codificación
- Audio — tasa de bits, frecuencia de muestreo
- Imagen — brillo, contraste, saturación, nitidez
- PTZ — movimientos continuos, absolutos y relativos; guardar, recuperar y borrar posiciones
- E/S — salidas de relé (monoestable/biestable, estado de reposo, retardo de retorno) y entradas digitales
- Sistema — información del dispositivo, hora, sincronizar el reloj con el servidor, reinicio

Los cambios se escriben directamente en la cámara por ONVIF. El reloj importa más de lo que parece: la búsqueda en el archivo y la reproducción multicámara se alinean por hora real, así que una cámara desfasada unos minutos coloca sus imágenes en el lugar equivocado de la línea temporal.
Eventos de la cámara
Suscriba una cámara a sus eventos ONVIF y fíltrelos como alarmas por tema y por texto del mensaje, con una duración de grabación por filtro. Los ajustes predefinidos cubren los casos habituales —movimiento, detección de rostros, cruce de línea, intrusión en zona, alarma de E/S y detección de objetos— y un registro de eventos muestra lo que la cámara envía realmente, que es la forma más rápida de averiguar cómo llama cada modelo a las cosas.
Control de acceso
El inicio de sesión mediante Keycloak es opcional. Al activarlo se obtienen roles y una matriz de permisos por usuario y por cámara sobre cinco acciones independientes:
Directo · Archivo · PTZ · Control · Exportación
Los permisos se comprueban en el servidor en cada petición —incluidos los segmentos HLS individuales y el flujo de detecciones en directo—, no solo se ocultan en la interfaz. Descargar un clip completo es un permiso distinto de ver el archivo.
Arquitectura
El sistema es un conjunto de servicios pequeños que se comunican por gRPC, y los cambios de configuración se propagan por publicación/suscripción en vez de por sondeo. Eso permite crecer en horizontal:
- varios enrutadores multimedia MediaMTX, con las cámaras repartidas entre ellos;
- varias parejas grabador + sistema de ficheros, con las consultas al archivo repartidas entre todas;
- procesos de analítica distribuidos por hash, que se añaden según crece la carga.
Propiedades técnicas
| Entrada de cámara | RTSP |
| Directo al navegador | WebRTC / WHEP a través de la pasarela: el navegador nunca se dirige al servidor multimedia ni ve sus credenciales |
| Transcodificación en directo | H.265 se entrega tal cual a los navegadores que saben decodificarlo; recodificar a H.264 es una opción por enrutador multimedia, sobre VA-API y con CPU de reserva |
| Reproducción de archivo | HLS con MP4 fragmentado |
| Formato de archivo | MP4 fragmentado; H.264 y H.265 se escriben tal cual, sin recodificar |
| Audio | Opus sin recodificar; se transcodifica cuando el origen es distinto |
| Imágenes fijas | extracción de fotograma JPEG del archivo en cualquier instante |
| Seguridad del servidor multimedia | sin acceso anónimo; cuentas separadas de publicación y lectura, guardadas en el propio enrutador multimedia |
| Recompresión del archivo | Intel Quick Sync (VPL, mfxExtEncoderROI), VA-API o CPU (x265 / x264), elegido automáticamente |
| Seguimiento automático PTZ | un lazo de control por cámara; objetivos del detector o de los metadatos ONVIF; calibración del montaje, automática o guiada |
| Búsqueda por similitud | descriptores Re-ID de persona, rostro, vehículo y matrícula, consultables por conjunto de cámaras e intervalo |
Nota sobre navegadores: H.264 se reproduce en todas partes. H.265 requiere Firefox con
libavcodec-extra, o Chrome sobre un sistema con VA-API actual, o decodificación por hardware en
macOS y Windows 11 — tanto para el archivo como para el directo cuando el enrutador entrega H.265
tal cual. Activar en ese enrutador la recodificación a H.264 cubre a los clientes que no pueden.
📩 ¿Dudas? Contacte con nosotros