Esta página fue traducida automáticamente. Si encuentra errores o tiene sugerencias, contáctenos.
Descripción general
Esta guía muestra cómo respaldar grabaciones de video y audio de cámaras Rhombus en dispositivos de almacenamiento local como almacenamiento conectado a la red (NAS), discos duros externos o servidores locales. La solución usa un script de Python que aprovecha la API de Rhombus para descargar grabaciones en paralelo a través de múltiples cámaras. La implementación admite:- Descargas multicámara con subprocesos (threading) para mejorar el rendimiento
- Sincronización de video y audio con fusión automática
- Programación flexible usando cron jobs o programadores de tareas
- Rangos de tiempo personalizables para respaldar grabaciones históricas
- Filtrado por ubicación para respaldar sitios específicos
Cómo funciona
Descubrimiento de cámaras
El script consulta la API de Rhombus para enumerar todas las cámaras de tu organización, filtrando por estado de conexión, ubicación o UUID de cámara específicos.
Autenticación de sesión
Se genera un token de sesión federada para cada cámara, que proporciona credenciales temporales (1 hora) para el acceso a los medios sin exponer tu API key en las URL de descarga.
Descarga de medios
Para cada cámara, el script:
- Solicita las URI de la lista de reproducción MPD (MPEG-DASH) para los flujos de video y audio
- Descarga el segmento de inicialización (
seg_init.mp4) - Descarga segmentos de medios secuenciales de 2 segundos
- Escribe los segmentos en el almacenamiento local
Requisitos previos
Antes de implementar el respaldo local, asegúrate de tener:- Python 3.7 o superior instalado en tu sistema de respaldo
- API key de Rhombus de la Consola de Rhombus
- Conectividad de red a las cámaras Rhombus (LAN o WAN)
- Espacio de almacenamiento suficiente en tu dispositivo de respaldo (estima de 1 a 2 GB por cámara por día)
- FFmpeg instalado para la fusión de audio y video
Instalación
Instalar el software requerido
- Ubuntu/Debian
- macOS
- Windows
- Synology NAS
Descargar el script de respaldo
Clona el repositorio de ejemplos de la API de Rhombus:Verificar la instalación
Comprueba que todos los componentes estén instalados correctamente:Configuración
Parámetros de línea de comandos
El script de respaldo admite los siguientes parámetros:Tu API key de Rhombus para la autenticación. Requerido a menos que uses autenticación basada en certificados.Ejemplo:
--api_key YOUR_API_KEY_HEREMarca de tiempo Unix epoch para la hora de inicio del respaldo. Por defecto es hace 1 hora si no se especifica.Ejemplo:
--start_time 1693526400 (31 de agosto de 2023 a las 16:00:00 UTC)Duración en segundos a respaldar desde la hora de inicio. Por defecto es 3600 segundos (1 hora).Ejemplo:
--duration 7200 (2 horas)Filtra el respaldo a las cámaras de una ubicación específica. Útil para implementaciones de varios sitios.Ejemplo:
--location_uuid location-uuid-hereRespalda las grabaciones de una sola cámara específica.Ejemplo:
--camera_uuid camera-uuid-hereUsa direcciones WAN en lugar de LAN. Habilítalo cuando el sistema de respaldo esté fuera de tu red local.Ejemplo:
--usewanHabilita el registro de depuración para la resolución de problemas.Ejemplo:
--debugRuta al certificado de cliente para autenticación mTLS (caso de uso avanzado).Ejemplo:
--cert /path/to/cert.pemRuta a la clave privada para autenticación mTLS (caso de uso avanzado).Ejemplo:
--private_key /path/to/key.pemEjemplos de uso
Respaldo básico (última hora)
Respalda la última hora de grabaciones de todas las cámaras:Rango de tiempo específico
Respalda grabaciones de una ventana específica de 2 horas:Respaldo de una sola cámara
Respalda las grabaciones de una cámara específica:Respaldo por ubicación
Respalda todas las cámaras de una ubicación específica:Acceso WAN (respaldo remoto)
Respalda desde fuera de tu red local:Modo de depuración
Habilita el registro detallado para la resolución de problemas:Archivos de salida
Los archivos de grabaciones descargados siguen esta convención de nomenclatura:- Archivos solo de video: formato
.mp4(cuando no hay audio disponible) - Archivos fusionados: formato
.mp4(video + audio combinados con FFmpeg) - Archivos temporales: formato
.webm(se eliminan automáticamente después de la fusión)
El script limpia automáticamente los archivos temporales después de una fusión exitosa. Solo los archivos
.mp4 finales permanecen en tu directorio de respaldo.Programación de respaldos automatizados
Usando cron (Linux/macOS/NAS)
Crea respaldos automatizados usando cron jobs:Usando el Programador de tareas (Windows)
C:\Python39\python.exe (ajusta la ruta)copy_footage_script_threading.py --api_key YOUR_API_KEY --duration 3600C:\path\to\NAS-Backup-v2Endpoints de la API utilizados
El script de respaldo interactúa con los siguientes endpoints de la API de Rhombus:Enumeración de cámaras
Lista de pasarelas de audio
Generación de token de sesión
URI de medios de video
URI de medios de audio
Todas las llamadas a la API requieren autenticación usando el encabezado
x-auth-scheme: api-token con tu API key, o autenticación mTLS basada en certificados.Optimización del rendimiento
Configuración de subprocesos
El script usa elThreadPoolExecutor de Python con un máximo de 4 workers concurrentes. Esto equilibra la velocidad de descarga con los límites de tasa de la API y los recursos del sistema.
Para ajustar la cantidad de subprocesos, modifica el script:
- 2-4 workers: NAS estándar o sistemas de gama baja
- 4-8 workers: NAS o servidores de alto rendimiento
- 8-16 workers: servidores empresariales con alto ancho de banda
Consideraciones de almacenamiento
Calcular el espacio requerido:- 10 cámaras × 30 días × 1.5 GB = 450 GB requeridos
- Mantén al menos un 20% de espacio libre en el dispositivo de respaldo
- Implementa políticas de retención para eliminar grabaciones antiguas
- Monitorea el uso del disco con regularidad
- Usa compresión si necesitas archivado a largo plazo
Optimización de red
LAN vs WAN:- Modo LAN (predeterminado): descargas más rápidas, usa direcciones de red local
- Modo WAN (
--usewan): requerido para respaldos remotos, más lento pero accesible desde cualquier lugar
- Aproximadamente de 2 a 4 Mbps por descarga de cámara concurrente
- 4 workers = de 8 a 16 Mbps de ancho de banda recomendado
Retención y limpieza
Implementa una política de retención para administrar el uso del almacenamiento:Resolución de problemas
El script falla con un error de autenticación
El script falla con un error de autenticación
Síntomas:
- Errores
401 Unauthorized - Mensajes
Invalid API key
- Verifica que la API key sea correcta en la Consola de Rhombus
- Asegúrate de que la API key tenga permisos de acceso a las cámaras
- Comprueba que el encabezado
x-auth-schemeesté configurado correctamente - Regenera la API key si está comprometida
Las descargas son muy lentas
Las descargas son muy lentas
Síntomas:
- Las descargas tardan más de lo esperado
- Errores de tiempo de espera de red
- Usa el modo LAN en lugar de WAN si respaldas localmente
- Reduce la cantidad de subprocesos en
ThreadPoolExecutor - Verifica el ancho de banda de la red y la conectividad de las cámaras
- Verifica la velocidad de escritura del dispositivo de almacenamiento
- Considera programar los respaldos durante las horas de menor actividad
La fusión de FFmpeg falla
La fusión de FFmpeg falla
Síntomas:
- Permanecen archivos
.webmtemporales - No hay salida
.mp4fusionada - Mensajes de error de FFmpeg
- Verifica que FFmpeg esté instalado y en el PATH
- Comprueba que tanto los archivos de video como los de audio se hayan descargado
- Asegúrate de tener suficiente espacio en disco para los archivos temporales
- Actualiza FFmpeg a la última versión
No se encuentran cámaras
No se encuentran cámaras
Síntomas:
- El script informa 0 cámaras para respaldar
- Lista de cámaras vacía
- Verifica que las cámaras estén en línea en la Consola de Rhombus
- Comprueba el filtro de UUID de ubicación si se especificó
- Asegúrate de que la API key tenga acceso a las cámaras
- Revisa los filtros de estado de conexión de las cámaras en el script
Problemas de espacio en disco
Problemas de espacio en disco
Síntomas:
- El script falla con errores de escritura
- Mensajes
No space left on device
- Verifica el espacio disponible en disco:
df -h - Implementa una política de retención para eliminar grabaciones antiguas
- Reduce la duración o la frecuencia del respaldo
- Agrega capacidad de almacenamiento adicional
- Usa compresión para las grabaciones archivadas
El cron job no se ejecuta
El cron job no se ejecuta
Síntomas:
- Los respaldos programados no se ejecutan
- No se crean nuevos archivos de grabaciones
- Verifica el estado del servicio cron:
systemctl status cron - Verifica la sintaxis del crontab:
crontab -l - Revisa los registros de cron:
grep CRON /var/log/syslog - Asegúrate de que las rutas del script sean absolutas
- Verifica los permisos del usuario
Prácticas recomendadas
Proteger las API keys
Nunca incluyas API keys directamente en los scripts. Usa variables de entorno o sistemas seguros de administración de claves. Rota las API keys con regularidad.
Monitorear los respaldos
Configura monitoreo y alertas para las fallas de respaldo. Revisa los registros con regularidad para asegurarte de que los respaldos se completen correctamente.
Probar las restauraciones
Prueba con regularidad la restauración de grabaciones desde los respaldos para verificar la integridad y confirmar que tu proceso de recuperación funciona.
Implementar retención
Define y aplica políticas de retención para administrar los costos de almacenamiento y cumplir con las regulaciones de protección de datos.
Usar redundancia
Considera múltiples ubicaciones de respaldo (en el sitio + fuera del sitio) para las grabaciones críticas. Implementa la regla de respaldo 3-2-1.
Documentar los procedimientos
Mantén documentación de tu configuración de respaldo, horarios y procedimientos de recuperación para tu equipo.
Consideraciones de seguridad
Protección de la API key
- Almacena de forma segura: usa variables de entorno o administradores de credenciales
- Restringe el acceso: limita los permisos de los archivos de los scripts que contienen claves
- Rota con regularidad: cambia las API keys periódicamente
- Audita el uso: monitorea la actividad de la API key en la Consola de Rhombus
Seguridad de red
- Usa el modo LAN cuando sea posible para evitar la exposición a la WAN
- Implementa reglas de firewall para restringir el acceso
- Considera una VPN para escenarios de respaldo remoto
- Habilita la autenticación mTLS para mayor seguridad
Seguridad del almacenamiento
- Cifra los dispositivos de almacenamiento de respaldo
- Restringe los permisos del sistema de archivos
- Implementa controles de acceso en el NAS/servidor
- Audita con regularidad quién tiene acceso a los archivos de respaldo
Consideraciones de cumplimiento
Al implementar el respaldo local, considera: Retención de datos:- Sigue las políticas de retención de datos de tu organización
- Cumple con las regulaciones de la industria (HIPAA, GDPR, etc.)
- Documenta los períodos de retención y los procedimientos de eliminación
- Mantén registros de auditoría de quién accede a las grabaciones de respaldo
- Implementa controles de acceso basados en roles
- Documenta al personal autorizado
- Cifra los datos en reposo y en tránsito
- Implementa procedimientos de eliminación segura
- Evaluaciones de seguridad periódicas
Configuración avanzada
Directorio de salida personalizado
Modifica el script para guardar los archivos en un directorio específico:Notificaciones por correo electrónico
Agrega alertas por correo electrónico para la finalización o las fallas de los respaldos:Integración de webhooks
Activa webhooks después de que se complete el respaldo:Próximos pasos
Implementación de transmisión de video
Aprende a transmitir grabaciones en vivo desde cámaras Rhombus
Integración de webhooks
Configura webhooks para recibir eventos en tiempo real
Repositorio de GitHub
Accede al código fuente completo del script de respaldo
Comunidad de desarrolladores
Haz preguntas y comparte tu implementación
Recursos adicionales
- Documentación de la API de Rhombus: referencia completa de la API para todos los endpoints
- Documentación de Python Requests: docs.python-requests.org
- Documentación de FFmpeg: ffmpeg.org/documentation
- Documentación de Cron: man7.org/linux/man-pages/man5/crontab.5.html
Para preguntas, problemas o para compartir tu implementación de respaldo, visita la Comunidad de desarrolladores de Rhombus y publica en la sección Guides & Resources.