Para um feed publicado ou uma transmissão linear, a sua playlist tem de incluir pontos "CUE-OUT" e "CUE-IN" que representem os pontos de junção de inserção de anúncios. Por exemplo:
#EXT-X-CUE-OUT:DURATION=<time>
#EXT-X-CUE-IN
A etiqueta EXT-X-CUE-OUT
representa o ponto de início de junção e EXT-X-CUE-IN
representa o ponto de fim de junção. EXT-X-CUE-OUT
deve terminar com EXT-X-CUE-IN
a indicar o fim da pausa para anúncios. O servidor de anúncios substitui toda a secção entre EXT-X-CUE-OUT
e EXT-X-CUE-IN
com o conteúdo do anúncio de vídeo.
A etiqueta DURATION=<time>
é obrigatória e refere-se à duração aproximada em segundos ou à vírgula flutuante da pausa para anúncios (por outras palavras, a diferença de tempo entre EXT-X-CUE-IN
e EXT-X-CUE-OUT
). Em alternativa, a etiqueta EXT-X-CUE-OUT:<time>
pode ser substituída por #EXT-X-CUE-OUT:DURATION=<time>
.
Pontos de início e de fim de junção
#EXTINF:10,
http://media.example.com/fileSequence7796.ts
#EXTINF:6,
http://media.example.com/fileSequence7797.ts
#EXT-X-CUE-OUT:DURATION=30
#EXTINF:4,
http://media.example.com/fileSequence7798.ts
#EXTINF:10,
http://media.example.com/fileSequence7799.ts
#EXTINF:10,
http://media.example.com/fileSequence7800.ts
#EXTINF:6,
http://media.example.com/fileSequence7801.ts
#EXT-X-CUE-IN
#EXTINF:4,
http://media.example.com/fileSequence7802.ts
#EXTINF:10,
http://media.example.com/fileSequence7803.ts
#EXTINF:3,
http://media.example.com/fileSequence7804.ts
O conteúdo entre OUT
e IN
é substituído pelo servidor de anúncios de DAI com 30 segundos do conteúdo de vídeo do anúncio.
#EXTINF:10,
http://media.example.com/fileSequence7796.ts
#EXTINF:6,
http://media.example.com/fileSequence7797.ts
#EXT-X-CUE-OUT:DURATION=30
#EXTINF:10,
http://ads.example.com/fileSequence0001.ts
#EXTINF:10,
http://ads.example.com/fileSequence0002.ts
#EXTINF:10,
http://ads.example.com/fileSequence0003.ts
#EXT-X-CUE-IN
#EXTINF:4,
http://media.example.com/fileSequence7802.ts
#EXTINF:10,
http://media.example.com/fileSequence7803.ts
#EXTINF:3,
http://media.example.com/fileSequence7804.ts
Encurte uma pausa para anúncios
Para terminar uma pausa para anúncio antecipadamente, o codificador deve enviar uma etiqueta "CUE-IN" na stream para indicar que as streams DAI (Inserção de anúncios dinâmicos) devem terminar imediatamente a pausa para anúncios e começar a mostrar novamente o conteúdo não processado.
Tenha em atenção que, se uma pausa para anúncios terminar mais cedo, o monitor de atividade de stream continua a refletir os valores originais de "Duração da pausa para anúncios", "Duração dos anúncios preenchidos" e "Duração dos anúncios publicados".
Crie uma pausa para anúncios adicional
Embora não exista forma de prolongar uma pausa para anúncios enquanto esta estiver a ser reproduzida para os utilizadores, um codificador pode enviar uma etiqueta "CUE-OUT" adicional na stream imediatamente depois da etiqueta "CUE-IN" da pausa para anúncios anterior para criar uma pausa para anúncios adicional com anúncios decididos recentemente.
Preencha o espaço restante da pausa para anúncios
Se não existirem anúncios para apresentar ou espaço adicional a preencher, o utilizador vê o conteúdo da faixa ou o conteúdo subjacente, consoante as definições de pausa para anúncios escolhidas quando a stream em direto foi configurada no Ad Manager.
Marcadores de anúncios suportados para streams em direto
Os seguintes marcadores são suportados para a inserção de anúncios em conteúdo de stream em direto:
Estes tipos de marcações são gerados por várias soluções de codificação, incluindo AWS Elemental.
O formato é o seguinte:
CUE-OUT
#EXT-X-CUE-OUT:DURATION=10.50,K=V
#EXT-X-CUE-OUT:10.50,K=V
Atualmente, o Ad Manager suporta apenas a transmissão de BREAKID
como uma chave-valor no CUE-OUT.
CUE-IN
#EXT-X-CUE-IN
CUE-OUT
#EXT-X-CUE:ID=31264,TYPE="SpliceOut",DURATION=30.00,TIME=77892728.264567
CUE-IN
Estas marcações não têm um indicador CUE-IN
explícito. Em vez disso, marcam todos os segmentos após CUE-OUT
com o seguinte:
#EXT-X-CUE:ID=31264,TYPE="SpliceOut",DURATION=30.00,TIME=77892728.264567,ELAPSED=5.00
Isto indica o posicionamento de um segmento dentro de uma pausa para anúncio. Um marcador CUE-IN
é calculado com o valor do atributo ELAPSED
, juntamente com a duração do segmento, para indicar o último segmento da pausa.
CUE-OUT
#EXT-X-DATERANGE:ID="splice-80f",PLANNED-DURATION=90.5,START-DATE="2017-03-24T13:46:04Z",SCTE35-OUT=0xFC301B00000000000000FFF00A05000001027FDF000000
O valor do atributo PLANNED-DURATION
é usado como a duração prevista da pausa para anúncios.
CUE-IN
#EXT-X-DATERANGE:ID="splice-7ef",START-DATE="2017-03-24T13:38:04Z",SCTE35-IN=0xFC301B00000000000000FFF00A05000000FF7F5F0000000000007B7BA160
Os indicadores SCTE35 Splice In e Out podem ser especificados através de sinais de tempo em etiquetas HLS. As informações SCTE estão disponíveis no formato binário e têm de ser descodificadas para determinar o tipo de sinal enviado.
CUE-OUT
#EXT-OATCLS-SCTE35:/DAlAAAAAAAAAP/wFAUAAA+if+/+INAJ0P4AKTLgAAAAAAAA9UTkTA==
CUE-IN
#EXT-OATCLS-SCTE35:/DAgAAAAAAAAAP/wDwUAAAPvf0//ahTGjwAAAAAAALda4HI=
Os dados binários SCTE-35 (codificados em base64) têm de ser descodificados e analisados para determinar se contêm sinais CUE-OUT/CUE-IN válidos, juntamente com quaisquer informações de segmentação da pausa.
Por exemplo, os seguintes dados binários contêm um sinal CUE-OUT válido:
CUE-OUT
/DAsAAAAAyiYAP/wBQb/PVbrDQAWAhRDVUVJB48zWH//AAEuGvsAACIAAdRJqiI=
Depois de descodificada, a mensagem contém os seguintes campos:
splice_command_type
definido com um valor de 6 indica que este é um sinal de tempo.segmentation_type_id
indica o tipo de sinal de tempo.
O seguinte valor de segmentation_type_id
é reconhecido como um sinal de tempo CUE-OUT válido:
34
: início da pausa
O seguinte valor de segmentation_type_id
(quando splice_command_type = 6
) é reconhecido como um sinal de tempo CUE-IN válido:
35
: fim da pausa
Por exemplo, os seguintes dados binários contêm um sinal CUE-IN válido:
CUE-IN
/DAnAAAAAyiYAP/wBQb/PX1ezQARAg9DVUVJB48zWH+/AAAjAAGwzKWt
Os dados binários SCTE-35 (codificados em base64) têm de ser descodificados e analisados para determinar se contêm sinais CUE-OUT/CUE-IN válidos, juntamente com quaisquer informações de segmentação da pausa.
Por exemplo, os seguintes dados binários contêm um sinal CUE-OUT válido:
CUE-OUT
/DAxAAAAAAAAAP/wBQb//ciI8QAbAhlDVUVJXQk9EX/fAAEuK3sBBUMxNDY0MAEBpOBiAg==
Depois de descodificada, a mensagem contém os seguintes campos:
splice_command_type
definido com um valor de 6 indica que este é um sinal de tempo.segmentation_type_id
indica o tipo de sinal de tempo.
O seguinte valor de segmentation_type_id
é reconhecido como um sinal de tempo CUE-OUT válido:
48
: início da publicidade do fornecedor
O seguinte valor de segmentation_type_id
(quando splice_command_type = 6
) é reconhecido como um sinal de tempo CUE-IN válido:
49
: fim da publicidade do fornecedor
Por exemplo, os seguintes dados binários contêm um sinal CUE-IN válido:
CUE-IN
/DAsAAAAAAAAAP/wBQb//e78sQAWAhRDVUVJXQk9EX+fAQVDMTQ2NDEBAaKNu/4=
Os dados binários SCTE-35 (codificados em base64) têm de ser descodificados e analisados para determinar se contêm sinais CUE-OUT/CUE-IN válidos, juntamente com quaisquer informações de segmentação da pausa.
Por exemplo, os seguintes dados binários contêm um sinal CUE-OUT válido:
CUE-OUT
/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==
Depois de descodificada, a mensagem contém os seguintes campos:
splice_command_type
definido com um valor de 6 indica que este é um sinal de tempo.segmentation_type_id
indica o tipo de sinal de tempo.
O seguinte valor de segmentation_type_id
é reconhecido como um sinal de tempo CUE-OUT válido:
52
: início de oportunidade de posicionamento do fornecedor
O seguinte valor de segmentation_type_id
(quando splice_command_type = 6
) é reconhecido como um sinal de tempo CUE-IN válido:
53
: fim da oportunidade de posicionamento do fornecedor
Por exemplo, os seguintes dados binários contêm um sinal CUE-IN válido:
CUE-IN
/DAvAAAAAAAA///wBQb+cuN0EAAZAhdDVUVJSAAAjn+PCAgAAAAALKChijUCALdPwUA=
Macros para marcação SCTE-35
Se o seu feed incluir a marcação EXT-OATCLS-SCTE35
ou EXT-X-DATERANGE
, os metadados são automaticamente extraídos e disponibilizados através de chaves-valores personalizadas. Tem de configurar as chaves-valores personalizadas e inseri-las como macros quando gera etiquetas do anúncio.
Quando configura as novas chaves-valores personalizadas para os campos SCTE-35, utilize uma chave personalizada (por exemplo, "scte35") e defina o valor para as macros que correspondem ao tipo de campo que está disponível no seu feed:
Macro | Descrição |
---|---|
%%SPLICE_INSERT_EVENT_ID%% |
Os números inteiros não assinados na mensagem SCTE35 são convertidos para strings como números decimais. |
%%SPLICE_INSERT_UPID%% |
|
%%TIME_SIGNAL_EVENT_ID%% |
|
%%TIME_SIGNAL_UPID%% |
Renderizado como hexadecimal em minúsculas, sem o prefixo 0x . |
%%TIME_SIGNAL_UPID_RAW%% |
Insere bytes não processados da mensagem SCTE sem a conversão hexadecimal (a string inicial tem de ser uma string codificada UTF-8 válida). |
%%AFMM_CBC%% |
Extrai o código da pausa para anúncio das informações de Splice (obrigatório para a especificação AF2M francesa). |