O HTTP Live Streaming (HLS) é um protocolo de streaming de vídeo ao vivo com taxa de bits adaptável que permite o streaming de conteúdo de vídeo de alta qualidade. A DAI do Ad Manager é compatível com a versão 3 do HLS. Este guia de integração mostra os requisitos e as recomendações para usar HLS.
Confira quais recursos são compatíveis com programas ao vivo e de vídeo on demandRecurso | Linear ao vivo | Vídeo on demand (VOD, na sigla em inglês) |
---|---|---|
EXTINF |
||
EXT-X-DATERANGE > SCTE35-IN |
— | |
EXT-X-DATERANGE > SCTE35-OUT |
— | |
EXT-X-DISCONTINUITY |
||
EXT-X-DISCONTINUITY-SEQUENCE |
— | |
EXT-X-ENDLIST |
* | |
EXT-X-I-FRAME-STREAM-INF |
||
EXT-X-I-FRAMES-ONLY |
||
EXT-X-INDEPENDENT-SEGMENTS |
||
EXT-X-KEY |
||
EXT-X-MEDIA (grupos de versões) |
||
EXT-X-MEDIA-SEQUENCE |
— | |
EXT-X-PLAYLIST-TYPE |
||
EXT-X-PROGRAM-DATE-TIME |
||
EXT-X-STREAM-INF > AUDIO |
||
EXT-X-STREAM-INF > AVERAGE-BANDWIDTH |
||
EXT-X-STREAM-INF > BANDWIDTH |
||
EXT-X-STREAM-INF > CLOSED CAPTIONS |
||
EXT-X-STREAM-INF > CODECS |
||
EXT-X-STREAM-INF > FRAMERATE |
||
EXT-X-STREAM-INF > RESOLUTION |
||
EXT-X-STREAM-INF > SUBTITLES |
||
EXT-X-STREAM-INF > VIDEO |
||
EXT-X-TARGETDURATION |
||
EXT-X-VERSION |
* Compatível com transmissões ao vivo apenas para playlists do tipo EVENTO.
Acessar seções específicas
- Playlists e grupos de versões
- Codecs e resolução
- Duração do segmento e Alinhamento da marcação de tempo
- Descontinuidade
- Criptografia de mídia
Playlists e grupos de versões
Use a codificação de conteúdo GZIP (recomendado) para playlists. As variantes nos segmentos e nas playlists principais podem usar URLs absolutos ou relativos.
Todos os recursos do anúncio são transcodificados para incluir playlists I-FRAME, incluindo barreiras. A DAI do Ad Manager não gera playlists I-FRAME a partir do conteúdo nem gera novos grupos de versões com base nas combinações de áudio/vídeo.
- Para lineares ao vivo: se necessário, as playlists I-FRAME precisam ser geradas e condicionadas pelo codificador/empacotador. Os grupos de versões serão entregues conforme forem gerados pelo codificador de conteúdo ao vivo.
- Para vídeos on demand (VOD): se necessário, as playlists I-FRAME vão precisar ser fornecidas no manifesto principal durante o processamento. O Ad Manager gerará um erro somente se o arquivo de playlist I-FRAME fornecido não puder ser acessado ou analisado. Os grupos de versões serão entregues conforme forem fornecidos no manifesto principal.
Codecs e resolução
As playlists principais de HLS para os recursos de transmissão ao vivo e vídeo on demand (VOD) precisam ter os atributos opcionais CODECS
e RESOLUTION
. Esses atributos são usados para encontrar anúncios adequados que correspondam a essas configurações de codificação. Se esses valores não forem fornecidos, os anúncios serão correspondidos com base apenas na largura de banda, o que poderá resultar em uma incompatibilidade de resolução e de codecs entre o anúncio e o conteúdo. Isso pode prejudicar a experiência do usuário, além de causar problemas de reprodução em dispositivos diferentes.
O atributo CODECS
precisa ter os codecs de áudio e vídeo. Seu codificador pode adicionar (ou remover) variantes ao URL da playlist master a qualquer momento.
Codecs de áudio
A DAI é compatível com o codec de áudio AAC e com os codecs AC-3 e E-AC-3.
CODECS
e RESOLUTION
.É necessário garantir que o codificador está configurado para manter os URLs consistentes em cada URL de variante. Isso evita problemas de execução para seus usuários.
Exemplo
Uma playlist master com CODECS e RESOLUTION
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=694272,CODECS="avc1.77.41,mp4a.40.2",RESOLUTION=768x432
chunklist_b694272.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=202752,CODECS="avc1.66.31,mp4a.40.2",RESOLUTION=480x270
Chunklist_b202752.m3u8
Duração de segmento
As playlists de mídia HLS precisam ter durações de segmento de mídia declaradas na forma de números com ponto decimal flutuante. A duração deve ter o ponto flutuante preciso para ajudar a determinar o momento exato em que um intervalo de anúncio começará e terminará. Valores menos precisos de duração fazem com que o sistema tenha menor precisão ao determinar quando ocorrem os intervalos comerciais no stream resultante.
Exemplo
Uma playlist de mídia com #EXTINF
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:26
#EXTINF:9.901,
http://media.example.com/wifi/segment26.ts
#EXTINF:9.901,
http://media.example.com/wifi/segment27.ts
#EXTINF:9.501,
http://media.example.com/wifi/segment28.ts
Alinhamento de carimbo de data/hora
O timestamp de apresentação (PTS, na sigla em inglês) em segmentos nas playlists de mídia de variante precisam estar alinhados. P-frame e B-frame fazem referência de outros frames para a decodificação de um frame. Para uma melhor compactação, o codec H.264 também faz referência a frames que não são adjacentes. Como esses frames dependem de outros para a decodificação e apresentação, o timestamp de decodificação (DTS, na sigla em inglês) fornece a sequência em que os frames são decodificados, e o PTS fornece a sequência em que os frames são apresentados. O alinhamento do PTS é importante quando você se adapta a diferentes taxas de bits durante a reprodução de um recurso. A inserção de anúncios usa o PTS para encontrar a posição dela.
Descontinuidade
Qualquer EXT-X-DISCONTINUITY
na playlist de mídia precisa ter EXT-X-DISCONTINUITY-SEQUENCE
. A tag EXT‑X‑DISCONTINUITY‑SEQUENCE
permite a sincronização entre diferentes versões do mesmo stream de variante ou de streams de variantes diferentes.
Criptografia de mídia
Caso você queira criptografar o conteúdo de mídia, faça isso com:
- AES-128 (criptografa o segmento inteiro)
- SAMPLE-AES (criptografa mídias individuais, como áudio ou vídeo)
- SAMPLE-AES-CTR.
A DAI do Ad Manager é compatível com a tecnologia DRM para streams HLS que usam FairPlay e outros DRMs com CMAF/MP4 fragmentado.
Exemplo
Uma playlist de mídia com #EXT-X-KEY
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:26
#EXT-X-KEY:METHOD=AES-128,URI="https://media.example.com/asset/key1.php?id=<signature>",IV=<initialization vector>
#EXTINF:9.901,
http://media.example.com/wifi/segment26.ts
#EXTINF:9.901,
http://media.example.com/wifi/segment27.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://media.example.com/asset/key2.php?id=<signature>"
#EXTINF:9.501,
http://media.example.com/wifi/segment28.ts