O que é streaming com taxa de bits adaptativa?

O streaming com taxa de bits adaptativa oferece várias versões codificadas do mesmo conteúdo. O reprodutor alterna entre elas conforme a largura de banda, o estado do buffer e a capacidade do dispositivo durante a reprodução.

Um vídeo de origem
O reprodutor solicita uma versão por segmento
A escala é codificada e empacotada antes que seus segmentos sejam solicitados. Durante a reprodução, o reprodutor escolhe uma representação para cada solicitação de segmento com base em suas próprias medições, portanto o servidor não transcodifica para cada espectador.

Como o streaming com taxa de bits adaptativa funciona

O streaming adaptativo divide versões alinhadas no tempo em segmentos de mídia endereçáveis e os descreve em um manifesto: uma playlist no HLS, um documento XML chamado MPD no MPEG-DASH. O reprodutor escolhe uma versão para as próximas solicitações de segmentos com base em sinais como a vazão medida e a mídia armazenada no buffer, portanto a alternância é uma decisão de distribuição do lado do cliente, não uma transcodificação no servidor durante o fluxo. Ambos os protocolos podem transportar segmentos MP4 fragmentados, o que permite que o empacotamento CMAF disponibilize um único conjunto de arquivos de mídia sob ambos os manifestos.

Informações essenciais

  1. A alternância sem interrupções é definida no momento da codificação e do empacotamento. A RFC 8216 exige que o conteúdo correspondente em cada variante HLS tenha marcações de tempo correspondentes, e a especificação de autoria da Apple exige que cada segmento de vídeo comece com um quadro IDR e recomenda limites de segmentos nos mesmos pontos no tempo entre as variantes. O perfil de interoperabilidade do DASH-IF também inicia cada segmento com um ponto de acesso semelhante a um IDR e alinha os limites dos segmentos dentro de um Adaptation Set.
  2. O algoritmo de alternância pertence ao reprodutor, não ao protocolo: a RFC 8216 o coloca fora de seu escopo, portanto um mesmo fluxo pode se comportar de forma diferente entre reprodutores. No hls.js, por exemplo, as configurações padrão exigem uma margem de largura de banda maior para subir de nível (abrBandWidthUpFactor) do que para manter ou reduzir um nível (abrBandWidthFactor), e limitar a qualidade às dimensões do elemento de vídeo ou reagir a quadros descartados só ocorre quando capLevelToPlayerSize ou capLevelOnFPSDrop está ativado; ambos ficam desativados por padrão.
  3. A qualidade inicial depende da ordem da playlist e das configurações do reprodutor. A especificação da Apple trata a primeira variante listada na playlist multivariante dentro de cada grupo de variantes com áudio compatível como o padrão desse grupo. No hls.js, deixar startLevel sem definição não fixa a reprodução no primeiro nível listado, embora partes da documentação da API afirmem que sim: o código-fonte da v1.6.13 escolhe o nível inicial a partir de uma estimativa de largura de banda, que a taxa de bits da primeira variante listada pode elevar, portanto a ordem da playlist influencia o início sem fixá-lo. Com startLevel definido como -1, o hls.js, por padrão, baixa um fragmento do nível mais baixo para estimar a largura de banda antes de escolher.
  4. O espaçamento entre os níveis da escala depende do conteúdo, e as taxas declaradas precisam ser precisas. A Apple apresenta suas tabelas de taxas de bits como referências iniciais a serem avaliadas com seu próprio conteúdo, e o trabalho da Netflix por título constatou que uma escala fixa gasta mais bits do que os títulos simples precisam, enquanto deixa artefatos nos complexos; seu objetivo declarado é separar níveis adjacentes por cerca de uma diferença mínima perceptível, para manter as alternâncias suaves com o menor número de representações. No HLS, a RFC 8216 alerta que um BANDWIDTH impreciso pode causar interrupções ou impedir a reprodução de uma variante.

Quando o streaming com taxa de bits adaptativa é relevante

Disponibilize uma escala de taxas de bits quando mudanças nas condições da rede causariam interrupções sem ela. Representações mal espaçadas podem desperdiçar armazenamento ou forçar quedas visíveis de qualidade sem melhorar significativamente a continuidade.

Como a Transloadit ajuda com streaming com taxa de bits adaptativa

O Robot /video/adaptive da Transloadit empacota versões codificadas em saídas HLS, MPEG-DASH ou CMAF e gera os arquivos de playlist e manifesto; com technique definido como cmaf, os manifestos DASH e HLS fazem referência aos mesmos segmentos fMP4. As versões normalmente vêm de Steps que usam /video/encode com as predefinições hls/ ou dash/ e são reunidas em um único Step que usa /video/adaptive.

A Transloadit prepara os arquivos; a escolha de uma versão durante a reprodução é feita pelo reprodutor que você usa. A documentação do Robot também descreve como forçar quadros-chave correspondentes em cada Step que usa /video/encode para que os segmentos fiquem alinhados entre as versões, quais cabeçalhos CORS configurar no seu servidor de arquivos (necessários quando o reprodutor carrega os arquivos de outra origem) e quais metadados relative_path usar ao armazenar os segmentos para que as referências das playlists sejam resolvidas.

Explore os recursos de transmissão de mídia da Transloadit

Fontes

Transforme conhecimento sobre mídia em um pipeline funcional

Conecte uploads, processamento, IA, armazenamento e entrega por meio de uma única API declarativa, com o stack de codificação, o ajuste de escala e as constantes mudanças de formatos gerenciados para você.

Experimente a Transloadit gratuitamente