Skip to main content
Esta página fue traducida automáticamente. Si encuentra errores o tiene sugerencias, contáctenos.

Descripción general

Cuando tu cliente está en la misma red que un dispositivo Rhombus, puede obtener video en vivo, grabaciones y audio directamente del dispositivo en lugar de hacerlo a través de la nube de Rhombus. Obtienes menor latencia y no consumes ancho de banda de internet.
Los dispositivos de tu LAN nunca aceptan API tokens. Usa tu API token en tu servidor para generar un token federado de corta duración y luego presenta el token federado al dispositivo.
Esta guía cubre:
  • En qué se diferencian los API tokens y los tokens federados, y cuál usar en cada caso
  • Cómo generar un token federado y encontrar los URI LAN de un dispositivo
  • Cómo autenticar solicitudes LAN con headers o parámetros de consulta
  • H.264 en vivo y audio bidireccional por WebSocket, además de DASH/HLS para video en vivo y grabado
  • Limitaciones de los navegadores y solución de problemas

API tokens vs tokens federados

Son dos credenciales distintas con funciones distintas. Un token federado es una credencial al portador: cualquiera que lo tenga puede actuar con su rol. Para streaming por LAN, genera tokens limitados a un dispositivo con deviceUUid. Un token limitado a un dispositivo solo puede obtener los medios de ese dispositivo, y la API en la nube lo rechaza. Además, genéralo con un API token cuyo rol no sea más amplio de lo que el espectador necesita, y mantén durationSec corto.
El valor de x-auth-scheme es exactamente federated-token. No existe el esquema federated-session-token, y un token federado nunca va en x-auth-apikey.

Requisitos previos

  • Una API key de Rhombus con permiso para ver las cámaras o gateways de audio que vas a transmitir (obtén una aquí)
  • Un cliente en la misma red que el dispositivo, capaz de alcanzarlo en el puerto TCP 8000
  • Un dispositivo que pueda alcanzar la nube de Rhombus. El dispositivo verifica cada token nuevo con Rhombus, así que un dispositivo sin acceso a internet no puede autorizar clientes nuevos.

Implementación

1

Genera un token federado en tu servidor

Llama a generateFederatedSessionToken con tu API key. Tu API key nunca sale de tu servidor.
Ejemplo de respuesta:
El token nunca puede hacer más que el API token que lo generó. Si ese rol solo permite video en vivo, el dispositivo sirve streams en vivo y rechaza las grabaciones.
2

Obtén los URI LAN del dispositivo

En tu servidor, llama a POST /api/camera/getMediaUris con cameraUuid, o a /api/audiogateway/getMediaUris con gatewayUuid, usando tu API key. Un token federado limitado a un dispositivo no puede llamar a la API en la nube.
Python
  • Cada campo es un arreglo porque un dispositivo puede tener más de una dirección LAN. Usa la primera que tu cliente pueda alcanzar.
  • En las plantillas VOD, reemplaza {START_TIME} por una marca de tiempo Unix en segundos y {DURATION} por una duración en segundos.
  • El nombre de host LAN es DNS público que resuelve a la IP privada del dispositivo, y el dispositivo sirve un certificado de confianza pública para él. Conéctate usando el nombre de host exactamente como se devuelve, no la IP directa, y mantén activada la verificación TLS normal. Los dispositivos de la región UE usan nombres de host .lan.eu.rhombussystems.com (Regiones de API).
3

Presenta el token federado al dispositivo

Envía el token federado en cada solicitud al dispositivo, incluido cada segmento DASH/HLS y el upgrade del WebSocket. Usa la forma que admita tu cliente:
Para apps nativas, servidores, curl y ffmpeg:
El dispositivo verifica el token con Rhombus: debe estar vigente, pertenecer a la organización del dispositivo y tener un rol que pueda ver este dispositivo. El dispositivo guarda en caché una verificación exitosa hasta por 60 segundos, así que un token expirado o revocado puede seguir funcionando hasta un minuto.

Ejemplos de código

Manifiesto DASH en vivo

cURL
Un token válido devuelve el manifiesto DASH (200). Un token ausente, expirado o no autorizado devuelve 401.

Grabaciones con ffmpeg

ffmpeg pasa -headers a cada solicitud de playlist y de segmento. Esto guarda 60 segundos de grabación a partir de 1767225600 (2026-01-01 00:00:00 UTC):
ffmpeg

H.264 en vivo por WebSocket

Ejemplo de salida del script de Python:
Cada mensaje binario es una secuencia de registros TLV (tipo de 1 byte, longitud de 3 bytes big-endian, valor) que termina con los datos del frame H.264. La tabla completa de tipos, incluidas las detecciones de IA incrustadas, está en Superposición de detección en tiempo real por LAN. Para un reproductor de navegador listo para usar, usa RhombusRealtimePlayer con connectionMode="lan" del React SDK.

Audio por WebSocket

El socket lanLiveOpusUris transporta audio en ambas direcciones y usa la misma autenticación con token federado.

Escuchar

Cada mensaje binario del dispositivo contiene tres registros TLV. El encabezado de cada registro tiene 1 bit (bandera de eco), 7 bits (tipo) y una longitud de 24 bits big-endian, seguido del valor.

Hablar

Para reproducir audio en el altavoz del dispositivo, envía mensajes binarios por el mismo socket. Cada registro es un tipo ASCII de 4 bytes, una longitud de 4 bytes big-endian y luego el contenido. Cada registro de audio contiene exactamente 20 ms de audio. De forma predeterminada, el dispositivo reproduce cada paquete Opus, incluso los atrasados, y descarta el PCM atrasado para mantener el tiempo real.

Aplicaciones de navegador

  • Los streams WebSocket (lanLiveH264Uris, lanLiveOpusUris) funcionan desde cualquier origen con el token en la cadena de consulta.
  • DASH y HLS por LAN (URL lanLive* y lanVod*) no se pueden cargar con JavaScript del navegador, como dash.js o hls.js, en tu propio dominio, porque los dispositivos solo permiten orígenes de Rhombus para solicitudes entre orígenes. Reproduce DASH/HLS por LAN desde una app nativa o un servidor, o usa el stream WebSocket en el navegador.
  • Nunca pongas una API key en código de navegador. Genera tokens federados en tu servidor y entrega solo esos al navegador.

Dispositivos con firmware anterior

Los dispositivos con firmware publicado antes de mediados de abril de 2026 solo leen el token desde una cookie. Si un cliente nativo debe admitirlos, envía también:
El firmware actual también acepta esta cookie, así que un cliente nativo puede enviarla junto con los headers.

Solución de problemas

Ningún token llegó al dispositivo, x-auth-scheme no es exactamente federated-token, o enviaste una API key en lugar de un token federado. Los dispositivos nunca aceptan API keys.
El token federado expiró. Genera uno nuevo antes de que se agote durationSec.
El token se generó con deviceUUid para otro dispositivo, o su rol no puede ver este dispositivo.
El rol del token, heredado de la API key que lo generó, solo permite video en vivo.
El dispositivo no pudo alcanzar la nube de Rhombus para verificar el token.
Los navegadores bloquean las solicitudes DASH/HLS entre orígenes hacia el dispositivo. Consulta Aplicaciones de navegador.
Usa el nombre de host LAN de getMediaUris, no la dirección IP directa.

Próximos pasos

React SDK

Reproductores LAN y WAN listos para usar que manejan los tokens federados por ti.

Detección en tiempo real por LAN

Formato TLV completo de H.264 y superposiciones de cuadros delimitadores de IA.

Streaming de video

Miniaturas, streams compartidos y clips grabados a través de la nube.

Obtener audio

Streams y grabaciones de gateways de audio.
Última modificación el 5 de octubre de 2026