Arquitectura y Despliegue de WVP-GB28181-Pro para Videovigilancia
WVP-GB28181-Pro es una solución de código abierto diseñada para la gestión de videovigilancia bajo el estándar GB28181. Esta plataforma permite la integración de dispositivos de diversos fabricantes, centralizando la administración y superando las limitaciones de los sistemas tradicionales, como la fragmentación de protocolos y la falta de escalabilidad.
Requisitos Previos del Entorno
Para garantizar un rendimiento óptimo del servidor de video, la infraestructura debe cumplir con las siguientes especificaciones técnicas:
- Sistema Operativo: Distribuciones Linux (Ubuntu 20.04+, CentOS 7+).
- Entorno de Ejecución: Java Development Kit (JDK) versión 8 o superior.
- Moter de Base de Datos: MySQL 5.7+ o PostgreSQL 12+.
- Recursos de Hardware: Mínimo 4 GB de RAM y 2 núcleos de CPU.
Proceso de Instalación y Compilación
El despliegue del sistema se puede automatizar mediante scripts de inicialización. A continuación, se muestra un flujo de trabajo modificado para clonar el repositorio y ejecutar el script de configuración con parámetros de entorno:
REPO_ENDPOINT="https://github.com/648540858/wvp-GB28181-pro.git"
TARGET_DIR="wvp-surveillance"
git clone "$REPO_ENDPOINT" "$TARGET_DIR"
cd "$TARGET_DIR"
# Asignar permisos y ejecutar el despliegue en modo productivo
chmod +x setup_environment.sh
./setup_environment.sh --mode production --db-type mysql
Resolución de Incidencias Comunes
Durante la inicialización de los servicios, pueden presentarse conflictos de red o de persistencia de datos.
1. Colisión de Puertos de Red
Los servicios web y SIP requieren los puertos 8080 y 5060 respectivamente. Para verfiicar su disponibilidad mediante la utilidad ss, ejecute:
WEB_PORT=8080
SIP_PORT=5060
ss -tulpn | grep -E ":${WEB_PORT}|:${SIP_PORT}"
Si la salida muestra procesos activos, deberá reasignar los puertos en el archivo de configuración o detener los servicios conflictivos.
2. Fallos de Conexión a la Base de Datos
Verifique que el servicio de base de datos esté activo y que las credenciales en el archivo application.yml coincidan con los usuarios creados en el motor SQL.
Módulos Funcionales del Sistema
Gestión del Ciclo de Vida de Dispositivos
El núcleo de la plataforma administra el registro automático de cámaras y NVRs. El panel de control expone metadatos críticos como la dirección IP, el fabircante, el modelo y el estado de conexión SIP en tiempo real, facilitando el diagnóstico de canales caídos.
Visualización Multicanal y Grabación
El cliente web soporta la decodificación de múltiples flujos de video simultáneamente. Además, el módulo de almacenamiento permite programar tareas de grabación basadas en intervalos de tiempo, alojando los archivos resultantes en sistemas de almacenamiento local o en la nube.
Optimización de Rendimiento y Red
Para entornos de alta concurrencia, es fundamental ajustar los parámetros del sistema:
- Asignación de Memoria JVM: Ajustar los parámetros
-Xmsy-Xmxen el script de arranque para evitar pausas por recolección de basura. - Pool de Conexiones: Incrementar el tamaño máximo del pool de HikariCP en la configuración de Spring Boot.
- Configuración de Firewall: Asegurar que el tráfico UDP para el flujo de video (RTP/RTCP) y el tráfico TCP/UDP para SIP no sean bloqueados por iptables o firewalld.
Escalabilidad y Casos de Uso
La arquitectura soporta el despliegue en cascada (federación), permitiendo que una instancia actúe como plataforma inferior y registre sus recursos en una plataforma superior. Esto es ideal para infraestructuras de ciudades inteligentes o campus corporativos extensos que requieren una jerarquía de administración descentralizada.
Personalización y Desarrollo Frontend
La interfaz de usuario está construida sobre el ecosistema de Vue.js. Los desarrolladores pueden modificar los componentes visuales o integrar nuevas vistas, como la superposición de geolocalización en mapas interactivos, accediendo al código fuente ubicado en el directorio web/src. Las variables de entorno y los parámetros del servidor backend se gestionan centralizadamente en la carpeta config.