Descripción general
El SDK de receptor web cuenta con compatibilidad nativa para pausas publicitarias y anuncios complementarios en una transmisión de contenido multimedia determinada. Proporciona API para establecer la posición y la fuente del anuncio, el comportamiento de las pausas publicitarias y sus clips de pausas asociados. En esta guía, un Break
hace referencia a un intervalo de reproducción que contiene uno o más anuncios o anuncios bumper. Cada anuncio o anuncio bumper se denomina BreakClip
.
Estas pausas están asociadas al contenido multimedia que se está cargando o reproduciendo.
Tipos de anuncios
El SDK de receptor web admite la inserción de anuncios del lado del cliente (CSAI) y la inserción de anuncios unidos del servidor (SSAI). La aplicación puede unir de forma manual los anuncios unidos o se pueden extraer de los archivos de plantilla VAST y VMAP. Los anuncios unidos al servidor deben especificarse de forma manual antes de que el contenido se cargue como anuncios incorporados, o bien de forma dinámica durante la reproducción de contenido como anuncios integrados expandidos. Las implementaciones para cada uno de estos tipos de anuncios se describen en detalle a continuación.
unión manual del cliente
La pausa publicitaria manual unida al cliente es un tipo de pausa publicitaria que el cliente une y que la aplicación especifica con las API del SDK de forma manual. Este tipo de anuncio no está incorporado en la transmisión del contenido principal. El BreakClip
debe proporcionar el contentId
, que es una URL que apunta al contenido del anuncio, el contentType
que describe el formato del contenido del anuncio y el title
.
Break
debe tener isEmbedded
y expanded
establecidos en el valor predeterminado false
. El position
se puede configurar en una pausa publicitaria del anuncio previo al video, del anuncio durante el video o del anuncio final del video (obtén más información en la sección de posicionamiento de la pausa). Cuando preparas el anuncio para reproducirlo, el SDK de receptor web genera otra instancia de reproductor a fin de cargar y reproducir el contenido del anuncio. Estas pausas requieren una stitched timeline
y deben agregarse de forma estática (obtén más información en la sección Inserción de anuncios). En el siguiente ejemplo, se muestra una implementación básica de un anuncio manual unido por el 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
El SDK de recepción web admite la adición de anuncios VAST (plantilla de publicación de anuncios de video) estándar de IAB. Cuando se proporciona, la plantilla XML se analiza para generar un clip de pausa posterior unido por el cliente al ingresar la pausa.
Para crear un anuncio de VAST, la app receptora debe crear una
VastAdsRequest
y especificarla en la propiedad BreakClip
vastAdsRequest
. El objeto VastAdsRequest
debe tener definida la propiedad adsResponse
(una representación de string de la propia plantilla XML) o adTagUrl
(la URL en la que se aloja la plantilla XML). Si se especifica la URL, el SDK se encargará de recuperar la plantilla. El encapsulamiento de Break
sigue las convenciones para anuncios unidos por el cliente. Estos anuncios se pueden agregar junto con otros anuncios unidos manualmente por el cliente en la misma pausa o en pausas separadas para el mismo contenido. En el siguiente ejemplo, se muestra una implementación básica de un anuncio de VAST:
// 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.
Cuando se ingresa un Break
que contiene un BreakClip
de VAST, el SDK del receptor web tiene la opción de recuperar y, luego, analizar la plantilla. Durante el análisis, el SDK generará un BreakClip
nuevo y lo propagará con los valores extraídos de la plantilla, como contentId
, contentType
, title
, duration
, whenSkippable
y clickThroughUrl
. El id
del clip de pausa generado se establece en GENERATED:N
, en el que N
es un número entero que aumenta en 1
para cada clip de pausa VAST nuevo creado a partir de 0
. Luego, se agrega el anuncio generado al array BreakClip
. Cada id
de clip de pausa de VAST en el Break
actual se reemplaza por el id
del clip de pausa generado correspondiente. Los siguientes fragmentos ilustran los cambios en los mensajes MEDIA_STATUS
que se relacionan con los anuncios antes y después de ingresar una pausa de ese tipo.
Información de Break
y de BreakClip
antes de ingresar una pausa con los anuncios de VAST
"breaks": [
{
"id": "break_postroll_vast",
"breakClipIds": [
"bc_vast"
],
"position": 0,
"isWatched": false
}
],
"breakClips": [
{
"id": "bc_vast"
}
]
Información de Break
y BreakClip
después de ingresar una pausa con los anuncios de 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
El SDK de receptor web admite el estándar VMAP (listas de reproducción de varios videos) de IAB. Cuando se proporciona una VMAP, el SDK de Web Receptor analizará la respuesta de VMAP y generará objetos Break
unidos para cualquier entrada <AdBreak>
en la respuesta. También generará el BreakClips
adecuado con un objeto vastAdsRequest
para cada entrada <AdSource>
proporcionada en la VMAP. A fin de habilitar VMAP para insertar anuncios en tu contenido, la aplicación debe crear un objeto VastAdsRequest
y asignarlo a la propiedad vmapAdsRequest
de MediaInformation
en LoadRequestData
.
Estos anuncios deben insertarse de forma estática (obtén más información en la sección Inserción de anuncios). A continuación, se muestra un fragmento que describe la creación de una solicitud de 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
La pausa publicitaria incorporada es un tipo de pausa publicitaria que se une del lado del flujo principal del contenido. La duración de Break
se resta de la duración del contenido principal cuando se calcula el tiempo multimedia.
El BreakClip
debe proporcionar el duration
del contenido del anuncio y el title
.
Break
debe tener isEmbedded
configurado como true
y expanded
configurado como false
. El position
se puede establecer como una pausa publicitaria de anuncio previo al video o anuncio durante el video. Las pausas publicitarias de anuncio al final del video son compatibles con valores position
exactos exactos. Obtén más información al respecto en la sección posicionamiento de pausas. Cuando se activa la reproducción del anuncio, el SDK de Web Receiver continúa con la reproducción de la transmisión mientras los segmentos de anuncios están incorporados en ella. No hay ningún mecanismo de carga adicional para este tipo de anuncio.
Los metadatos de anuncios relevantes se muestran al usuario una vez que el cabezal de reproducción se encuentra dentro del intervalo de tiempo de pausa. Estas pausas requieren una embedded timeline
y deben agregarse de forma estática (obtén más información en la sección Inserción de anuncios). En el siguiente ejemplo, se muestra la implementación básica de un anuncio 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.
expandido incorporado
La pausa publicitaria integrada incorporada es un tipo de pausa publicitaria que se une del servidor a la transmisión del contenido principal. La duración del objeto Break
se incluye en la del contenido principal cuando se calcula el tiempo multimedia.
El BreakClip
debe proporcionar el duration
del contenido del anuncio y el title
.
El Break
debe tener el isEmbedded
configurado en true
y el expanded
establecido en true
. El position
se puede establecer como una pausa publicitaria de anuncio previo al video o anuncio durante el video. Las pausas publicitarias de anuncio final del video son compatibles con los valores positivos de position
. Obtén más información al respecto en la sección posicionamiento de pausas. Cuando se activa la reproducción del anuncio, el SDK de Web Receiver continúa con la reproducción de la transmisión mientras los segmentos de anuncios están incorporados en ella. No hay ningún mecanismo de carga adicional para este tipo de anuncio.
Los metadatos de anuncios relevantes se muestran al usuario una vez que el cabezal de reproducción se encuentra dentro del intervalo de tiempo de pausa. Estas pausas requieren un embedded timeline
y se pueden agregar de forma estática o dinámica (obtén más información en la sección inserción de anuncios). En el siguiente ejemplo, se muestra una implementación básica de un anuncio 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 cronograma del jugador
Cuando se crea una instancia de reproductor, el SDK de receptor web selecciona un tipo de cronograma para admitir la reproducción de anuncios durante la reproducción de contenido. Cada cronograma permite agregar ciertos tipos de pausas publicitarias. El tipo de cronograma se determina mediante los tipos de anuncio presentes durante el tiempo de carga en la etiqueta MediaInformation
de LoadRequestData
.
Si hay pausas publicitarias incorporadas, se selecciona el cronograma embedded
. Si hay pausas publicitarias unidas, se selecciona el cronograma stitched
.
En caso de que no haya anuncios, el SDK usará el cronograma embedded
de forma predeterminada. Una vez que se selecciona el cronograma, no se puede cambiar para el elemento multimedia actual. En la siguiente tabla, se proporciona una descripción detallada de cada cronograma.
Tipo de cronograma | Descripción |
---|---|
cronograma incorporado | Una representación del tiempo multimedia que admite anuncios incorporados en el contenido principal (pausas de anuncios incorporadas y incorporadas). Cuando hay una pausa publicitaria sin expandir, la duración se quita de la duración total del contenido. Por otro lado, cuando hay una pausa publicitaria expandida, el tiempo se considera parte del contenido principal. |
línea de tiempo unida | Es una representación del tiempo de medios que admite anuncios procedentes de archivos multimedia externos (pausas manuales unidas por el cliente, VAST y VMAP). Cuando se agrega, la duración de la pausa publicitaria no forma parte de la duración del contenido principal. |
En las Figuras 1 a 3 que aparecen a continuación, se muestra cierto contenido con varios tipos de anuncios y sus respectivos valores para el cronograma. El contenido se configura con una pausa de anuncio previo al video que contiene dos clips de pausa, así como pausas para anuncios durante el video, que contienen un solo clip de pausa. El tiempo real desde el inicio de la reproducción de contenido, el tiempo multimedia del contenido principal y la hora del clip de pausa de la pausa que se está reproduciendo se alinean debajo de cada figura.
Posicionamiento de pausa
El SDK de receptor web permite a los desarrolladores especificar dónde se deben colocar las pausas publicitarias mediante la configuración de la propiedad position
de la Break
. Este valor corresponde a la hora del contenido multimedia del contenido principal y se puede usar para crear pausas publicitarias de pre-roll
, mid-roll
y post-roll
.
Se definen de la siguiente manera:
Posición de pausa | Descripción |
---|---|
Anuncio previo al video | Es una pausa publicitaria que se reproduce antes del contenido principal. Para indicar esto, se establece breakPosition en 0 . |
Anuncio durante el video | Es una pausa publicitaria que se reproduce en medio del contenido. Esto se indica mediante la configuración de breakPosition en una hora en la que el inicio de la pausa es mayor que el inicio del contenido principal y la hora de finalización de la pausa es menor que la hora de finalización del contenido principal. |
al final del video | Es una pausa publicitaria que se reproduce después del contenido principal. Esto se indica mediante la configuración de breakPosition en -1 para los cronogramas unidos. En los cronogramas incorporados, breakPosition se debe establecer en la duración del contenido principal restado por la duración de la pausa. No es compatible con el contenido en vivo. |
Matriz de interoperabilidad
Como punto de referencia rápido, la Tabla 1 muestra una descripción general de los tipos de anuncios y su compatibilidad con funciones relacionadas con los anuncios.
Compatibilidad de características | anuncio manual unido por el cliente | VAST | VMAP | anuncio incorporado | anuncio expandido incorporado |
---|---|---|---|---|---|
compatible con | VAST | unión manual del cliente | N/A | expandido incorporado | incorporado |
línea de tiempo | cosido | cosido | cosido | incorporado | incorporado |
inserción de anuncios | static | static | static | static | estático, dinámico |
eliminación de anuncios | |||||
anuncio previo al video | |||||
anuncio durante el video | |||||
anuncio al final del video | |||||
omisión de anuncios | |||||
interceptor de búsqueda de pausa | |||||
interceptor de carga de clip de pausa |
Events
Cuando se produzcan eventos de pausa clave, el SDK de transmisión enviará eventos de tipo BreaksEvent
.
Una app receptora puede suscribirse a ellos mediante la API de PlayerManager
addEventListener
.
Estos eventos se pueden utilizar para generar estadísticas y realizar un seguimiento de la reproducción de anuncios. Cuando se usan anuncios de VMAP (lista de reproducción de varios anuncios de video) y VAST (plantilla de publicación de anuncios de video), el SDK envía automáticamente todos los eventos de seguimiento estándar que se proporcionan en las respuestas.
Los tipos de eventos se enumeran en la Tabla 2 junto con una descripción detallada de cuándo se activan.
Evento de pausa | Descripción |
---|---|
BREAK_STARTED |
Se activa cuando el tiempo multimedia actual del contenido principal es igual al position de una pausa no vista. |
BREAK_CLIP_LOADING |
Se activa solo cuando comienza a cargarse un clip de pausa de un cronograma de unión. |
BREAK_CLIP_STARTED |
Se activa cuando se inicia la reproducción de un clip de pausa. |
BREAK_CLIP_ENDED |
Se activa cuando finaliza un clip de pausa. El
endedReason
se propagará en las siguientes circunstancias:
|
BREAK_ENDED |
Se activa cuando finaliza el último clip de una pausa. |
Inserción de anuncios
El SDK de transmisión permite a las aplicaciones insertar y quitar anuncios en diferentes momentos de una sesión de transmisión. Los dos tipos de inserción de anuncios son estática y dinámica.
La inserción de anuncios estáticos requiere que los anuncios se especifiquen en LoadRequestData
antes de la creación del reproductor. La inserción de anuncios dinámicos utiliza la API de BreakManager
addBreak
para insertar pausas en el contenido ya cargado. Cada tipo de método de inserción es compatible con ciertos tipos de anuncios. Se proporciona una descripción general de compatibilidad en la matriz de interoperabilidad.
Inserción de anuncios estáticos
La inserción de anuncios estáticos se caracteriza por agregar los metadatos de anuncios relevantes antes de la creación del reproductor. Esta información se proporciona en el MediaInformation
de la LoadRequestData
. Por ejemplo, esto se puede configurar en la solicitud de carga original de un remitente conectado o se puede insertar mediante la aplicación Receptor web interceptando la solicitud LOAD
. Una vez que se muestra el LoadRequestData
al SDK de la app receptora para procesarlo, se crea el reproductor. Obtén más información para cargar contenido multimedia. En el siguiente ejemplo, se muestra cómo se agrega un anuncio unido de forma manual por el cliente en el interceptor de solicitud LOAD
.
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;
});
Inserción de anuncios dinámicos
La inserción de anuncios dinámicos se caracteriza por establecer una pausa publicitaria durante la reproducción de contenido. Para ello, debes obtener una instancia de BreakManager
y llamar a la API de addBreak
. Esto requiere dos parámetros como mínimo, un objeto Break
incorporado y un array de BreakClip
.
Se incluye una tercera propiedad opcional para forzar el envío de los cambios a remitentes conectados a través de una transmisión MediaStatus
cuando se establece en true
. Cuando agregues pausas y clips de pausa, los ID correspondientes deben ser únicos. Estos anuncios solo se pueden agregar una vez que se crea el reproductor. El SDK de Web Receiver activa el evento PLAYER_LOADING
una vez que se crea el reproductor. Consulta el siguiente ejemplo que muestra el uso en un controlador de eventos que responde a cambios en los metadatos de ID3 de una transmisión y crea objetos Break
y BreakClip
para insertarlos en el cronograma.
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]);
});
Eliminación de anuncios dinámicos
Para quitar pausas dinámicas, la aplicación debe llamar a removeBreakById
durante la reproducción. La función toma un identificador de string de la pausa que se quitará del cronograma. El breakId
especificado debe apuntar a una pausa publicitaria incorporada. Si se detecta otro tipo de pausa publicitaria, esta permanece en el cronograma. Consulta la siguiente muestra para quitar un descanso.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.removeBreakById('break_midroll_embedded_expanded');
Comportamiento de los descansos
El SDK define un comportamiento predeterminado cuando el jugador entra y sale de las pausas, y proporciona una manera de personalizarlo aún más con algunas de las APIs proporcionadas en BreakManager
.
Comportamiento predeterminado de las pausas
Cuando se ingresa un Break
a través de una reproducción normal o buscando un Break
, el SDK evaluará la propiedad isWatched
para evaluar si el usuario ya lo vio. Cuando se crea, el valor predeterminado de una pausa para esta propiedad es false
. Si la propiedad es true
, la pausa no se reproducirá cuando se ingrese y el contenido principal seguirá reproduciéndose. Si la propiedad es false
, la pausa se reproducirá cuando se ingrese.
Cuando se buscan pausas pasadas, la implementación predeterminada obtiene todos los elementos Break
cuyo position
está entre los valores seekFrom
y seekTo
de la operación de búsqueda. En esta lista de pausas, el SDK reproducirá el elemento Break
cuyo position
esté más cerca del valor seekTo
y cuya propiedad isWatched
esté configurada como false
. Luego, se establecerá la propiedad isWatched
de la pausa en true
y el jugador comenzará a reproducir sus clips de pausa. Una vez que se observe la pausa, el contenido principal reanudará la reproducción desde la posición seekTo
. Si no existe tal pausa, no se reproducirá ninguna pausa y el contenido principal se reanudará en la posición seekTo
.
Durante la reproducción de pausa, el SDK transmitirá cualquier actualización relevante a las aplicaciones de remitente conectadas en el MediaStatus
.
Estas aplicaciones leerán la propiedad breakStatus
para usar las transmisiones a fin de actualizar su IU para anuncios. Esta propiedad se define solo durante la reproducción de pausas.
MEDIA_STATUS
Las aplicaciones receptoras también pueden consultar directamente la información relacionada con la posición del cabezal de reproducción con respecto a la hora actual del BreakClip
que se muestra llamando a PlayerManager
getBreakClipCurrentTimeSec
.
Del mismo modo, las aplicaciones pueden llamar a getBreakClipDurationSec
para consultar la duración del elemento BreakClip
actual.
Comportamiento de las pausas personalizadas
El comportamiento predeterminado de las pausas y los clips de pausa se puede modificar con los métodos setBreakClipLoadInterceptor
y setBreakSeekInterceptor
proporcionados en BreakManager
.
Interruptor de búsqueda de pausa
El interceptor de búsqueda de pausa permite que la app controle el comportamiento de búsqueda en las pausas publicitarias. La función se activa cuando se solicita una operación de búsqueda que busca hacia adelante o hacia atrás durante una o más pausas. Cuando se llama a la función, se pasa BreakSeekData
como parámetro a la función de devolución de llamada. El objeto BreakSeekData
contiene un array de objetos Break
cuya propiedad position
se establece en un número entre la hora del cabezal de reproducción actual definida como seekFrom
y la hora de destino de búsqueda seekTo
.
Este interceptor permite que se modifiquen los objetos Break
en las respectivas pausas. Cuando se implementa, el interceptor de búsqueda de pausa debe especificar qué pausas publicitarias mostrar y mostrar un objeto BreakSeekData
modificado de forma opcional. El jugador continuará reproduciendo todas las pausas incluidas en el valor que se muestra. Si un valor de null
o no se muestra nada del interceptor de búsqueda de pausa, se omite la pausa.
Consulta la siguiente muestra para ver una implementación simple del interceptor que anula el comportamiento predeterminado a fin de mirar todas las pausas publicitarias que se buscaron, con la excepción de las pausas ya vistas.
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;
});
Rompe el interceptor de carga del clip
Con el interceptor de carga de clips de pausa, se puede modificar un objeto BreakClip
antes de que comience la reproducción.
El interceptor de carga del clip de pausa solo se llama para pausas del cronograma unidas y se puede configurar con setBreakClipLoadInterceptor
.
Antes de ingresar un Break
, se llama a este interceptor una vez para cada BreakClip
individual definido en ese descanso. El SDK pasa el objeto BreakClip
original como parámetro de la función de devolución de llamada. La aplicación puede modificar este BreakClip
y mostrarlo para que el SDK pueda recuperar y mostrar el clip de pausa con la configuración actualizada. Si se muestra null
o no se muestra nada, se omite el clip de pausa.
A continuación, se muestra un ejemplo que modifica el contentUrl
de los clips de pausa con una llamada a función getUrlFromClipId
de utilidad, en la que el id
del BreakClip
se asigna a una 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;
});
Omisión de anuncios
El SDK de Web Receiver proporciona API para omitir pausas de anuncios y clips de pausas individuales dentro de una pausa de anuncios. El SDK también permite a los usuarios omitir clips de pausa de forma opcional mediante la interacción con sus aplicaciones de remitente o pantallas inteligentes.
Clips de pausa que se pueden omitir del usuario
Si configuras los clips de pausa como que se pueden omitir, los usuarios podrán interactuar con las aplicaciones del remitente y los dispositivos de pantalla inteligentes conectados para omitir el resto de un clip de pausa que se esté reproduciendo. Si estableces la propiedad whenSkippable
en una cantidad de segundos no negativa, se habilitará esta función para el objeto BreakClip
. El jugador considerará que el clip de pausa se puede omitir una vez que se haya reproducido durante esa cantidad de segundos. Establecer este valor en 0
permite a los usuarios omitir el clip de pausa de inmediato.
// 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.
Esta información se puede configurar en la solicitud de carga original del remitente o en la app receptora. Cuando se omite, un clip de pausa en un cronograma de unión de anuncios dejará de reproducir el clip de pausa actual. El reproductor cargará el siguiente clip de pausa si está presente o cargará el contenido principal. Si se omite, un clip de pausa en un cronograma de cronograma incorporado buscará al final del clip de pausa y continuará la reproducción de la transmisión en ese punto.
Omite anuncios de manera programática
Los anuncios también pueden omitirse automáticamente sin ninguna interacción del usuario.
Para omitir una pausa completa de la reproducción, una aplicación debe establecer la propiedad isWatched
de una Break
en true
. Esto se puede hacer en cualquier momento durante la secuencia de carga o la reproducción de contenido. El jugador evalúa la propiedad isWatched
cuando se cumple el position
de una pausa en la hora actual del contenido principal. En ese momento, el jugador determinará si debe ingresarse o no una pausa.
Consulta el siguiente ejemplo, en el que se repiten todas las pausas y se modifica el valor cuando se carga el reproductor.
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 omitir un clip de pausa específico de manera programática, debes usar el interceptor de carga de clip de pausa. Si se muestra null
o no se muestra un valor en la función de devolución de llamada, se omitirá el clip de esa pausa.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();
breakManager.setBreakClipLoadInterceptor(
(breakClip, breakClipLoadInterceptorContext) => {
return null;
});