Interruzioni pubblicitarie

Panoramica

L'SDK Web receiver prevede il supporto nativo per le interruzioni pubblicitarie e gli annunci companion all'interno di un determinato stream multimediale. Fornisce API per impostare la posizione dell'annuncio, l'origine e il comportamento delle interruzioni pubblicitarie e i relativi clip di interruzione associati. In questa guida, un Break indica un intervallo di riproduzione contenente uno o più annunci o bumper e ogni annuncio o bumper viene definito BreakClip. Queste interruzioni sono associate ai contenuti multimediali che vengono caricati o riprodotti.

Tipi di annuncio

L'SDK Web receiver supporta l'inserimento di annunci lato client (CSAI) e server l'inserimento di annunci con stitching (SSAI). Gli annunci sincronizzati dal cliente possono essere impostati manualmente o estratti da file modello VAST e VMAP. Gli annunci cuciti dal server devono essere specificati manualmente prima del caricamento dei contenuti come annunci incorporati o in modo dinamico durante la riproduzione dei contenuti come annunci espansi incorporati annunci. Di seguito sono descritte in dettaglio le implementazioni per ciascuno di questi tipi di annunci.

con stitching manuale da parte del client

L'interruzione pubblicitaria manuale unita al client è un tipo di interruzione pubblicitaria che viene unita dal client e viene specificato manualmente dall'applicazione utilizzando le API SDK. Questo tipo di annuncio non è incorporato nello stream dei contenuti principali. La BreakClip deve fornire i campi contentId ovvero un URL che rimanda al contenuto dell'annuncio, contentType che descrive il formato dei contenuti dell'annuncio e title

Break deve avere isEmbedded e expanded impostato sul valore predefinito false. La position può essere impostato su un'interruzione pubblicitaria pre-roll, mid-roll o post-roll (per ulteriori informazioni, il posizionamento dell'interruzione). Durante la preparazione dell'annuncio per la riproduzione, l'SDK Web receiver genera un'altra istanza di player da caricare e riprodurre il contenuto dell'annuncio. Queste interruzioni richiedono un stitched timeline e devono essere aggiunto in modo statico (scopri di più inserimento di annunci). L'esempio seguente mostra una panoramica di base implementazione di un annuncio con accoppiamento manuale con il client:

// 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

L'SDK Web Ricevitore supporta l'aggiunta dello standard IAB VAST (Video Ad Serving). modello). Se fornito, il modello XML viene analizzato per generare un clip di interruzione successiva unita dal client al momento dell'entrata nell'interruzione.

Per creare un annuncio VAST, l'app ricevente deve creare un VastAdsRequest e specificalo nel campo BreakClip vastAdsRequest proprietà. L'oggetto VastAdsRequest deve avere adsResponse (un rappresentazione stringa del modello XML stesso) o adTagUrl (l'URL in cui il modello XML è ospitato) è stata definita. Se l'URL è specificato, L'SDK gestirà il recupero del modello. L'elemento Break incapsulante segue convenzioni per gli annunci completati dal client. Questi annunci possono essere aggiunti insieme ad altri annunci cuciti manualmente dal client nella stessa interruzione o in interruzioni separate per la lo stesso contenuto. L'esempio seguente mostra un'implementazione di base di una creatività VAST annuncio:

// 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.

Se viene inserito un valore Break contenente un BreakClip VAST, il ricevitore web L'SDK recupererà e poi analizzerà il modello facoltativamente. Durante l'analisi, l'SDK genererà un nuovo BreakClip e lo completerà con i valori estratti da il modello, ad esempio contentId, contentType, title, duration, whenSkippable e clickThroughUrl. Il valore id per il clip di interruzione generato è impostato su GENERATED:N dove N è un numero intero che aumenta di 1 per ogni nuovo Clip di interruzione VAST creato a partire dal giorno 0. L'annuncio generato viene poi aggiunto l'array BreakClip. Il valore id di ogni clip di interruzione VAST nell'elemento Break corrente è quindi sostituito con il valore id del clip di interruzione generato corrispondente. Gli snippet di seguito illustrano le modifiche MEDIA_STATUS messaggi relativi agli annunci prima e dopo l'inizio della pausa.

Informazioni su Break e BreakClip prima di inserire un'interruzione con gli annunci VAST.

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

Informazioni su Break e BreakClip dopo aver inserito un'interruzione con gli annunci 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

L'SDK Web Ricevitore supporta il protocollo VMAP (Video Multiple Ad Playlist) dell'IAB. standard. Quando viene fornito un VMAP, l'SDK Web receiver analizza il VMAP. risposta e genera oggetti Break uniti dal client per qualsiasi <AdBreak> diverse nella risposta. Inoltre, genererà il valore BreakClips appropriato con un oggetto vastAdsRequest per ogni voce <AdSource> fornita in VMAP. A abilitare VMAP per l'inserimento di annunci nei contenuti, l'applicazione deve creare un VastAdsRequest e assegnarlo all'oggetto vmapAdsRequest proprietà del MediaInformation nel LoadRequestData. Questi annunci devono essere inseriti in modo statico (per saperne di più, consulta la inserimento di annunci). Di seguito è riportato uno snippet che descrive la creazione di una richiesta 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;

incorporato

L'interruzione pubblicitaria incorporata è un tipo di interruzione pubblicitaria unita lato server nello stream dei contenuti principali. La durata di Break viene sottratta dalla durata dei contenuti principali per il calcolo del tempo dei media.

BreakClip deve fornire i campi duration del contenuto dell'annuncio e title. Break deve avere isEmbedded impostato su true e expanded impostato su false. La position può essere impostato come interruzione pubblicitaria pre-roll o mid-roll. Le interruzioni pubblicitarie post-roll supportato con valori position esatti positivi. Scopri di più nel posizionamento dell'interruzione. Quando l'annuncio viene attivato per vengono riprodotti, l'SDK Web receiver continua la riproduzione dello stream mentre i segmenti di annunci sono incorporati in quest'ultimo. Non è presente alcun meccanismo di caricamento aggiuntivo per questo tipo di annuncio. I metadati dell'annuncio pertinenti vengono mostrati all'utente quando la testina di riproduzione si trova all'interno del di pausa. Queste interruzioni richiedono un embedded timeline e devono essere aggiunte staticamente (scopri di più nella sezione sull'inserimento di annunci). La Il seguente esempio mostra un'implementazione di base di un annuncio 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.

incorporato espanso

L'interruzione pubblicitaria espansa incorporata è un tipo di interruzione pubblicitaria raggruppata in un server nello stream dei contenuti principali. La durata dell'evento Break è inclusa nella durata dei contenuti principali per il calcolo del tempo dei media.

BreakClip deve fornire i campi duration del contenuto dell'annuncio e title. Break deve avere isEmbedded impostato su true e expanded impostato su true. La position può essere impostato come interruzione pubblicitaria pre-roll o mid-roll. Le interruzioni pubblicitarie post-roll supportato con valori position positivi. Scopri di più nel posizionamento dell'interruzione. Quando l'annuncio viene attivato per vengono riprodotti, l'SDK Web receiver continua la riproduzione dello stream mentre i segmenti di annunci sono incorporati in quest'ultimo. Non è presente alcun meccanismo di caricamento aggiuntivo per questo tipo di annuncio. I metadati dell'annuncio pertinenti vengono mostrati all'utente quando la testina di riproduzione si trova all'interno del di pausa. Queste interruzioni richiedono un embedded timeline e possono essere aggiunte staticamente o dinamica (scopri di più nel inserimento di annunci). L'esempio seguente mostra una panoramica di base implementazione di un annuncio 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;

Tipi di sequenza temporale del player

Durante la creazione di un'istanza di player, l'SDK Web receiver seleziona un tipo di sequenza temporale da supportano la riproduzione di annunci durante la riproduzione dei contenuti. Ogni sequenza temporale abilita determinati annunci tipi di interruzione da aggiungere. Il tipo di sequenza temporale è determinato tipi di annunci presenti durante il tempo di caricamento nell' MediaInformation: del LoadRequestData. Se sono presenti interruzioni pubblicitarie incorporate, viene selezionata la sequenza temporale embedded. Se sono presenti interruzioni pubblicitarie integrate dal client; è selezionata la sequenza temporale stitched. Nel caso in cui non siano presenti annunci, l'SDK utilizza per impostazione predefinita l'embedded sequenza temporale. Una volta selezionata, la sequenza temporale non può essere modificata per quella attuale elemento multimediale. La tabella riportata di seguito fornisce una descrizione dettagliata di ciascuna sequenza temporale.

Tipo di sequenza temporale Descrizione
sequenza temporale incorporata Una rappresentazione del tempo dei media che supporta gli annunci incorporati nei contenuti principali (interruzioni pubblicitarie incorporate ed espanse incorporate). Quando è presente un'interruzione pubblicitaria non espansa, la durata viene sottratto dalla durata totale contenuti. Al contrario, quando un annuncio espanso di interruzione, la sua ora è considerata parte dei contenuti principali.
sequenza temporale unita Una rappresentazione del tempo dei media che supporta gli annunci provenienti da file multimediali esterni (con stitching manuale manuale, VAST e VMAP interruzioni pubblicitarie). Se aggiunta, la durata dell'interruzione pubblicitaria non fanno parte della durata dei contenuti principali.

Le immagini da 1 a 3 di seguito illustrano alcuni contenuti con tipi di annunci diversi e i relativi i rispettivi valori della sequenza temporale. I contenuti sono configurati con un'interruzione pre-roll contenente due clip di interruzione e interruzioni mid-roll e post-roll contenenti con una singola interruzione. Il tempo reale dall'inizio della riproduzione dei contenuti. il tempo multimediale dei contenuti principali e l'ora della pausa attualmente l'interruzione della riproduzione di un clip è allineata sotto ogni figura.

Cronologia degli annunci uniti dal client
. Figura 1: la sequenza temporale che rappresenta alcuni contenuti e le sue tre interruzioni pubblicitarie personalizzate dal client.


Sequenza temporale degli annunci incorporati in un unico server
. Figura 2: la sequenza temporale che rappresenta alcuni contenuti e le sue tre interruzioni pubblicitarie incorporate con lo stitching del server.


Sequenza temporale degli annunci espansi incorporati e integrati dal server
. Figura 3: la sequenza temporale che rappresenta alcuni contenuti e le sue tre interruzioni pubblicitarie espanse e incorporate con lo stitching del server.

Interrompi posizionamento

L'SDK WebRicevir consente agli sviluppatori di specificare la posizione delle interruzioni pubblicitarie inserire impostando position proprietà di Break. Questo valore corrisponde al tempo multimediale del contenuto principale e può essere utilizzato per creare interruzioni pubblicitarie pre-roll, mid-roll e post-roll. Queste sono definite come segue:

Interruzione posizione Descrizione
pre-roll Un'interruzione pubblicitaria riprodotta prima dei contenuti principali. Questo è indicata impostando breakPosition su 0
mid-roll Un'interruzione pubblicitaria riprodotta durante i contenuti. È indicato con impostando breakPosition su un momento in cui l'interruzione l'inizio è maggiore dell'inizio del contenuto principale e l'ora di fine della pausa è inferiore alla fine del contenuto principale nel tempo.
post-roll Un'interruzione pubblicitaria riprodotta dopo i contenuti principali. Questo è indicata impostando breakPosition su -1 per sequenze temporali unite. Per incorporati tempistiche di breakPosition deve essere impostata sulla durata del contenuto principale sottratta da per tutta la durata della pausa. Funzionalità non supportata per i contenuti dal vivo.

Matrice interoperabilità

Come punto di riferimento rapido, la Tabella 1 mostra una panoramica dei tipi di annunci e la compatibilità con le funzionalità relative agli annunci.

Tabella 1: matrice dell'interoperabilità degli annunci
Supporto delle funzionalità annuncio generato manualmente dallo stitching del client VAST VMAP annuncio incorporato annuncio espanso incorporato
compatibile con VAST con stitching manuale da parte del client N/D incorporato espanso incorporato
sequenza temporale con cucitura con cucitura con cucitura incorporato incorporato
inserimento di annunci static static static static statico, dinamico
rimozione di annunci
annuncio pre-roll
annuncio mid-roll
annuncio post-roll
Salta annuncio
intercettore cerca interruzione
intercettatore carico break clip

Eventi

Quando si verificano eventi di interruzione chiave, l'SDK Cast invia eventi di tipo BreaksEvent Un'app ricevente può abbonarsi utilizzando PlayerManager addEventListener tramite Google Cloud CLI o tramite l'API Compute Engine.

Questi eventi possono essere utilizzati per l'analisi e il monitoraggio della riproduzione degli annunci. Quando VMAP (Video Multiple Ad Playlist) e VAST (Video Ad Serving Template) vengono utilizzati, gli eventi di tracciamento standard forniti nelle risposte vengono automaticamente inviato dall'SDK.

I tipi di evento sono elencati nella Tabella 2 insieme a una descrizione dettagliata quando vengono attivati.

Ciclo di vita degli eventi di interruzione
Figura 4: il ciclo di vita degli eventi di interruzione.
Tabella 2: gli eventi di interruzione e le relative descrizioni.
Evento di interruzione Descrizione
BREAK_STARTED Attivato quando l'attuale tempo multimediale dei contenuti principali è uguale al position di una pausa non guardata.
BREAK_CLIP_LOADING Attivato solo quando inizia il caricamento di un clip di interruzione della sequenza temporale unita.
BREAK_CLIP_STARTED Attivato quando viene avviata la riproduzione di un clip di pausa.
BREAK_CLIP_ENDED Attivato al termine di un clip di pausa. La endedReason verrà compilato per le seguenti circostanze:
  • Un clip di interruzione della sequenza temporale unita che è stato riprodotto interamente.
  • Un clip di interruzione della sequenza temporale unita passa a un altro clip di interruzione.
  • Qualsiasi clip di interruzione viene saltata.
  • Il clip dell'ultima interruzione è stato riprodotto interamente in un'interruzione incorporata post-roll.
  • Si è verificato un errore.
BREAK_ENDED Attivato al termine dell'ultimo clip di una pausa.

Inserimento di annunci

L'SDK Cast consente alle applicazioni di inserire e rimuovere annunci in momenti diversi. di una sessione di trasmissione. I due tipi di inserimento di annunci sono statici e dinamici. L'inserimento di annunci statici richiede che vengano specificati annunci nel LoadRequestData: prima della creazione del player. L'inserimento di annunci dinamici utilizza la classe BreakManager: addBreak API per inserire interruzioni nei contenuti già caricati. Ogni tipo di inserimento è compatibile con determinati tipi di annunci. Una compatibilità panoramica è fornita nella matrice di interoperabilità.

Inserimento di annunci statici

L'inserimento di annunci statici viene caratterizzato dall'aggiunta dei metadati dell'annuncio pertinenti prima alla creazione dei player. Queste informazioni vengono fornite nella MediaInformation di LoadRequestData. Ad esempio, può essere impostato nel set di dati richiesta di caricamento originale oppure può essere inserita dall'applicazione WebRicevitore che intercetta la richiesta LOAD. Una volta che LoadRequestData viene restituito SDK Web ricevitore per l'elaborazione, il player viene creato. Vedi di più su caricamento di contenuti multimediali. L'esempio di seguito mostra un annuncio con stitching manuale manuale che viene aggiunto alla richiesta LOAD intercettore.

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;
});

Inserimento di annunci dinamici

L'inserimento di annunci dinamici è caratterizzato dall'impostazione di un'interruzione pubblicitaria durante i contenuti per riprodurre un video. Per farlo, devi ottenere un'istanza di BreakManager e chiamare il addBreak tramite Google Cloud CLI o tramite l'API Compute Engine. che richiede almeno due parametri, incorporato espanso Break e un array di BreakClip. È inclusa una terza proprietà facoltativa per forzare l'invio delle modifiche a mittenti connessi tramite una trasmissione MediaStatus se impostato su true. Quando aggiungendo interruzioni e clip di interruzione, gli ID corrispondenti devono essere univoci. Questi annunci può essere aggiunto solo dopo la creazione del player. Viene attivato l'SDK WebRicevir il PLAYER_LOADING una volta creato il player. Guarda l'esempio di seguito che mostra l'utilizzo in un gestore di eventi che risponda alle modifiche nei metadati ID3 di uno stream, crea oggetti Break e BreakClip per inserirli nella sequenza temporale.

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]);
});

Rimozione di annunci dinamici

Per rimuovere le interruzioni dinamiche, l'applicazione deve richiamare removeBreakById durante la riproduzione. La funzione acquisisce un identificatore di stringa dell'interruzione da rimosso dalla sequenza temporale. Il parametro breakId specificato deve puntare a un elemento incorporato interruzione pubblicitaria espansa. Se viene rilevato qualsiasi altro tipo di interruzione pubblicitaria, l'interruzione rimangono nella sequenza temporale. Di seguito è riportato l'esempio che rimuove un'interruzione.

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

breakManager.removeBreakById('break_midroll_embedded_expanded');

Comportamento delle interruzioni

L'SDK definisce un comportamento predefinito per quando il player inserisce e lascia le interruzioni e offre un modo per personalizzarlo ulteriormente utilizzando alcune delle API fornite nel BreakManager

Comportamento predefinito per l'interruzione

Quando viene inserito un Break tramite la riproduzione normale o cercando sopra un Break, l'SDK valuterà se l'utente l'ha già visto controllando il isWatched proprietà. Quando viene creata, il valore predefinito di un'interruzione per questa proprietà è false. Se La proprietà è true, l'interruzione non verrà riprodotta se inserita e principale la riproduzione dei contenuti continuerà. Se la proprietà è false, l'interruzione sarà vengono riprodotti quando inseriti.

Quando cercano le pause, l'implementazione predefinita ottiene tutti i Break elementi il cui position si trova tra seekFrom: e seekTo e i relativi valori. In questo elenco di interruzioni, l'SDK riprodurrà l'elemento Break, il cui position è il più vicino al valore seekTo e la cui proprietà isWatched è impostata su false. La proprietà isWatched dell'interruzione verrà quindi impostata su true e il player inizierà a riprodurre i suoi clip di interruzione. Dopo aver guardato la pausa, la riproduzione dei contenuti principali riprenderà dalla posizione seekTo. In caso contrario, l'interruzione esiste, non verrà riprodotta alcuna interruzione e riprenderanno i contenuti principali gioca nella posizione seekTo.

Durante la riproduzione, l'SDK trasmette tutti gli aggiornamenti pertinenti le applicazioni di mittenti MediaStatus Queste applicazioni utilizzeranno gli annunci per aggiornare l'interfaccia utente per gli annunci il breakStatus proprietà. Questa proprietà viene definita soltanto durante la riproduzione delle interruzioni.

Le applicazioni ricevitori possono anche interrogare direttamente le informazioni relative al posizione della testina di riproduzione rispetto all'ora corrente di BreakClip mostrato chiamando PlayerManager getBreakClipCurrentTimeSec Allo stesso modo, le applicazioni possono eseguire query sulla durata dell'attuale BreakClip mediante chiamata getBreakClipDurationSec

Comportamento dell'interruzione personalizzata

Il comportamento predefinito per le interruzioni e i clip di interruzione possono essere modificati setBreakClipLoadInterceptor: e setBreakSeekInterceptor metodi forniti in BreakManager.

Intercettore di ricerca interruzione

L'intercettatore di ricerca dell'interruzione consente all'app di controllare il comportamento della ricerca rispetto alle interruzioni pubblicitarie. La funzione viene attivata quando viene richiesta un'operazione di ricerca che si sposta avanti o indietro sopra una o più interruzioni. Quando viene chiamato, BreakSeekData viene passato come parametro alla funzione callback. L'oggetto BreakSeekData contiene un array di Break oggetti la cui proprietà position è impostata su un numero compreso tra tempo di riproduzione definito come seekFrom e l'ora di ricerca della destinazione seekTo

Questo intercettore consente agli oggetti Break nelle rispettive interruzioni di essere modificato. Se implementata, l'intercettatore di ricerca dell'interruzione deve specificare quale annuncio da riprodurre restituendo un oggetto BreakSeekData modificato facoltativamente. La il giocatore continuerà a giocare tutte le interruzioni incluse nel valore restituito. Se un valore di null o non viene restituito nulla dall'intercettatore di ricerca dell'interruzione, l'interruzione è saltato.

Guarda l'esempio riportato di seguito per una semplice implementazione dell'intercettore, sostituisce il comportamento predefinito per guardare tutte le interruzioni pubblicitarie cercate con il ad eccezione delle interruzioni già guardate.

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;
});

Intercettore di caricamento del clip di interruzione

Utilizzando l'intercettatore di carico del clip di interruzione, è possibile modificare un oggetto BreakClip prima che inizi la riproduzione.

L'intercettatore di carico del clip di interruzione è chiamato solo per interruzioni della sequenza temporale unite e possono essere impostati utilizzando setBreakClipLoadInterceptor Prima di inserire un valore Break, questo intercettore viene chiamato una volta per ogni individuo BreakClip definito in quell'interruzione. L'SDK trasmette i dati BreakClip come parametro della funzione callback. L'applicazione può quindi modificare questo BreakClip e restituirlo in modo che l'SDK possa recuperare e visualizzare l'interruzione con la configurazione aggiornata. Se null o non viene restituito nulla, l'interruzione viene saltato il clip.

Di seguito è riportato un esempio che modifica contentUrl dei clip di interruzione con una chiamata di funzione di utilità getUrlFromClipId, dove id di BreakClip è mappato a un 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;
});

Salta annuncio

L'SDK WebRicevir fornisce API per saltare le interruzioni pubblicitarie e i singoli clip delle interruzioni durante un'interruzione pubblicitaria. L'SDK consente inoltre agli utenti di saltare facoltativamente i clip delle interruzioni interagendo con le applicazioni di invio o gli smart display.

Clip di interruzione ignorabili dell'utente

L'impostazione dei clip di interruzione come ignorabili consente agli utenti di interagire con il mittente connesso applicazioni e smart display in modo da saltare il resto è attualmente in riproduzione un clip di interruzione. L'impostazione del parametro whenSkippable con un numero non negativo di secondi abiliterà questa funzionalità per BreakClip oggetto. Il player considererà ignorabile il clip di interruzione una volta che è stato riprodotto il numero di secondi specificato. Se imposti questo valore su 0, consente agli utenti di saltare subito il clip dell'interruzione.

// 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.

Queste informazioni possono essere impostate nella richiesta di caricamento originale del mittente o nel ricevitore. Se l'azione viene saltata, un clip di interruzione in un'interruzione pubblicitaria della sequenza temporale unita. interrompe la riproduzione del clip di interruzione corrente. Il player caricherà interrompi clip, se presente, o carica i contenuti principali. Se l'azione viene saltata, il clip di un'interruzione un'interruzione pubblicitaria nella sequenza temporale incorporata cercherà fino alla fine del clip dell'interruzione continua la riproduzione dello stream a quel punto.

Saltare gli annunci in modo programmatico

Gli annunci possono anche essere ignorati automaticamente senza alcuna interazione da parte dell'utente.

Per saltare un'intera pausa dalla riproduzione, un'applicazione deve impostare la classe isWatched: di un valore da Break a true. Questa operazione può essere eseguita in qualsiasi momento durante il caricamento sequenza o contenuti. La proprietà isWatched viene valutata dalla player quando il valore position di una pausa viene soddisfatto nell'ora attuale dei contenuti principali. Alle ore in quel punto, sarà il giocatore a decidere se inserire o meno una pausa. Osserva l'esempio riportato di seguito che si ripete in tutte le interruzioni e modifica le durante il caricamento del player.

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;
  });
});

Per saltare un clip di interruzione specifica in modo programmatico, utilizza il comando deve essere utilizzato l'intercettatore di caricamento del clip di interruzione. Di restituendo null o non restituendo un valore nella funzione di callback, il clip in l'interruzione verrà saltata.

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

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