Entrega HLS / DASH: la escalera exacta, el empaquetado y el manifiesto que obtienes

Esta página es la especificación en lugar de la presentación. Todo lo que sigue es lo que un canal en la línea HLS / DASH adaptativa produce realmente: el contenedor, la escalera, la estructura del manifiesto, las pistas de audio y subtítulos, el DRM, la autenticación de origen y el comportamiento de conmutación por error: las cosas que un integrador verifica antes de firmar, en el orden en que se preguntan.

POR CANAL / MES EUR 200
VIDRIO A VIDRIO 4 - 8 s
PELDAÑOS DE LA ESCALERA 4
PUNTOS DE PRESENCIA 195
/01

Desde la fuente hasta el manifiesto

Cada canal se captura una vez, en el sitio central más cercano a su fuente: un enlace de satélite, un feed de contribución de un broadcaster, o una reproducción que ejecutamos. El flujo de transporte se normaliza allí: la tasa de fotogramas, la sonoridad del audio y el reloj se regularizan antes de que se codifique nada, porque una fuente irregular es lo que rompe una escalera, no una falta de bitrate.

Una transcodificación produce toda la escalera. Los cuatro peldaños comparten una estructura GOP y una cadencia IDR alineada con el límite del segmento, lo que permite a un reproductor cambiar de peldaño entre segmentos sin un corte visible o un hueco de audio. El audio se codifica una vez por idioma y se referencia en cada peldaño, por lo que un cambio de video nunca vuelve a almacenar el sonido.

El empaquetado es un único pase CMAF: los mismos segmentos MP4 fragmentados son descritos por una lista de reproducción multivariada HLS y por un manifiesto MPEG-DASH. No hay una segunda codificación ni una segunda copia en disco para DASH, que es por lo que ambos manifiestos vienen con cada canal sin cargo adicional.

Desde el empaquetador, los segmentos se publican en el origen en el sitio central y se sirven desde el borde de entrega más cercano al espectador. El empaquetado, la encriptación y la grabación ocurren en el núcleo; los bordes solo almacenan en caché. Esa es la frontera a tener en cuenta al leer la sección de conmutación por error: un borde es reemplazable en cualquier momento, un origen es un par.

/02

La escalera adaptativa

PeldañoResoluciónFPSBitrate de videoPerfil de códec
11920 × 1080254000 kbpsH.264 High @ L4.0
21280 × 720251800 kbpsH.264 High @ L3.1
3960 × 540251100 kbpsH.264 Main @ L3.1
4640 × 36025600 kbpsH.264 Main @ L3.0

La escalera anterior es la predeterminada para un canal HD a tasa completa, los requisitos especiales son posibles. Los peldaños tienen un bitrate constante limitado en lugar de VBR abierto, por lo que una escena ocupada no puede hacer que un espectador móvil se caiga del peldaño superior, y un operador o una propiedad pueden dimensionar un enlace a partir de la tabla en lugar de a partir de un promedio.

No está fijado por decreto. Un canal destinado a cabañas o enlaces de subida delgados puede recortarse a los dos peldaños inferiores, y donde se sabe que cada dispositivo objetivo puede decodificarlo, se puede añadir un peldaño superior HEVC junto al de H.264. Pregunta por canal y especificamos la escalera en la nota de entrega.

El audio añade 128 kbps por idioma además de cualquier peldaño de video que se esté reproduciendo, y los subtítulos unos kbps más. Por lo tanto, un espectador en el peldaño superior con una única pista de audio es aproximadamente 4.1 Mbps, no 4.

/03

Especificación de empaquetado y entrega

ContenedorCMAF (fMP4), un conjunto de segmentos detrás de ambos manifiestos; segmentos MPEG-TS a petición
ManifiestosHLS (EXT-X-VERSION 7 o superior) y MPEG-DASH (MPD dinámico), desde un empaquetador
Códec de videoH.264 High y Main, 8 bits 4:2:0; un peldaño superior HEVC por canal a petición
Códec de audioAAC-LC estéreo a 128 kbps por idioma; E-AC-3 de origen transportado donde lo permita el titular de derechos y los dispositivos de destino
Segmentos4 s por defecto, 2 s a petición; alineación IDR en cada escalón
Ventana en vivo3 minutos de segmentos en cada lista de reproducción de medios, EXT-X-PROGRAM-DATE-TIME en cada segmento
Latencia4 - 8 s de vidrio a vidrio en HLS estándar con segmentos de 4 s
Baja latenciaLL-HLS con EXT-X-PART y recarga de lista de reproducción bloqueante, habilitado por canal; la duración de la parte y la latencia objetivo resultante se acuerdan en función de la fuente del canal en lugar de citarse genéricamente
DiferidoComplemento de DVR en la nube: una ventana rodante de 7 días accesible como una lista de reproducción VOD, 30 días a petición
DRMWidevine y PlayReady (CENC) y FairPlay (CBCS) desde nuestro propio servidor de licencias, EUR 19 por canal al mes
Autenticación de origenToken, URL firmada o mTLS, con una lista de permitidos CORS por cliente
OrígenesDos sitios principales por canal de entre 6, 99.99% disponibilidad de origen
Entrega195 puntos de presencia en 121 países, o tu propio CDN que extrae nuestro origen
EgresoEUR 0.09 por GB en nuestro CDN, nada medido en el tuyo
/04

El espacio de URL

Los puntos finales se emiten por cliente contra un nombre de host nuestro, o contra el tuyo donde enfrentas el origen con tu CDN. El slug del canal es el que está en el catálogo, por lo que se puede construir una URL de manifiesto a partir de un pedido sin preguntarnos por una lista.

Todo lo que está por debajo de la lista de reproducción multivariada es descubrible desde ella; nunca tienes que construir un escalón, URL de audio o de subtítulos tú mismo. Las rutas están documentadas porque los integradores las necesitan para reglas de caché, reglas de WAF y análisis de registros, no porque lo necesite un reproductor.

  • /live/{channel}/master.m3u8 Lista de reproducción multivariada: cada escalón de vídeo, cada versión de audio, cada grupo de subtítulos.
  • /live/{channel}/{rung}/index.m3u8 Lista de reproducción de medios por escalón: segmento de inicialización fMP4, luego la ventana en vivo deslizante.
  • /live/{channel}/audio/{lang}.m3u8 Versión de audio por idioma, referenciada desde la lista de reproducción multivariada por EXT-X-MEDIA.
  • /live/{channel}/text/{lang}.m3u8 WebVTT segmentado por idioma de subtítulos, en los mismos límites de segmento que el vídeo.
  • /live/{channel}/manifest.mpd Manifiesto MPEG-DASH sobre los mismos segmentos, para reproductores que lo prefieren.
  • /dvr/{channel}/{from}/{to}.m3u8 Ventana de recuperación y reinicio como una lista de reproducción VOD, con el complemento de DVR en la nube.
  • /licence/{widevine|playready|fairplay} Puntos finales de licencia, uno por sistema DRM, llamados con el token que emite su plataforma.
/05

Audio, subtítulos y metadatos

Un canal mantiene lo que envía el broadcaster. Cada pista de audio presente en la captura se codifica y publica como su propia versión con una etiqueta de idioma, un rol y una bandera por defecto, en lugar de ser remuxada a un solo idioma para ahorrar bitrate. Donde la fuente lleva descripción de audio o una pista en idioma original, esa también llega como una versión seleccionable.

Los subtítulos se convierten en lugar de ser eliminados. Los subtítulos DVB y las páginas de teletexto se convierten en WebVTT segmentado para HLS e IMSC1 para DASH, y los subtítulos CEA-608/708 llevados dentro del vídeo se transmiten también en banda, porque algunos dispositivos certificados solo renderizan esos. Cuál de los tres tiene un canal dado depende de lo que transmite el broadcaster, y lo indicamos por canal.

Los metadatos del programa provienen de la misma guía que sirve el feed EPG: 14 días hacia adelante y 7 días hacia atrás, en hasta 9 idiomas, como XMLTV o como JSON a través de REST. La sincronización de segmentos está vinculada a esto por EXT-X-PROGRAM-DATE-TIME, que es lo que hace que una solicitud de reinicio caiga en un límite de programa en lugar de en un límite de segmento.

  • Una versión de audio por idioma, AAC-LC estéreo a 128 kbps, etiquetada por idioma
  • Conversión de subtítulos DVB y teletexto a WebVTT para HLS e IMSC1 para DASH
  • CEA-608/708 transmitido en banda para los dispositivos que lo necesitan
  • EXT-X-PROGRAM-DATE-TIME en cada segmento, preciso al tiempo del reloj
  • EPG en hasta 9 idiomas, XMLTV o JSON, desde EUR 9 por canal
  • Marcadores SCTE-35 preservados a petición, para los canales cuya fuente los lleva
/06

DRM, tokens y CORS

El DRM se aplica en el empaquetador en lugar de añadirse después. Los mismos segmentos CMAF se cifran para CENC (Widevine, PlayReady) y para CBCS (FairPlay). Las claves rotan en el período que elija, y las licencias son emitidas por nuestro propio servidor de licencias; no hay contrato de DRM de terceros en medio.

El derecho de acceso sigue siendo suyo. Su reproductor presenta el token que su plataforma ya emite a sus suscriptores, o llamamos a su punto final de autorización antes de emitir una licencia. La política de reproducción, protección de salida, nivel HDCP, territorio y flujos concurrentes se establece por canal y se aplica al emitir la licencia, no solo en el manifiesto.

El acceso al manifiesto en sí es un asunto separado del DRM, y se aplica también a canales claros. Soportamos un token de corta duración en la lista de reproducción con un prefijo firmado de mayor duración para los segmentos, URLs firmadas simples, o mTLS entre su CDN y nuestro origen. Los TTL, la rotación de secretos y la lista de permitidos de CORS se establecen por cliente: a diferencia de la escalera, no hay un valor por defecto que publiquemos, porque un valor sensato depende de si su reproductor renueva a mitad de sesión.

  • Widevine (L1/L3), PlayReady (SL2000/SL3000) y FairPlay Streaming
  • CENC y CBCS de un solo paso de empaquetado CMAF
  • Rotación de claves por canal y por período
  • Licencia emitida contra su token, o a través de una llamada a su API de derechos
  • Cifrado HLS AES-128 donde un titular de derechos solicita cifrado en lugar de DRM
  • Access-Control-Allow-Origin restringido a los orígenes de la aplicación que usted nombre
  • Política geográfica aplicada en el borde y en la emisión de licencias, por canal
/07

Orígenes, conmutación por error y reproductores

Cada canal se empaqueta en dos sitios principales, de forma independiente, a partir de dos capturas. Ambos publican el mismo espacio de URL, por lo que una conmutación por error no es un reprovisionamiento: el segundo origen responde a las mismas rutas con los mismos nombres de segmento y las mismas claves, y un reproductor que recarga una lista de reproducción simplemente se sirve desde otro lugar.

En nuestra CDN, el cambio ocurre bajo la entrada anycast y se dirige al núcleo que sea accesible, con protección de origen para que un segmento se obtenga una vez por borde. Si ejecuta su propia CDN, configura ambos nombres de host de origen como un grupo primario y de conmutación por error: los nombres de segmento coinciden, por lo que una caché llena desde un origen permanece válida frente al otro.

Para los reproductores que lo soportan, también podemos publicar flujos de variantes redundantes dentro de la lista de reproducción multivariada, apuntando al segundo origen. Es la opción de cinturón y tirantes: no cuesta nada, pero duplica la lista de variantes, por lo que está desactivada a menos que lo solicite.

NavegadoresHLS nativo en Safari, hls.js 1.x en otros lugares, Shaka Player para DASH
AppleAVPlayer en iOS, iPadOS y tvOS; HLS nativo con FairPlay.
AndroidExoPlayer / Media3 en teléfonos, tabletas, Android TV, Google TV y Fire TV, con Widevine
Smart TVSamsung Tizen y LG webOS a través de AVPlay, con PlayReady o Widevine dependiendo del año del modelo
DecodificadoresCualquier caja con un cliente HLS o DASH; nuestras aplicaciones de marca blanca cubren Tizen, webOS, Android TV, Apple TV y Roku
Reproductores comercialesNo se requiere nada propietario: THEOplayer, JW Player, Bitmovin y Video.js reproducen estos manifiestos con su configuración estándar
/08

Cómo pedirlo

HLS / DASH adaptativo es una línea de entrega en lugar de un proyecto: EUR 200 por canal al mes, sin tarifa de configuración. MultiDRM a EUR 19, DVR en la nube a EUR 29, reinicio a EUR 15 y el feed EPG a EUR 9 también son por canal al mes, por lo que un nivel de upsell solo le cuesta en los canales que realmente lo venda.

Los descuentos por volumen comienzan en diez canales y alcanzan el 20%; un plazo de 12 meses reduce un 10% adicional, 24 meses un 15%. Ambos se aplican por el propio pedido, por lo que la tarifa y la factura coinciden. La salida en nuestra CDN se mide a EUR 0.09 por GB sin compromiso y sin mínimo, y no se cobra en absoluto cuando sirve desde su propia.

Los manifiestos se emiten en un máximo de 12 horas una vez que se confirman los derechos para su territorio y plataforma, claves DRM incluidas. Antes de eso, la prueba gratuita de tres días emite un manifiesto HLS / DASH y un endpoint SRT para el mismo canal, a plena tasa de bits con la guía real, sin tarjeta.

/09

Preguntas que los ingenieros hacen primero

¿A qué apuntamos exactamente con nuestro reproductor?

Una URL de lista de reproducción multivariada por canal. Cada variante, cada idioma de audio y cada pista de subtítulos están descritos dentro de ella, por lo que la configuración de tu aplicación es esa URL más, donde se habilita DRM, el endpoint de licencia y tu token. No hay nada más que construir.

¿Ofrecen HLS de baja latencia?

Sí, por canal, utilizando EXT-X-PART y bloqueando la recarga de la lista de reproducción. No publicamos deliberadamente una cifra de latencia objetivo para toda la plataforma, porque depende de la fuente del propio canal: indícanos qué canales son importantes, los medimos y declaramos el número que mantendremos, junto con los 4 a 8 segundos que el HLS estándar ya te proporciona.

¿Podemos usar nuestro propio CDN?

Sí. Obtienes los mismos manifiestos a través de HTTPS desde nuestro origen con token, URL firmada o autenticación mTLS, y protegemos el origen para que tu CDN obtenga cada segmento una sola vez. La nomenclatura de segmentos y Cache-Control están documentados para tu configuración, el empaquetado y el DRM son idénticos, y no hay línea de salida de nuestra parte en absoluto.

¿Qué sistemas DRM y de quién es el servidor de licencias?

Widevine, PlayReady y FairPlay, desde nuestro propio servidor de licencias, como complemento MultiDRM a EUR 19 por canal al mes. Si ya tienes un servidor de licencias, podemos empaquetar contra tus claves en su lugar y cobrar solo por el empaquetado.

¿Cómo llegan realmente los subtítulos que envía el broadcaster?

Como WebVTT segmentado para HLS e IMSC1 para DASH, convertidos de la página de subtítulos DVB o teletexto en la fuente, con CEA-608/708 transmitido también en banda. Lo que un canal determinado lleva depende de lo que se transmite, por lo que lo declaramos por canal en lugar de prometer los tres en todas partes.

¿Podemos tomar HLS / DASH y SRT para el mismo canal?

Sí, y muchos clientes lo hacen: SRT en el headend, HLS / DASH adaptativo para las aplicaciones. Ambos se facturan por canal al mes: EUR 150 por SRT y EUR 200 por HLS / DASH adaptativo, y la prueba gratuita envía ambas transferencias para el mismo canal para que ambos equipos puedan probar al mismo tiempo.