Latencia en streaming: por qué ocurre y cómo reducirla
Descubre por qué tu transmisión en vivo va con retraso y aprende técnicas reales para reducir la latencia: LL-HLS, segmentos, GOP, buffer del reproductor y WebRTC.
Guía de GurztechnologyHas visto esta escena: alguien celebra un gol en la calle y tú lo ves diez segundos después en tu transmisión. Esa demora se llama latencia, y en el streaming en vivo es casi inevitable. La buena noticia es que se puede medir, entender y reducir bastante. En esta guía te explico de dónde sale cada segundo de retraso y qué puedes ajustar para recortarlo sin romper tu transmisión.
Qué es la latencia y cómo se mide
La latencia de cristal a cristal (glass-to-glass) es el tiempo entre que algo ocurre frente a la cámara y aparece en la pantalla del espectador. No es un solo retraso, sino la suma de varios pasos. Para referencia:
- Alta latencia: 15-30 segundos. HLS clásico. Bien para eventos donde nadie interactúa.
- Latencia reducida: 5-10 segundos. Transmisiones profesionales típicas.
- Baja latencia: 2-5 segundos. LL-HLS bien afinado.
- Ultra baja: menos de 1 segundo. WebRTC, para conversación real.
Por qué ocurre la latencia: la cadena de retrasos
Cada etapa entre la cámara y el ojo suma tiempo:
- Captura y codificación: el codificador comprime el video. Usar presets muy pesados añade milisegundos, y el intervalo de keyframes (GOP) marca cada cuánto hay un fotograma completo.
- Subida (RTMP): enviar la señal al servidor. Si tu internet de subida es justo, aquí se acumula retraso y cortes.
- Transcodificación: el servidor genera varias calidades. Cuanto más trabajo, más demora.
- Segmentación: aquí está el gran culpable del HLS clásico. Si cada segmento dura 6 segundos y el reproductor espera acumular 3 antes de empezar, ya tienes 18 segundos de retraso solo por el buffer.
- CDN y red: distribuir los segmentos por internet añade su parte.
- Buffer del reproductor: el reproductor guarda segundos por adelantado para evitar cortes. Esa reserva es, otra vez, latencia.
Cómo reducir la latencia, paso por paso
1. Acorta los segmentos (con cabeza)
Bajar los segmentos HLS de 6 a 2 segundos reduce el retraso de forma directa. Pero ojo: segmentos más cortos generan más peticiones HTTP y más carga en el servidor y la CDN. Dos segundos es un buen equilibrio para la mayoría de casos.
2. Ajusta el keyframe al segmento
El intervalo de keyframes (GOP) del codificador debe coincidir con la duración del segmento, normalmente cada 2 segundos. Si no cuadran, el servidor no puede cortar limpio y verás saltos o incluso más demora. En OBS esto se configura en los ajustes de salida.
3. Activa LL-HLS
LL-HLS (Low-Latency HLS) es la evolución del protocolo para este problema. En vez de esperar el segmento completo, entrega fragmentos parciales (partial segments) y avisa al reproductor qué viene después (preload hints). Bien configurado, baja la latencia a 2-5 segundos manteniendo la compatibilidad de HLS. Requiere que tu servidor y tu CDN lo soporten.
4. Reduce el buffer del reproductor
Librerías como hls.js permiten configurar cuántos segundos guarda por adelantado (por ejemplo los parámetros de longitud de buffer y modo de baja latencia). Menos buffer es menos demora, pero también menos margen ante una conexión inestable: si el usuario tiene mal internet, verá más cortes. Es un balance que debes probar con tu audiencia real.
5. Cuida tu subida de internet
Ninguna optimización sirve si tu enlace de subida va saturado. Deja margen: transmite a un bitrate que quepa cómodo en tu subida (por ejemplo, no emitas a 6 Mbps si subes 8). Una conexión por cable siempre es más estable que el WiFi para emitir.
6. Si necesitas menos de un segundo, piensa en WebRTC
Cuando la interacción es el corazón del evento (subastas en vivo, apuestas, clases con preguntas, videollamadas grupales), ni siquiera LL-HLS alcanza. Ahí entra WebRTC, diseñado para conversación en tiempo real, con latencias por debajo del segundo. A cambio es más complejo de escalar a audiencias masivas y consume más recursos, así que úsalo solo cuando la inmediatez lo justifique.
Errores comunes al perseguir baja latencia
- Bajar los segmentos demasiado: segmentos de medio segundo disparan las peticiones y pueden empeorar la experiencia.
- Quitar todo el buffer: cero buffer significa cortes constantes en cuanto la red tiembla.
- Olvidar la CDN: sin caché, cada espectador golpea tu origen y la latencia se dispara bajo carga.
- Exigir WebRTC para todo: si nadie va a interactuar en tiempo real, es complejidad y costo que no necesitas.
Encuentra tu punto de equilibrio
No existe una latencia "correcta" universal; existe la adecuada para tu caso. Un concierto grabado tolera 20 segundos sin problema. Un panel de preguntas pide 3 o 4. Una subasta exige menos de uno. Define primero cuánto retraso aguanta tu contenido y cuánta gente vas a atender, y a partir de ahí ajustas segmentos, buffer y protocolo. En un servicio de live streaming preparado, como el de gurztechnology, LL-HLS y los tamaños de segmento ya vienen afinados para un arranque equilibrado.
Conclusión
La latencia es la suma de muchos pasos pequeños: codificación, subida, segmentación, CDN y buffer. No se elimina, pero se domina. Empieza por lo que más rinde (segmentos de 2 segundos, keyframe alineado y LL-HLS), mide el resultado de cristal a cristal y ajusta el buffer según la estabilidad de tu red. Persigue la latencia que tu contenido necesita, no la más baja posible, y tendrás una transmisión fluida sin sacrificar estabilidad.