O HTTP Live Streaming (HLS) é um protocolo de stream em direto de taxa de bits adaptável que permite o streaming de conteúdo de vídeo de alta qualidade. A DAI para o Ad Manager suporta a versão 3 do HLS. Este guia de integração explica detalhadamente os requisitos e as recomendações de utilização do HLS.
Veja que funcionalidades são suportadas para conteúdo em direto e de vídeo a pedidoFuncionalidade | Linear em direto | Vídeo a pedido (VOD) |
---|---|---|
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 rendição) |
||
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 |
* Suportado apenas em streams em direto de playlists do tipo EVENT.
Avance para uma secção específica
- Playlists e grupos de rendição
- Codecs e resolução
- Duração do segmento e alinhamento da data/hora
- Descontinuidade
- Encriptação de multimédia
Playlists e grupos de rendição
Forneça listas de reprodução através da codificação de conteúdos GZIP (recomendado). As variantes nas listas de reprodução principais e nos segmentos podem utilizar URLs absolutos ou URLs relativos.
Todos os recursos de anúncios são transcodificados para incluírem listas de reprodução I-FRAME, nomeadamente faixas. A DAI do Ad Manager não gera playlists I-FRAME a partir de conteúdos, nem gera novos grupos de rendição com base em combinações de vídeo/áudio.
- Para transmissões lineares em direto: se necessário, as playlists I-FRAME têm de ser geradas e condicionadas pelo codificador/empacotador. Os grupos de rendição são disponibilizados à medida que são gerados a partir do codificador Em direto.
- Para vídeo a pedido (VOD): se necessário, as playlists I-FRAME têm de ser fornecidas no manifesto principal aquando do carregamento. O Ad Manager apenas apresentará um erro se não for possível aceder ou analisar o ficheiro de lista de reprodução I-FRAME fornecido. Os grupos de rendição são disponibilizados à medida que são fornecidos no manifesto principal.
Codecs e resolução
As playlists principais do HLS para streams em direto e recursos de vídeo a pedido (VOD) têm de incluir os atributos opcionais CODECS
e RESOLUTION
. Estes atributos são usados para encontrar anúncios adequados que correspondam a estas definições de codificação. Se estes valores não forem fornecidos, os anúncios são correspondidos com base apenas na largura de banda, o que pode resultar numa não correspondência de resolução e de codecs entre o anúncio e o conteúdo. Isto pode dar origem a uma má experiência do utilizador e a problemas de reprodução em diferentes dispositivos.
O atributo CODECS
tem de incluir os codecs de áudio e vídeo. O codificador pode adicionar ou remover variantes do URL da playlist principal em qualquer altura.
Codecs de áudio
A DAI suporta o codec de áudio AAC, bem como os codecs AC-3 e E-AC-3.
CODECS
e RESOLUTION
.Deve assegurar que o codificador está configurado para manter URLs consistentes para cada URL de variante de modo a evitar problemas de reprodução para os utilizadores.
Exemplo
Playlist principal 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 dos segmentos
As playlists de multimédia HLS precisam de durações de segmentos de multimédia declaradas como números decimais de vírgula flutuante. A duração deve ter vírgulas flutuantes precisas para ajudar a determinar a hora precisa de início e fim de uma pausa para anúncios. Quanto menos precisos forem os valores de duração, menos precisão terá o sistema para determinar quando ocorrem as pausas para anúncios no stream resultante.
Exemplo
Playlist de multimé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 da data/hora
A Data/hora de apresentação (PTS) nos segmentos nas listas de reprodução de multimédia de variantes tem de estar alinhada. O P-frame e o B-frame referem-se a outros frames para descodificar um frame. O codec H.264 também referencia frames não adjacentes para uma melhor compressão. Uma vez que estes frames dependem de outros frames para descodificação e apresentação, a Data/hora de descodificação (DTS) dá a sequência pela qual os frames são descodificados e o PTS dá a sequência pela qual os frames são apresentados. O alinhamento do PTS é importante para a adaptação 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 da inserção de anúncios.
Descontinuidade
Qualquer EXT-X-DISCONTINUITY
na playlist de multimédia precisa da etiqueta EXT-X-DISCONTINUITY-SEQUENCE
. A etiqueta EXT‑X‑DISCONTINUITY‑SEQUENCE
permite fazer a sincronização entre diferentes rendições da mesma stream de variantes ou diferentes streams de variantes.
Encriptação de multimédia
Se quiser encriptar o conteúdo multimédia, este tem de ser encriptado com:
- AES-128 (encripta todo o segmento)
- SAMPLE-AES (encripta conteúdo multimédia individual, como áudio ou vídeo)
- SAMPLE-AES-CTR.
A DAI do Ad Manager suporta a tecnologia DRM para streams HLS com FairPlay e outras DRMs com CMAF/MP4 fragmentado.
Exemplo
Playlist de multimé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