Entrega HLS / DASH: a escada exata, embalagem e manifesto que obtém

Esta página é a especificação em vez da proposta. Tudo abaixo é o que um canal na linha HLS / DASH adaptativa realmente produz: o recipiente, a escada, a estrutura do manifesto, as faixas de áudio e legendas, o DRM, a autenticação de origem e o comportamento de failover. Essas são as coisas que um integrador verifica antes de assinar, na ordem em que são solicitadas.

POR CANAL / MÊS EUR 200
VIDRO A VIDRO 4 - 8 s
DEGRAUS DA ESCADA 4
PONTOS DE PRESENÇA 195
/01

Da fonte ao manifesto

Cada canal é capturado uma vez, no site central mais próximo da sua fonte: um downlink de satélite, um feed de contribuição de emissora, ou uma playout que executamos. O stream de transporte é normalizado lá; a taxa de frames, o volume de áudio e o relógio são regularizados antes de qualquer codificação, porque uma fonte irregular é o que quebra uma escada, não a falta de bitrate.

Uma transcodificação produz toda a escada. Todos os quatro degraus partilham uma estrutura GOP e uma cadência IDR alinhada à fronteira do segmento, o que permite que um player mude de degrau entre segmentos sem um corte visível ou uma falha de áudio. O áudio é codificado uma vez por língua e referenciado por cada degrau, de modo que uma troca de vídeo nunca rebufferiza o som.

A embalagem é uma única passagem CMAF: os mesmos segmentos MP4 fragmentados são descritos por uma playlist multivariada HLS e por um manifesto MPEG-DASH. Não há uma segunda codificação e não há uma segunda cópia em disco para DASH, razão pela qual ambos os manifestos vêm com cada canal sem custo adicional.

Do empacotador, os segmentos são publicados na origem no site central e servidos a partir da borda de entrega mais próxima do visualizador. A embalagem, a encriptação e a gravação ocorrem todas no núcleo; as bordas apenas armazenam em cache. Essa é a fronteira a ter em mente ao ler a seção de failover: uma borda é substituível a qualquer momento, uma origem é um par.

/02

A escada adaptativa

DegrauResoluçãoFPSBitrate de vídeoPerfil de codec
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

A escada acima é o padrão para um canal HD de taxa total, requisitos especiais são possíveis. Os degraus têm bitrate constante limitado em vez de VBR aberto, de modo que uma cena movimentada não pode fazer um visualizador móvel sair do degrau superior, e um operador ou uma propriedade pode dimensionar um link a partir da tabela em vez de a partir de uma média.

Não é fixo por decreto. Um canal destinado a cabines ou uplinks finos pode ser reduzido aos dois degraus inferiores, e onde cada dispositivo alvo é conhecido por decodificá-lo, um degrau superior HEVC pode ser adicionado ao lado do H.264. Pergunte por canal e nós indicamos a escada na nota de entrega.

O áudio adiciona 128 kbps por língua em cima de qualquer degrau de vídeo que esteja a tocar, e legendas alguns kbps a mais. Um visualizador no degrau superior com uma única faixa de áudio é, portanto, cerca de 4.1 Mbps, não 4.

/03

Especificação de embalagem e entrega

ContentorCMAF (fMP4), um conjunto de segmentos por trás de ambos os manifestos; segmentos MPEG-TS a pedido
ManifestosHLS (EXT-X-VERSION 7 ou superior) e MPEG-DASH (MPD dinâmico), de um empacotador
Codec de vídeoH.264 High e Main, 8-bit 4:2:0; um degrau superior HEVC por canal a pedido
Codec de áudioAAC-LC estéreo a 128 kbps por língua; E-AC-3 de origem transportado onde o detentor dos direitos e os dispositivos de destino o permitirem
Segmentos4 s por defeito, 2 s a pedido; alinhamento IDR em cada degrau
Janela ao vivo3 minutos de segmentos em cada lista de reprodução de media, EXT-X-PROGRAM-DATE-TIME em cada segmento
Latência4 - 8 s de vidro a vidro em HLS padrão com segmentos de 4 s
Baixa latênciaLL-HLS com EXT-X-PART e recarregamento de lista de reprodução bloqueante, ativado por canal; a duração da parte e a latência alvo resultante são acordadas com a própria fonte do canal em vez de serem citadas genericamente
DiferidoAdicional Cloud DVR: uma janela móvel de 7 dias endereçável como uma lista de reprodução VOD, 30 dias a pedido
DRMWidevine e PlayReady (CENC) e FairPlay (CBCS) do nosso próprio servidor de licenças, EUR 19 por canal por mês
Autenticação de origemToken, URL assinada ou mTLS, com uma lista de permissões CORS por cliente
OrigensDois sites principais por canal a partir de 6, 99.99% disponibilidade de origem
Entrega195 pontos de presença em 121 países, ou a sua própria CDN a puxar a nossa origem
Tráfego de saídaEUR 0.09 por GB na nossa CDN, nada medido na sua
/04

O espaço de URL

Os endpoints são emitidos por cliente contra um nome de domínio nosso, ou contra o seu próprio onde você coloca a origem com a sua CDN. O slug do canal é o que está no catálogo, portanto, uma URL de manifesto pode ser construída a partir de uma encomenda sem nos pedir uma lista.

Tudo abaixo da lista de reprodução multivariada é descobrível a partir dela; você nunca tem que construir um degrau, URL de áudio ou de legendas você mesmo. Os caminhos estão documentados porque os integradores precisam deles para regras de cache, regras de WAF e análise de logs, não porque um player o faz.

  • /live/{channel}/master.m3u8 Playlist multivariada: cada rampa de vídeo, cada versão de áudio, cada grupo de legendas.
  • /live/{channel}/{rung}/index.m3u8 Playlist de media por rampa: segmento de inicialização fMP4, seguido da janela de transmissão ao vivo deslizante.
  • /live/{channel}/audio/{lang}.m3u8 Versão de áudio por língua, referenciada a partir da playlist multivariada por EXT-X-MEDIA.
  • /live/{channel}/text/{lang}.m3u8 WebVTT segmentado por língua de legendas, nos mesmos limites de segmento que o vídeo.
  • /live/{channel}/manifest.mpd Manifesto MPEG-DASH sobre os mesmos segmentos, para players que o preferem.
  • /dvr/{channel}/{from}/{to}.m3u8 Janela de recuperação e reinício como uma playlist VOD, com o complemento de DVR na nuvem.
  • /licence/{widevine|playready|fairplay} Pontos finais de licença, um por sistema DRM, chamados com o token que a sua plataforma emite.
/05

Áudio, legendas e metadados

Um canal mantém o que o broadcaster envia. Cada faixa de áudio presente na captura é codificada e publicada como a sua própria versão com uma etiqueta de língua, um papel e uma flag de padrão, em vez de ser remuxada para uma única língua para economizar bitrate. Quando a fonte contém descrição de áudio ou uma faixa na língua original, essa também chega como uma versão selecionável.

As legendas são convertidas em vez de descartadas. Legendas DVB e páginas de teletexto tornam-se WebVTT segmentado para HLS e IMSC1 para DASH, e as legendas CEA-608/708 transportadas dentro do vídeo são passadas através do canal, porque alguns dispositivos certificados apenas renderizam essas. Qual dos três um determinado canal possui depende do que o broadcaster transmite, e nós declaramos isso por canal.

Os metadados do programa vêm do mesmo guia que o feed EPG serve: 14 dias para a frente e 7 dias para trás, em até 9 línguas, como XMLTV ou como JSON sobre REST. O tempo de segmento está ligado a isso por EXT-X-PROGRAM-DATE-TIME, que é o que faz um pedido de reinício cair numa fronteira de programa em vez de numa fronteira de segmento.

  • Uma versão de áudio por língua, AAC-LC estéreo a 128 kbps, etiquetada por língua
  • Conversão de legendas DVB e teletexto para WebVTT para HLS e IMSC1 para DASH
  • CEA-608/708 passadas através do canal para os dispositivos que precisam delas
  • EXT-X-PROGRAM-DATE-TIME em cada segmento, preciso ao tempo do relógio
  • EPG em até 9 línguas, XMLTV ou JSON, a partir de EUR 9 por canal
  • Marcadores SCTE-35 preservados a pedido, para os canais cuja fonte os transporta
/06

DRM, tokens e CORS

O DRM é aplicado no empacotador em vez de ser adicionado depois. Os mesmos segmentos CMAF são encriptados para CENC (Widevine, PlayReady) e para CBCS (FairPlay); as chaves rodam no período que você escolher, e as licenças são emitidas pelo nosso próprio servidor de licenças, não há contrato de DRM de terceiros no meio.

O direito permanece seu. O seu player apresenta o token que a sua plataforma já emite aos seus assinantes, ou chamamos o seu ponto final de autorização antes de emitir uma licença. A política de reprodução, proteção de saída, nível HDCP, território, streams concorrentes, é definida por canal e aplicada na emissão da licença, não apenas no manifesto.

O acesso ao próprio manifesto é uma questão separada do DRM, e aplica-se também a canais claros. Suportamos um token de curta duração na playlist com um prefixo assinado de longa duração para os segmentos, URLs simples assinadas, ou mTLS entre o seu CDN e a nossa origem. Os TTLs, a rotação de segredos e a lista de permissões CORS são definidas por cliente: ao contrário da escada, não há um padrão que publicamos, porque um valor sensato depende de se o seu player renova no meio da sessão.

  • Widevine (L1/L3), PlayReady (SL2000/SL3000) e FairPlay Streaming
  • CENC e CBCS a partir de uma única passagem de empacotamento CMAF
  • Rotação de chaves por canal e por período
  • Licença emitida contra o seu token, ou através de um callback à sua API de direitos
  • Criptografia HLS AES-128 onde um detentor de direitos pede criptografia em vez de DRM
  • Access-Control-Allow-Origin restrito às origens da aplicação que você nomeia
  • Política geográfica aplicada na borda e na emissão da licença, por canal
/07

Origens, failover e players

Cada canal é empacotado em dois sites centrais, de forma independente, a partir de duas capturas. Ambos publicam o mesmo espaço de URL, portanto um failover não é uma nova provisão: a segunda origem responde aos mesmos caminhos com os mesmos nomes de segmento e as mesmas chaves, e um player que recarrega uma lista de reprodução é simplesmente servido de outro lugar.

Na nossa CDN, a mudança acontece sob a entrada anycast e as bordas vão para o núcleo que for acessível, com proteção de origem para que um segmento seja buscado uma vez por borda. Se você executar a sua própria CDN, configura ambos os nomes de host de origem como um pool primário e um de failover; os nomes dos segmentos coincidem, portanto um cache preenchido a partir de uma origem permanece válido em relação à outra.

Para players que o suportam, também podemos publicar streams variantes redundantes dentro da lista de reprodução multivariada, apontando para a segunda origem. É a opção de cinto e suspensórios: não custa nada, mas duplica a lista de variantes, portanto está desativada a menos que você a solicite.

NavegadoresHLS nativo no Safari, hls.js 1.x em outros, Shaka Player para DASH
AppleAVPlayer no iOS, iPadOS e tvOS: HLS nativo com FairPlay.
AndroidExoPlayer / Media3 em telemóveis, tablets, Android TV, Google TV e Fire TV, com Widevine
Smart TVSamsung Tizen e LG webOS através do AVPlay, com PlayReady ou Widevine dependendo do ano do modelo
Set-top boxesQualquer box com um cliente HLS ou DASH; as nossas aplicações de marca branca cobrem Tizen, webOS, Android TV, Apple TV e Roku
Players comerciaisNada proprietário é necessário: THEOplayer, JW Player, Bitmovin e Video.js reproduzem estes manifests com a sua configuração padrão
/08

Como encomendar

HLS / DASH adaptativo é uma linha de entrega em vez de um projeto: EUR 200 por canal por mês, sem taxa de configuração. MultiDRM a EUR 19, DVR na nuvem a EUR 29, reinício a EUR 15 e o feed EPG a EUR 9 são todos por canal por mês também, portanto um nível de upsell só custa nos canais que você realmente vende.

Descontos por volume começam em dez canais e chegam a 20%; um termo de 12 meses retira mais 10%, 24 meses 15%. Ambos são aplicados pela própria encomenda, portanto o cartão de tarifas e a fatura concordam. A saída na nossa CDN é medida a EUR 0.09 por GB sem compromisso e sem mínimo, e não é cobrada de todo quando você serve a partir da sua própria.

Os manifests são emitidos em menos de 12 horas uma vez que os direitos para o seu território e plataforma sejam confirmados, chaves DRM incluídas. Antes disso, o teste gratuito de três dias emite um manifest HLS / DASH e um endpoint SRT para o mesmo canal, a plena taxa de bits com o guia real, sem um cartão.

/09

Perguntas que os engenheiros fazem primeiro

Para onde apontamos exatamente o nosso player?

Uma URL de playlist multivariada por canal. Cada nível, cada língua de áudio e cada faixa de legendas estão descritos dentro dela, portanto a configuração da sua aplicação é essa URL mais, onde o DRM está ativado, o endpoint da licença e o seu token. Não há mais nada a construir.

Oferecem HLS de baixa latência?

Sim, por canal, utilizando EXT-X-PART e bloqueio de recarregamento da playlist. Não publicamos deliberadamente um valor de latência-alvo para toda a plataforma, porque depende da própria fonte do canal. Diga-nos quais canais são importantes; nós medimos e declaramos o número que iremos manter, juntamente com os 4 a 8 segundos que o HLS já lhe oferece como padrão.

Podemos usar a nossa própria CDN?

Sim. Você puxa os mesmos manifests via HTTPS da nossa origem com token, URL assinada ou autenticação mTLS, e nós protegemos a origem para que a sua CDN busque cada segmento uma única vez. A nomeação dos segmentos e o Cache-Control estão documentados para a sua configuração, o empacotamento e o DRM são idênticos, e não há linha de saída da nossa parte.

Quais sistemas DRM, e de quem é o servidor de licença?

Widevine, PlayReady e FairPlay, do nosso próprio servidor de licença, como o complemento MultiDRM a EUR 19 por canal por mês. Se você já opera um servidor de licença, podemos empacotar contra as suas chaves em vez disso e cobrar apenas pelo empacotamento.

Como é que as legendas que o broadcaster envia realmente chegam?

Como WebVTT segmentado para HLS e IMSC1 para DASH, convertidas da página de legendas DVB ou teletexto na fonte, com CEA-608/708 também transmitido in-band. O que um determinado canal transporta depende do que é transmitido, por isso declaramos isso por canal em vez de prometer os três em todo o lado.

Podemos usar HLS / DASH e SRT para o mesmo canal?

Sim, e muitos clientes o fazem: SRT para o headend, HLS / DASH adaptativo para as aplicações. Ambos são cobrados por canal por mês: EUR 150 para SRT e EUR 200 para HLS / DASH adaptativo. O teste gratuito inclui ambas as transferências para o mesmo canal, para que ambas as equipas possam testar ao mesmo tempo.