Skip to main content
Esta página fue traducida automáticamente. Si encuentra errores o tiene sugerencias, contáctenos.
El paquete oficial @rhombussystems/react ofrece componentes React listos para usar que transmiten cámaras de Rhombus. Hay dos modos de reproductor disponibles:
  • RhombusBufferedPlayer — Transmisión en vivo MPEG-DASH mediante Dash.js (con búfer, confiable)
  • RhombusRealtimePlayer — H.264 de baja latencia por WebSocket mediante WebCodecs (casi en tiempo real)
Requiere React 18+ y un endpoint de backend que genere tokens de sesión federados. Tu API key de Rhombus nunca debe exponerse al navegador.

Instalación

Dependencias de pares (peer dependencies): react y react-dom >= 18. La biblioteca dashjs se incluye automáticamente para la reproducción DASH.

Inicio rápido

Esto renderiza un reproductor de video con búfer basado en DASH. El componente automáticamente:
  1. Solicita un token de sesión federado a tu backend (POST /api/federated-token)
  2. Obtiene los URIs de medios desde la API de Rhombus
  3. Inicializa la reproducción con Dash.js
Tu backend debe implementar un endpoint POST /api/federated-token (o configurar una ruta personalizada mediante la prop paths.federatedToken). Consulta Configuración del backend más abajo.

Reproductor con búfer (DASH)

El RhombusBufferedPlayer transmite video en vivo MPEG-DASH con niveles de calidad configurables.

Calidad de la transmisión

Controla el reescalado del lado del servidor con la prop bufferedStreamQuality: Cambiar la calidad no vuelve a obtener el manifiesto ni el token: el RequestModifier de Dash.js aplica el cambio en la siguiente solicitud de segmento.

Reproductor en tiempo real (WebSocket)

El RhombusRealtimePlayer decodifica fotogramas H.264 por WebSocket usando la API WebCodecs del navegador y los renderiza en un <canvas>. Esto ofrece menor latencia que DASH.

Modos de conexión

Calidad de la transmisión

Compatibilidad de navegadores: WebCodecs con decodificación H.264 es compatible con Chrome, Edge y Safari 16.4+. La compatibilidad con Firefox es limitada.

Consideraciones del modo LAN

En modo LAN, el SDK añade el token federado a la URL del WebSocket como parámetros de consulta (x-auth-scheme=federated-token y x-auth-ft), de la misma forma que en WAN. Esto funciona desde cualquier origen, incluido localhost. El requisito práctico del modo LAN es la accesibilidad de red: el navegador debe poder alcanzar directamente el host de la cámara/NVR (se aplican reglas de enrutamiento, firewall y de contenido mixto HTTPS-vs-HTTP). Además, tu implementación de Rhombus debe aceptar los parámetros de consulta del token federado en el endpoint LAN.
Las versiones anteriores del SDK (previas a la 1.0) autenticaban el modo LAN con una cookie RFT y una prop applyLanAuthCookie. Ese mecanismo se eliminó en la v1.0: LAN ahora usa parámetros de consulta en la URL igual que WAN. Si estás siguiendo una guía más antigua, actualiza tu integración en consecuencia.

Configuración del backend

El SDK requiere un endpoint del lado del servidor para generar tokens de sesión federados. Tu API key de Rhombus permanece en el servidor: nunca se envía al navegador.

Endpoint del token

Tu backend debe exponer un endpoint POST (ruta predeterminada: /api/federated-token):
El parámetro domain en la solicitud del token debe coincidir con el origen de tu aplicación. Sin él, el navegador obtendrá errores de CORS al solicitar los URIs de medios desde api2.rhombussystems.com.

Modo de anulación (proxy de todas las solicitudes)

Si prefieres mantener todo el tráfico de Rhombus en el lado del servidor (el navegador nunca se comunica directamente con Rhombus), usa apiOverrideBaseUrl:
En este modo, tu backend también debe exponer un endpoint POST /api/media-uris que actúe como proxy hacia el POST /camera/getMediaUris de Rhombus.

Referencia de props

Props compartidas

Props de RhombusBufferedPlayer

Props de RhombusRealtimePlayer

Solución de problemas

Tu backend no tiene un endpoint de token en la ruta esperada. Implementa POST /api/federated-token o establece la prop paths.federatedToken para que coincida con tu ruta.
El token federado se generó sin un domain que coincida con el origen de tu aplicación. Pasa el origen de tu aplicación como el parámetro domain al llamar a generateFederatedSessionToken en tu backend.
Verifica la compatibilidad del navegador: WebCodecs H.264 requiere Chrome, Edge o Safari 16.4+. Revisa la consola del navegador en busca de mensajes [RhombusRealtimePlayer].
El modo LAN añade el token federado a la URL del WebSocket como parámetros de consulta (igual que WAN), por lo que funciona desde cualquier origen, incluido localhost. Si el modo LAN falla, confirma que el navegador puede alcanzar directamente el host de la cámara/NVR (enrutamiento, firewall y reglas de contenido mixto HTTPS-vs-HTTP), y que tu implementación de Rhombus acepta los parámetros de consulta del token federado en el endpoint LAN. Si el host LAN no es accesible desde el navegador, usa connectionMode="wan" o redirige el tráfico a través de tu backend.

Recursos

Paquete npm

Detalles del paquete e historial de versiones

Repositorio de GitHub

Código fuente, ejemplos y problemas

Guía de transmisión de video

Implementación de transmisión de bajo nivel sin el SDK

Guía del reproductor de video

Implementación de un reproductor Dash.js personalizado
Última modificación el 8 de julio de 2026