FlotillasGPS - Sistema completo de monitoreo de flotillas GPS
Sistema completo para monitoreo y gestion de flotas de vehiculos con: - Backend FastAPI con PostgreSQL/TimescaleDB - Frontend React con TypeScript y TailwindCSS - App movil React Native con Expo - Soporte para dispositivos GPS, Meshtastic y celulares - Video streaming en vivo con MediaMTX - Geocercas, alertas, viajes y reportes - Autenticacion JWT y WebSockets en tiempo real Documentacion completa y guias de usuario incluidas.
This commit is contained in:
377
docs/guias/video-streaming.md
Normal file
377
docs/guias/video-streaming.md
Normal file
@@ -0,0 +1,377 @@
|
||||
# Configuracion de Video Streaming
|
||||
|
||||
Guia para configurar camaras y video streaming en FlotillasGPS.
|
||||
|
||||
## Arquitectura de Video
|
||||
|
||||
```
|
||||
Camaras en Vehiculos Servidor Dashboard/App
|
||||
| | |
|
||||
[Dashcam] --RTSP--> [MediaMTX] --WebRTC--> [Navegador]
|
||||
[DVR] --RTSP--> | --HLS----> [App Movil]
|
||||
[Cam IP] --RTSP--> |
|
||||
|
|
||||
[Grabaciones]
|
||||
/opt/flotillas/videos/
|
||||
```
|
||||
|
||||
## Tipos de Camaras Soportadas
|
||||
|
||||
### 1. Dashcams con RTSP
|
||||
|
||||
Marcas recomendadas:
|
||||
- **Viofo** (A129, A139) - Excelente calidad, WiFi
|
||||
- **BlackVue** (DR900X, DR750X) - Premium, Cloud opcional
|
||||
- **Thinkware** (U1000, Q800) - Buena integracion
|
||||
|
||||
Requisitos:
|
||||
- Soporte RTSP
|
||||
- Conexion WiFi o Ethernet
|
||||
- Alimentacion 12V continua
|
||||
|
||||
### 2. DVR Vehiculares
|
||||
|
||||
Para flotas comerciales:
|
||||
- **Hikvision Mobile DVR** - 4/8 canales
|
||||
- **Dahua Mobile DVR** - Industrial
|
||||
- **Howen** - Economico
|
||||
|
||||
Caracteristicas:
|
||||
- Multiples canales (interior, exterior, lateral)
|
||||
- Almacenamiento local SD/HDD
|
||||
- 3G/4G integrado
|
||||
|
||||
### 3. Camaras IP Genericas
|
||||
|
||||
Cualquier camara con:
|
||||
- Protocolo RTSP u ONVIF
|
||||
- Resolucion minima 720p
|
||||
- Alimentacion PoE o 12V
|
||||
|
||||
### 4. Celular como Dashcam
|
||||
|
||||
La app FlotillasGPS puede usar la camara del celular:
|
||||
- Sin costo adicional
|
||||
- Calidad depende del celular
|
||||
- Consume bateria y datos
|
||||
|
||||
---
|
||||
|
||||
## Configuracion de Camaras
|
||||
|
||||
### Obtener URL RTSP
|
||||
|
||||
Formato tipico:
|
||||
```
|
||||
rtsp://usuario:password@IP:puerto/stream
|
||||
```
|
||||
|
||||
Ejemplos por marca:
|
||||
|
||||
| Marca | URL RTSP |
|
||||
|-------|----------|
|
||||
| Hikvision | `rtsp://admin:pass@IP:554/Streaming/Channels/101` |
|
||||
| Dahua | `rtsp://admin:pass@IP:554/cam/realmonitor?channel=1&subtype=0` |
|
||||
| Viofo | `rtsp://IP:554/live/ch00_0` |
|
||||
| Generic | `rtsp://IP:554/stream1` |
|
||||
|
||||
### Verificar Stream
|
||||
|
||||
Antes de agregar al sistema, probar con VLC o ffprobe:
|
||||
|
||||
```bash
|
||||
# Con ffprobe
|
||||
ffprobe rtsp://admin:pass@192.168.1.100:554/stream1
|
||||
|
||||
# Con VLC
|
||||
vlc rtsp://admin:pass@192.168.1.100:554/stream1
|
||||
```
|
||||
|
||||
### Agregar Camara en el Dashboard
|
||||
|
||||
1. Ir a detalle del vehiculo > pestaña **Video**
|
||||
2. Click **+ Agregar camara**
|
||||
3. Completar:
|
||||
- **Nombre**: Ej. "Frontal", "Interior"
|
||||
- **Posicion**: Frontal, Trasera, Interior, Lateral izq/der
|
||||
- **Tipo**: RTSP, ONVIF
|
||||
- **URL Stream**: URL RTSP completa
|
||||
- **Usuario/Password**: Si requiere autenticacion
|
||||
4. Click **Probar conexion**
|
||||
5. Si funciona, click **Guardar**
|
||||
|
||||
---
|
||||
|
||||
## Configuracion de MediaMTX
|
||||
|
||||
### Configuracion Basica
|
||||
|
||||
El archivo `/etc/mediamtx/mediamtx.yml` ya viene configurado. Opciones importantes:
|
||||
|
||||
```yaml
|
||||
# WebRTC (para dashboard web)
|
||||
webrtc: yes
|
||||
webrtcAddress: :8889
|
||||
webrtcAllowOrigin: '*'
|
||||
|
||||
# HLS (para app movil y compatibilidad)
|
||||
hls: yes
|
||||
hlsAddress: :8888
|
||||
hlsSegmentDuration: 1s
|
||||
hlsSegmentCount: 3
|
||||
```
|
||||
|
||||
### Agregar Camara Manualmente
|
||||
|
||||
Si necesitas agregar una camara directamente:
|
||||
|
||||
```bash
|
||||
# Via API de MediaMTX
|
||||
curl -X POST http://localhost:9997/v2/config/paths/add/cam_vehiculo1_frontal \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"source": "rtsp://admin:pass@192.168.1.100:554/stream1",
|
||||
"sourceOnDemand": true,
|
||||
"sourceOnDemandStartTimeout": "10s",
|
||||
"sourceOnDemandCloseAfter": "10s"
|
||||
}'
|
||||
```
|
||||
|
||||
### Verificar Streams Activos
|
||||
|
||||
```bash
|
||||
# Listar paths
|
||||
curl http://localhost:9997/v2/paths/list
|
||||
|
||||
# Ver estado de un path
|
||||
curl http://localhost:9997/v2/paths/get/cam_vehiculo1_frontal
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Conexion de Red
|
||||
|
||||
### Opcion 1: Router 4G en Vehiculo
|
||||
|
||||
```
|
||||
[Camara] --Ethernet/WiFi--> [Router 4G] --Internet--> [Servidor]
|
||||
```
|
||||
|
||||
Configuracion:
|
||||
1. Router 4G con IP publica o VPN
|
||||
2. Port forward del puerto RTSP al servidor
|
||||
3. O usar VPN para conexion segura
|
||||
|
||||
Routers recomendados:
|
||||
- Teltonika RUT240/RUT955
|
||||
- Mikrotik LtAP
|
||||
- Sierra Wireless
|
||||
|
||||
### Opcion 2: Camara con 4G Integrado
|
||||
|
||||
Camaras con SIM integrada:
|
||||
- Hikvision DS-2CD6425G1
|
||||
- Dahua IPC-HFW4X31E-SE
|
||||
|
||||
Ventaja: Sin router adicional
|
||||
Desventaja: Mas costoso, SIM por camara
|
||||
|
||||
### Opcion 3: VPN Site-to-Site
|
||||
|
||||
```
|
||||
[Vehiculo] --VPN--> [Servidor]
|
||||
|
|
||||
[Camara con IP local]
|
||||
```
|
||||
|
||||
Configuracion:
|
||||
1. Router en vehiculo con cliente VPN (WireGuard/OpenVPN)
|
||||
2. Servidor con servidor VPN
|
||||
3. Acceso a camara via IP de VPN
|
||||
|
||||
---
|
||||
|
||||
## Grabacion de Video
|
||||
|
||||
### Tipos de Grabacion
|
||||
|
||||
1. **Continua**: Graba todo el tiempo
|
||||
2. **Por eventos**: Solo cuando hay alertas
|
||||
3. **Manual**: Iniciada por el operador
|
||||
4. **Programada**: En horarios especificos
|
||||
|
||||
### Configuracion de Grabacion
|
||||
|
||||
En el dashboard, por camara:
|
||||
|
||||
- **Grabar continuo**: Si/No
|
||||
- **Grabar eventos**: Si/No
|
||||
- **Calidad continuo**: Baja/Media/Alta
|
||||
- **Calidad eventos**: Media/Alta
|
||||
- **Pre-evento**: Segundos antes del evento (buffer)
|
||||
- **Post-evento**: Segundos despues del evento
|
||||
- **Solo con motor encendido**: Si/No
|
||||
|
||||
### Almacenamiento
|
||||
|
||||
Estimacion de espacio:
|
||||
|
||||
| Calidad | Bitrate | Por hora | Por dia (10h) |
|
||||
|---------|---------|----------|---------------|
|
||||
| Baja (480p) | 1 Mbps | 450 MB | 4.5 GB |
|
||||
| Media (720p) | 2 Mbps | 900 MB | 9 GB |
|
||||
| Alta (1080p) | 4 Mbps | 1.8 GB | 18 GB |
|
||||
|
||||
Para 20 vehiculos con grabacion continua 720p:
|
||||
- Por dia: 180 GB
|
||||
- Por mes: 5.4 TB
|
||||
|
||||
Recomendacion:
|
||||
- Grabacion continua solo en horario laboral
|
||||
- O solo grabacion por eventos
|
||||
|
||||
### Retencion
|
||||
|
||||
Configurar en **Configuracion** > **Retencion de datos**:
|
||||
|
||||
- Videos continuos: 7-14 dias
|
||||
- Videos de eventos: 30-90 dias
|
||||
|
||||
Script de limpieza automatica:
|
||||
```bash
|
||||
# Ejecutar diariamente via cron
|
||||
find /opt/flotillas/videos -name "*.mp4" -mtime +30 -delete
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ver Video en el Dashboard
|
||||
|
||||
### Video en Vivo
|
||||
|
||||
1. Ir a **Video** > **En Vivo**
|
||||
2. Seleccionar layout (1, 2x2, 3x3)
|
||||
3. Click en celda para seleccionar camara
|
||||
4. Controles:
|
||||
- **Pantalla completa**: Expandir
|
||||
- **Captura**: Tomar screenshot
|
||||
- **Grabar**: Iniciar grabacion manual
|
||||
|
||||
### Video Sincronizado con Viaje
|
||||
|
||||
1. Ir a **Viajes** > seleccionar viaje > **Replay**
|
||||
2. El video se sincroniza con la posicion en el mapa
|
||||
3. Usar timeline para navegar
|
||||
|
||||
### Buscar Grabaciones
|
||||
|
||||
1. Ir a **Video** > **Grabaciones**
|
||||
2. Filtrar por:
|
||||
- Vehiculo
|
||||
- Camara
|
||||
- Fecha/hora
|
||||
- Tipo (continua, evento, manual)
|
||||
3. Click para reproducir
|
||||
4. Descargar si es necesario
|
||||
|
||||
---
|
||||
|
||||
## Eventos de Video
|
||||
|
||||
### Deteccion Automatica
|
||||
|
||||
El sistema puede detectar eventos basados en:
|
||||
|
||||
- **Datos de GPS**: Frenado brusco, aceleracion, impacto
|
||||
- **Sensores de camara**: G-sensor integrado
|
||||
- **Alertas del sistema**: Al generar alerta, marca el video
|
||||
|
||||
### Configurar Deteccion
|
||||
|
||||
En **Configuracion** > **Video** > **Eventos**:
|
||||
|
||||
- Umbral de frenado brusco: -0.5 G
|
||||
- Umbral de aceleracion: 0.4 G
|
||||
- Umbral de impacto: 2.0 G
|
||||
|
||||
### Revisar Eventos
|
||||
|
||||
1. Ir a **Video** > **Eventos**
|
||||
2. Lista de eventos con severidad
|
||||
3. Click para ver clip
|
||||
4. Marcar como revisado
|
||||
5. Agregar notas
|
||||
|
||||
---
|
||||
|
||||
## Solucion de Problemas de Video
|
||||
|
||||
### Camara no conecta
|
||||
|
||||
1. Verificar URL RTSP es correcta
|
||||
2. Verificar credenciales
|
||||
3. Verificar conectividad de red
|
||||
4. Probar con ffprobe:
|
||||
```bash
|
||||
ffprobe -v error rtsp://admin:pass@IP:554/stream
|
||||
```
|
||||
|
||||
### Video con lag alto
|
||||
|
||||
Posibles causas:
|
||||
- Ancho de banda insuficiente
|
||||
- Servidor sobrecargado
|
||||
- Bitrate muy alto
|
||||
|
||||
Soluciones:
|
||||
- Reducir calidad en camara
|
||||
- Usar sub-stream (menor resolucion)
|
||||
- Verificar conexion de datos del vehiculo
|
||||
|
||||
### Video se corta frecuentemente
|
||||
|
||||
Posibles causas:
|
||||
- Conexion 4G inestable
|
||||
- Timeout de conexion
|
||||
|
||||
Soluciones:
|
||||
- Aumentar timeouts en MediaMTX
|
||||
- Configurar reconexion automatica
|
||||
- Usar buffering mas largo
|
||||
|
||||
### No se guardan grabaciones
|
||||
|
||||
Verificar:
|
||||
```bash
|
||||
# Espacio en disco
|
||||
df -h /opt/flotillas/videos
|
||||
|
||||
# Permisos
|
||||
ls -la /opt/flotillas/videos
|
||||
|
||||
# Logs de MediaMTX
|
||||
journalctl -u mediamtx -f
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Seguridad
|
||||
|
||||
### Autenticacion
|
||||
|
||||
- URLs RTSP internas no expuestas a internet
|
||||
- Acceso a video solo via dashboard autenticado
|
||||
- Tokens temporales para streams
|
||||
|
||||
### Encriptacion
|
||||
|
||||
- RTSP puede usar RTSPS (SSL)
|
||||
- WebRTC usa DTLS (encriptado por defecto)
|
||||
- HLS puede usar HTTPS
|
||||
|
||||
### Mejores Practicas
|
||||
|
||||
1. No exponer puertos de video directamente a internet
|
||||
2. Usar VPN para acceso remoto a camaras
|
||||
3. Cambiar credenciales default de camaras
|
||||
4. Actualizar firmware de camaras regularmente
|
||||
Reference in New Issue
Block a user