Skip to content

Reprodução por HLS e LL-HLS

Todo stream do Sapsan está disponível de imediato por HLS (fMP4/CMAF) sem configuração extra. Os streams ao vivo recebem por padrão LL-HLS com segmentos parciais.

URL de reprodução

O que URL
Playlist mestre (todas as qualidades) http://server/streaming/v/<stream>/index.m3u8
Playlist de uma única trilha http://server/streaming/v/<stream>/variant/<track>/index.m3u8
Rebobinamento (rewind) http://server/streaming/v/<stream>/rewind/<segundos-atrás>/index.m3u8
Arquivo por tempo absoluto http://server/streaming/v/<stream>/index.m3u8?from=<utc_ms>&to=<utc_ms>

A playlist mestre traz as qualidades com RESOLUTION, FRAME-RATE e CODECS; o áudio vai para grupos rendition (EXT-X-MEDIA). Áudio G.711 (PCMA/PCMU) não é servido por HLS — transcodifique esses streams para AAC primeiro.

LL-HLS

Para os streams ao vivo o Sapsan serve um LL-HLS completo (versão 9 do protocolo):

  • segmentos parciais EXT-X-PART na borda ao vivo e EXT-X-PRELOAD-HINT para a próxima parte;
  • blocking playlist reload: os parâmetros de cliente _HLS_msn e _HLS_part seguram a requisição até aparecer o segmento ou a parte pedida;
  • atualizações delta da playlist: _HLS_skip=YES encurta a playlist com a tag EXT-X-SKIP;
  • EXT-X-RENDITION-REPORT para uma troca de qualidade rápida;
  • PART-HOLD-BACK, CAN-SKIP-UNTIL, HOLD-BACK são calculados automaticamente a partir das durações do segmento e da parte.

O LL-HLS pode ser desativado por cliente com ?llhls=false — a playlist mestre o propaga para todas as URLs das variantes, e o reprodutor recebe um HLS clássico (versão 7).

Tokens nas playlists

Se a reprodução estiver protegida por token, ?token= é acrescentado automaticamente a todas as URLs aninhadas da playlist: variantes, segmentos init, segmentos, partes e preload hints. Ao reprodutor basta abrir a playlist mestre com o token.

Quantidade de segmentos

O comprimento da playlist ao vivo é definido pelo parâmetro segments do stream:

streams:
  - name: tv1
    inputs:
    - udp: {host: 239.0.0.1, port: 5000}
    segments: 6

Diagnóstico

O Sapsan traz embutido um validador de playlists HLS: ele estima a latência esperada e aponta problemas de configuração com códigos como LL-DISABLED, TARGETDURATION-INFLATED, PART-TARGET-LARGE, SPARSE-INDEPENDENT-PARTS (GOP longo demais para o LL-HLS).

Note

TODO: como executar o validador (CLI/API).

O que vem a seguir