Intervalos de anúncio

Visão geral

O SDK do receptor da Web oferece suporte nativo para intervalos de anúncio e anúncios complementares em um determinado fluxo de mídia. Ele fornece APIs para definir a posição do anúncio, a origem de anúncios e o comportamento dos intervalos de anúncio e dos clipes de intervalos associados a eles. Neste guia, Break refere-se a um intervalo para reprodução que contém um ou mais anúncios ou bumpers, e cada anúncio ou bumper é conhecido como um BreakClip Esses intervalos estão associados à mídia que está sendo carregada ou reproduzida.

Tipos de anúncio

O SDK do receptor da Web é compatível com a inserção de anúncios do lado do cliente (CSAI) e o servidor inserção de anúncios integrada (SSAI, na sigla em inglês). Anúncios agrupados pelo cliente podem ser definidos manualmente pelo ou extraídos dos arquivos de modelo VAST e VMAP. Os anúncios agrupados pelo servidor devem ser especificados manualmente antes do carregamento do conteúdo como anúncios incorporados ou dinamicamente, durante a reprodução do conteúdo, como incorporado expandido anúncios. As implementações de cada um desses tipos de anúncios são descritas em detalhes abaixo.

costurado pelo cliente manualmente

O intervalo de anúncio com agrupamento manual pelo cliente é um tipo de intervalo de anúncio que é unido pelo cliente e são especificadas manualmente pelo aplicativo usando o APIs do SDK. Esse tipo de anúncio não é incorporado ao stream do conteúdo principal. A BreakClip precisa fornecer o contentId que é um URL que aponta para o conteúdo do anúncio, o contentType que descreve o formato do conteúdo do anúncio e os title.

O Break precisa ter isEmbedded e expanded defina o valor padrão false. A position pode ser definido como um intervalo de anúncio de anúncio precedente, anúncio intermediário ou anúncio final. Saiba mais em posicionamento de interrupção). Ao preparar anúncio para reprodução, o SDK do receptor da Web gera outra instância do player para carregar e reproduzir o conteúdo do anúncio. Esses intervalos exigem um stitched timeline e precisam ser adicionado estaticamente. Saiba mais na seção inserção de anúncios). O exemplo abaixo mostra implementação de um anúncio manual integrado ao cliente:

// Create the BreakClip.
let clipClient = new cast.framework.messages.BreakClip('bc_client');
clipClient.title = 'The Ad Title to be displayed during playback';
clipClient.contentId = 'https://example.com/ad.m3u8';
clipClient.contentType = 'application/vnd.apple.mpegurl';

// Optional: Used when HLS ad container formats differ from the main content's.
clipClient.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.FMP4;

// Create the Break using the BreakClip id above.
let breakPostrollClient = new cast.framework.messages.Break(
    'break_postroll_client', ['bc_client'], -1);
breakPostrollClient.isEmbedded = false; // Optional: default is false.
breakPostrollClient.expanded = false; // Optional: default is false.

VAST

O SDK do receptor da Web é compatível com a adição de VAST (Veiculação de anúncios em vídeo) padrão do IAB modelo). Quando fornecido, o modelo XML é analisado para gerar uma o clipe de intervalo separado pelo cliente subsequente ao entrar no intervalo.

Para criar um anúncio VAST, o app receptor precisa criar um VastAdsRequest e especificar no BreakClip vastAdsRequest . O objeto VastAdsRequest precisa ter o parâmetro adsResponse (uma string do próprio modelo XML) ou a adTagUrl (o URL em que o modelo XML é hospedado). Se o URL for especificado, o O SDK processará a busca do modelo. O Break de encapsulamento segue convenções para anúncios agrupados pelo cliente. Esses anúncios podem ser adicionados com outras anúncios agrupados manualmente pelo cliente no mesmo intervalo ou em intervalos separados para o mesmo conteúdo. O exemplo abaixo mostra uma implementação básica de um VAST anúncio:

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/ads.xml'

// Create the BreakClip.
let clipVast = new cast.framework.messages.BreakClip('bc_vast');
clipVast.vastAdsRequest = vastTemplate;

// Create the Break using the BreakClip id above.
let breakPostrollVast = new cast.framework.messages.Break(
    'break_postroll_vast', ['bc_vast'], -1);
breakPostrollVast.isEmbedded = false; // Optional: default is false.
breakPostrollVast.expanded = false; // Optional: default is false.

Quando um Break contendo um BreakClip VAST é inserido, o receptor da Web O SDK também vai buscar e analisar o modelo. Durante a análise, o SDK gera uma nova BreakClip e a preenche com os valores extraídos o modelo, como contentId, contentType, title, duration, whenSkippable e clickThroughUrl. O id para o clipe de pausa gerado é Defina como GENERATED:N, em que N é um número inteiro que aumenta em 1 para cada novo Clipe de intervalo VAST criado a partir de 0. O anúncio gerado é adicionado a matriz BreakClip. Cada id de clipe de intervalo VAST no Break atual tem e substituídos pelo id do clipe de intervalo gerado correspondente. Os snippets ilustram as mudanças na MEDIA_STATUS mensagens relacionadas aos anúncios antes e depois do intervalo.

Break e BreakClip informações antes de inserir um intervalo com anúncios VAST.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "bc_vast"
    ],
    "position": 0,
    "isWatched": false
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  }
]

Informações de Break e BreakClip depois de inserir um intervalo com anúncios VAST.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "GENERATED:0"
    ],
    "position": 0,
    "isWatched": true
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  },
  {
    "id": "GENERATED:0",
    "contentId": "https://example.com/break-clip-1.mpd",
    "contentType": "application/dash+xml",
    "title": "Ad Title Extracted from Template",
    "duration": 10,
    "whenSkippable": 5,
    "clickThroughUrl": "https://example.com/ad-target"
  }
]

VMAP

O SDK do receptor da Web é compatível com as playlists de vários anúncios em vídeo (VMAP) do IAB padrão. Quando um VMAP é fornecido, o SDK do receptor da Web analisa o VMAP e gerar objetos Break agrupados pelo cliente para qualquer <AdBreak> entradas na resposta. Ele também vai gerar o BreakClips apropriado com um objeto vastAdsRequest para cada entrada <AdSource> fornecida no VMAP. Para ativar o VMAP para inserir anúncios no conteúdo, o aplicativo deve criar um VastAdsRequest e o atribui ao vmapAdsRequest do elemento MediaInformation no LoadRequestData Esses anúncios devem ser inseridos estaticamente (veja mais na inserção de anúncios. Abaixo está um snippet que descreve criação de uma solicitação VMAP.

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/vmap.xml'

// Add it to the MediaInformation of the LoadRequest.
loadRequestData.media.vmapAdsRequest = vastTemplate;

incorporado

O intervalo de anúncio incorporado é um tipo de intervalo de anúncio que é unido no lado do servidor ao stream do conteúdo principal. A duração do Break é subtraída da duração do conteúdo principal ao calcular o tempo de mídia.

O BreakClip precisa fornecer o duration do conteúdo do anúncio, title O Break precisa ter isEmbedded Defina como true e expanded defina como false. A position pode ser definido como um intervalo de anúncio precedente ou intermediário. Os intervalos de anúncios finais são compatível com valores positivos de position exatos. Saiba mais na seção de posicionamento de interrupção. Quando o anúncio for acionado para for reproduzido, o SDK do receptor da Web continuará a reprodução do stream à medida que os segmentos de anúncio estão incorporadas. Não há mecanismo de carregamento adicional para esse tipo de anúncio. Os metadados de anúncio relevantes são mostrados ao usuário quando o marcador está dentro do de intervalo de tempo. Esses intervalos exigem um embedded timeline e precisam ser adicionados estaticamente. Confira mais informações na seção Inserção de anúncios. A o exemplo abaixo mostra uma implementação básica de um anúncio embedded.

// Create the BreakClip.
let clipEmbedded = new cast.framework.messages.BreakClip('bc_embedded');
clipEmbedded.title = 'The Ad Title to be displayed during playback';
clipEmbedded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbedded = new cast.framework.messages.Break(
    'break_preroll_embedded', ['bc_embedded'], 0);
breakPrerollEmbedded.isEmbedded = true;
breakPrerollEmbedded.expanded = false; // Optional: default is false.

incorporado/expandido

O intervalo de anúncio expandido incorporado é um tipo de intervalo de anúncio que é unido ao servidor ao stream do conteúdo principal. A duração do Break é incluída na duração do conteúdo principal ao calcular o tempo de mídia.

O BreakClip precisa fornecer o duration do conteúdo do anúncio, title O Break precisa ter isEmbedded Defina como true e expanded Defina como true. A position pode ser definido como um intervalo de anúncio precedente ou intermediário. Os intervalos de anúncios finais são compatível com valores position positivos. Saiba mais na seção de posicionamento de interrupção. Quando o anúncio for acionado para for reproduzido, o SDK do receptor da Web continuará a reprodução do stream à medida que os segmentos de anúncio estão incorporadas. Não há mecanismo de carregamento adicional para esse tipo de anúncio. Os metadados de anúncio relevantes são mostrados ao usuário quando o marcador está dentro do de intervalo de tempo. Esses intervalos exigem um embedded timeline e podem ser adicionados de forma estática ou dinâmica (saiba mais na seção inserção de anúncios). O exemplo abaixo mostra implementação de um anúncio embedded expanded:

// Create the BreakClip.
let clipEmbeddedExpanded =
    new cast.framework.messages.BreakClip('bc_embedded_expanded');
clipEmbeddedExpanded.title = 'The Ad Title to be displayed during playback';
clipEmbeddedExpanded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbeddedExpanded = new cast.framework.messages.Break(
    'break_preroll_embedded_expanded', ['bc_embedded_expanded'], 0);
breakPrerollEmbeddedExpanded.isEmbedded = true;
breakPrerollEmbeddedExpanded.expanded = true;

Tipos de linha do tempo do jogador

Ao criar uma instância de player, o SDK do receptor da Web seleciona um tipo de linha do tempo para oferecer suporte à reprodução de anúncios durante a reprodução do conteúdo. Cada cronograma permite que determinados tipos de quebra de linha a serem adicionados. O tipo de linha do tempo é determinado pelo tipos de anúncios presentes durante o tempo de carregamento no MediaInformation da LoadRequestData. Se houver intervalos de anúncio incorporados, a linha do tempo embedded será selecionada. Se Há intervalos de anúncio integrados ao cliente, o cronograma stitched é selecionado. Caso não haja anúncios, o SDK usará embedded por padrão. na linha do tempo. Depois de selecionada, a linha do tempo não pode ser alterada para a data item de mídia. A tabela abaixo fornece uma descrição detalhada de cada linha do tempo.

Tipo de cronograma Descrição
linha do tempo incorporada Uma representação do tempo de mídia que suporta anúncios que são incorporados ao conteúdo principal (intervalos de anúncios incorporados e expandidos). Quando há um intervalo de anúncio não expandido, a duração é subtraído da duração total do conteúdo. Por outro lado, quando um anúncio expandido está presente, esse tempo será considerado parte do conteúdo principal.
linha do tempo agrupada Uma representação do tempo de mídia que suporta anúncios provenientes de arquivos de mídia externos (agrupamento manual pelo cliente, VAST e VMAP intervalos de anúncio). Quando adicionada, a duração do intervalo de anúncio é não fazem parte da duração do conteúdo principal.

As Figuras 1 a 3 abaixo ilustram alguns conteúdos com tipos de anúncios variados e os respectivos respectivos valores da linha do tempo. O conteúdo é configurado com uma pausa de anúncio precedente. tem dois clipes de intervalo, além de intervalos intermediários e finais com um um clipe de intervalo único. É o tempo médio desde o início da reprodução do conteúdo. o tempo de mídia do conteúdo principal e o horário atual do intervalo em reprodução estão alinhados abaixo de cada figura.

Cronograma dos anúncios agrupados pelo cliente
Figura 1: linha do tempo representando algum conteúdo e os três intervalos de anúncio agrupados pelo cliente.


Cronograma dos anúncios incorporados integrados ao servidor
Figura 2: a linha do tempo representando um conteúdo e os três intervalos de anúncio incorporados pelo servidor.


Cronograma dos anúncios expandidos incorporados integrados ao servidor
Figura 3: a linha do tempo representando algum conteúdo e os três intervalos de anúncio expandidos incorporados pelo servidor.

Interromper posicionamento

O SDK do receptor da Web permite que os desenvolvedores especifiquem onde os intervalos de anúncio devem estar definido ao definir position do Break. Esse valor corresponde ao tempo de mídia do conteúdo principal e pode ser usado para criar intervalos de anúncio pre-roll, mid-roll e post-roll. Eles são definidos da seguinte maneira:

Posição de quebra Descrição
anúncio precedente Um intervalo de anúncio que é reproduzido antes do conteúdo principal. Isso é indicado pela definição de breakPosition como 0
anúncio intermediário Um intervalo de anúncio que é reproduzido durante o conteúdo. Isso é indicado pela definindo breakPosition como um horário em que o intervalo início é maior do que o início do conteúdo principal, e o horário de término do intervalo é menor que o do conteúdo principal. tempo de resposta.
anúncio final Um intervalo de anúncio que é reproduzido após o conteúdo principal. Isso é indicado pela definição de breakPosition como -1 para linhas do tempo agrupadas. Para objetos incorporados cronogramas no breakPosition deve ser definido como a duração do conteúdo principal subtraída por a duração do intervalo. Não é compatível com conteúdo ao vivo.

Matriz de interoperabilidade

Como um ponto de referência rápido, a Tabela 1 mostra uma visão geral dos tipos de anúncios e a compatibilidade com recursos relacionados a anúncios.

Tabela 1: Matriz de interoperabilidade de anúncios
Suporte a recursos anúncio integrado ao cliente manual VAST VMAP anúncio incorporado anúncio expandido incorporado
compatível com VAST costurado pelo cliente manualmente N/A incorporado/expandido incorporado
Linha do tempo costurado costurado costurado incorporado incorporado
inserção de anúncios static static static static estático, dinâmico
remoção de anúncio
anúncio precedente
anúncio intermediário
anúncio final
anúncio pulável
interceptador de busca de intervalo
interceptador de carregamento de clipe

Eventos

Quando ocorrem eventos de quebra de chave, o SDK de transmissão envia eventos do tipo BreaksEvent Um app receptor pode se inscrever neles usando PlayerManager. addEventListener API.

Esses eventos podem ser usados para análise e rastreamento da reprodução de anúncios. Quando o VMAP (playlist de vários anúncios em vídeo) e VAST (Modelo de veiculação de anúncio em vídeo) são qualquer evento de rastreamento padrão fornecido nas respostas é automaticamente enviados pelo SDK.

Os tipos de evento estão listados na Tabela 2 junto com uma descrição detalhada de quando são disparados.

Ciclo de vida dos eventos de interrupção
Figura 4: o ciclo de vida dos eventos de interrupção.
Tabela 2: eventos de intervalo e as descrições deles.
Evento de intervalo Descrição
BREAK_STARTED Disparado quando o tempo de mídia atual do conteúdo principal é igual ao position de um intervalo não assistido.
BREAK_CLIP_LOADING Disparado somente quando um clipe na linha do tempo agrupada começa a ser carregado.
BREAK_CLIP_STARTED Disparado quando um clipe de intervalo inicia a reprodução.
BREAK_CLIP_ENDED Disparado quando um clipe de intervalo termina. A endedReason será preenchido nas seguintes circunstâncias:
  • Um clipe de quebra de linha do tempo costurado foi reproduzido até o fim.
  • Um clipe de quebra de linha do tempo agrupado faz a transição para outro clipe de pausa.
  • Os clipes de pausa são pulados.
  • O último clipe de intervalo reproduzido completamente em um intervalo incorporado de anúncio final.
  • Ocorreu um erro.
BREAK_ENDED Disparado quando o último clipe de intervalo em um intervalo termina.

Inserção de anúncios

O SDK do Cast permite que os aplicativos insiram e removam anúncios em momentos diferentes. de uma sessão de transmissão. Os dois tipos de inserção de anúncios são estática e dinâmica. A inserção de anúncios estáticos exige que os anúncios sejam especificados no LoadRequestData antes da criação do jogador. A inserção de anúncios dinâmicos usa o BreakManager addBreak API para inserir intervalos no conteúdo já carregado. Cada tipo de inserção é compatível com determinados tipos de anúncios. A compatibilidade é fornecida na matriz de interoperabilidade.

Inserção de anúncios estáticos

A inserção de anúncios estáticos é caracterizada pela adição dos metadados relevantes antes até a criação de jogadores. Essas informações são fornecidas MediaInformation do LoadRequestData. Por exemplo, isso pode ser definido no endereço de e-mail do remetente solicitação de carregamento original ou ela pode ser inserida pelo aplicativo Web Receiver interceptando a solicitação LOAD. Depois que o LoadRequestData for retornado ao SDK do receptor da Web para processamento, o player será criado. Saiba mais em carregar mídia. O exemplo abaixo mostra um anúncio combinado manualmente com o cliente sendo adicionado à solicitação LOAD interceptador

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD, loadRequestData => {

  // Create the BreakClip.
  let clipClient = new cast.framework.messages.BreakClip('bc_client');
  clipClient.title = 'The Ad Title to be displayed during playback';
  clipClient.contentId = 'https://example.com/ad.mp4';
  clipClient.contentType = 'video/mp4';

  // Create the Break using the BreakClip id above.
  let breakPostrollClient = new cast.framework.messages.Break(
      'break_postroll_client', ['bc_client'], -1);

  // Set the ad information in the load request data.
  let media = loadRequestData.media;
  media.breakClips = [clipClient];
  media.breaks = [breakPostrollClient];

  return loadRequestData;
});

Inserção de anúncios dinâmicos

A inserção de anúncios dinâmicos é caracterizada pela definição de um intervalo comercial durante o conteúdo a reprodução. Para isso, recupere uma instância de BreakManager e chame as addBreak API. Ele usa pelo menos dois parâmetros, um incorporado expandido Break e uma matriz de BreakClip. Uma terceira propriedade opcional é incluída para forçar o envio das alterações ao remetentes conectados por uma transmissão MediaStatus quando definido como true. Quando adicionando quebras e quebras de clipes, os IDs correspondentes devem ser exclusivos. Esses anúncios só podem ser adicionados depois que o player for criado. O SDK do receptor da Web é acionado as PLAYER_LOADING assim que o player for criado. Confira o exemplo abaixo que mostra o uso no um manipulador de eventos que responde a alterações nos metadados ID3 de um fluxo e cria objetos Break e BreakClip para inseri-lo na linha do tempo.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.ID3, (event) => {

  // Create the BreakClip.
  let clipEmbeddedExpanded = parseBreakClipFromData(event.segmentData);
  let breakEmbeddedExpanded = parseExpandedBreakFromData(event.segmentData);

  // Add the break and break clip.
  breakManager.addBreak(breakEmbeddedExpanded, [clipEmbeddedExpanded]);
});

Remoção de anúncios dinâmicos

Para remover pausas dinâmicas, o aplicativo deve chamar removeBreakById durante a reprodução. A função usa um identificador de string da pausa a ser removido da linha do tempo. O breakId especificado deve apontar para um objeto incorporado intervalo de anúncio expandido. Se qualquer outro tipo de intervalo de anúncio for detectado, vão continuar no cronograma. Veja o exemplo abaixo que remove uma pausa.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.removeBreakById('break_midroll_embedded_expanded');

Comportamento de pausas

O SDK define um comportamento padrão para quando o jogador entrar e sair de intervalos e oferece uma maneira de personalizá-lo ainda mais usando algumas das APIs fornecidas no BreakManager

Comportamento de pausa padrão

Quando um Break é inserido pela reprodução normal ou buscando por um Break, o SDK vai avaliar se o usuário já a viu, verificando ou não as isWatched . Quando criado, o valor padrão de uma pausa para essa propriedade é false. Se a propriedade for true, a pausa não será reproduzida quando for inserida no o conteúdo continuará sendo reproduzido. Se a propriedade for false, a quebra será tocado quando inserido.

Ao buscar intervalos anteriores, a implementação padrão recebe todos os Break itens com position entre o valor da operação de busca seekFrom e seekTo e a distribuição dos valores dos dados. Nessa lista de intervalos, o SDK vai tocar a Break, que tem position está o mais próximo do valor seekTo e cuja propriedade isWatched está definida como false. A propriedade isWatched desse intervalo será definida como true, e o o player começará a reproduzir os clipes de pausa. Depois de assistir ao intervalo, o conteúdo principal retomará a reprodução na posição seekTo. Se não houver existir um intervalo, nenhum intervalo será reproduzido e o conteúdo principal será retomado tocando na posição seekTo.

Durante a reprodução com pausa, o SDK vai transmitir todas as atualizações relevantes para os dispositivos aplicativos remetentes na MediaStatus Esses aplicativos usarão as transmissões para atualizar a interface de usuário dos anúncios lendo as breakStatus . Essa propriedade é definida somente durante a reprodução em pausa.

Os aplicativos receptores também podem consultar diretamente informações relativas à posição do marcador em relação ao tempo atual do BreakClip mostrado chamando PlayerManager getBreakClipCurrentTimeSec. Da mesma forma, os aplicativos podem consultar a duração da BreakClip atual ao chamar getBreakClipDurationSec.

Comportamento de intervalo personalizado

O comportamento padrão para intervalos e clipes de pausa pode ser modificada com o setBreakClipLoadInterceptor e setBreakSeekInterceptor métodos fornecidos em BreakManager.

Interceptador de busca de intervalo

O interceptador de busca de intervalo permite que o app controle o comportamento de busca sobre intervalos de anúncios. A função é acionada quando uma operação de busca é solicitada. que busca avançar ou retroceder uma ou mais pausas. Quando chamado, o BreakSeekData é passado como um parâmetro para a função de retorno de chamada. O objeto BreakSeekData contém uma matriz de Break objetos cuja propriedade position é definida como um número entre o valor marcador de posição definido como seekFrom e o tempo de busca do destino seekTo.

Esse interceptador permite que os objetos Break nos respectivos intervalos sejam modificado. Quando implementado, o interceptador de busca de intervalo deve especificar qual anúncio pausas para reprodução, retornando um objeto BreakSeekData opcionalmente modificado. A o player continuará a reproduzir todos os intervalos incluídos no valor de retorno. Se um valor de null ou nada for retornado do interceptador de busca de intervalo, o intervalo será pulado.

Confira no exemplo abaixo uma implementação simples do interceptador que substitui o comportamento padrão de assistir a todos os intervalos comerciais procurados com o exceto aqueles que já foram assistidos.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakSeekInterceptor((breakSeekData) => {

  // Filter the breaks array by removing watched breaks.
  const unwatchedBreaks =
      breakSeekData.breaks.filter(adBreak => !adBreak.isWatched);
  breakSeekData.breaks = unwatchedBreaks;

  return breakSeekData;
});

Interceptador de carregamento de clipe de interrupção

Ao usar o interceptador do carregamento de clipes de interrupção, um objeto BreakClip pode ser modificado. antes do início da reprodução.

O interceptador do carregamento do clipe de pausa é chamado somente para falhas na linha do tempo agrupadas e pode ser definido usando setBreakClipLoadInterceptor. Antes de inserir um Break, esse interceptador é chamado uma vez para cada indivíduo. BreakClip definido nesse intervalo. O SDK transmite o arquivo BreakClip como um parâmetro da função de callback. O aplicativo pode modificar BreakClip e a retorna para que o SDK possa buscar e exibir o intervalo. com a configuração atualizada. Se null ou nada for retornado, o intervalo o clipe é ignorado.

Confira abaixo um exemplo que modifica o contentUrl dos clipes de intervalo com uma chamada de função utilitária getUrlFromClipId em que a id do BreakClip está mapeado para um URL.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
    (breakClip, breakClipLoadInterceptorContext) => {

  // Obtains the URL of a break clip id from a function call.
  breakClip.contentUrl = getUrlFromClipId(breakClip.id);

  return breakClip;
});

Pular anúncio

O SDK do receptor da Web fornece APIs para pular intervalos de anúncio e clipes de intervalo individuais em um intervalo de anúncio. O SDK também permite que os usuários possam pular clipes de pausa ao que interagem com aplicativos emissores ou dispositivos smart display.

Clipes de intervalo puláveis do usuário

Definir clipes de pausa como puláveis permite que os usuários interajam com o remetente conectado aplicativos e dispositivos de smart display para pular o restante de uma em reprodução no momento. Definir o whenSkippable a um número não negativo de segundos ativará esse recurso para a objeto BreakClip. O player vai considerar o clipe de intervalo pulável quando o foi reproduzido durante esse número de segundos. Definir esse valor como 0 permite que os usuários pulem o clipe de pausa imediatamente.

// Create the BreakClip.
let clip = new cast.framework.messages.BreakClip('bc');
clip.title = 'The Ad Title to be displayed during playback';
clip.whenSkippable = 10; // Users can skip the clip after 10 seconds of playback.

Essas informações podem ser definidas na solicitação de carregamento original do remetente ou no app receptor. Quando pulado, um clipe de intervalo em um intervalo de anúncio da linha do tempo agrupada a reprodução do clipe de intervalo atual será interrompida. O player carregará a próxima quebrar clipe se houver ou carregar o conteúdo principal. Quando ignorado, a pausa é feita em uma o intervalo de anúncio na linha do tempo incorporada vai avançar para o fim do clipe de intervalo, e continuar a reprodução do stream nesse ponto.

Pular anúncios de forma programática

Os anúncios também podem ser pulados automaticamente sem nenhuma interação do usuário.

Para pular uma pausa inteira da reprodução, um aplicativo deve definir o isWatched propriedade de um Break para true. Isso pode ser feito a qualquer momento durante o carregamento reprodução de conteúdo ou sequência. A propriedade isWatched é avaliada pelo player quando a position de um intervalo é atendida no tempo atual do conteúdo principal. Em Nesse ponto, o jogador determina se uma pausa deve ser inserida ou não. Veja o exemplo abaixo, que passa por todas as pausas e modifica o quando o player estiver sendo carregado.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.PLAYER_LOADING,
    (event) => {

  // Obtain the breaks and iterate through each item to skip all ad breaks.
  let breaks = breakManager.getBreaks();
  breaks.forEach((brk) => {
    brk.isWatched = true;
  });
});

Para pular um clipe de intervalo específico de forma programática, o interceptor de carregamento de clipe de pausa. De retornar null ou não retornar um valor na função de callback, o clipe esse intervalo será ignorado.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
      (breakClip, breakClipLoadInterceptorContext) => {
  return null;
});