La inserción de publicidad resuelve los anuncios para vídeo bajo demanda (VOD) , para flujo continuo en directo y para flujo lineal con seguimiento de anuncios y reproducción de anuncios. TVSDK realiza las solicitudes necesarias al servidor de publicidad, recibe información sobre las publicidades del contenido especificado y coloca las publicidades en el contenido por fases.
Un ad break
contiene uno o más anuncios que se reproducen en secuencia. TVSDK inserta anuncios en el contenido principal como miembros de una o más pausas publicitarias.
Si el anuncio tiene errores, TVSDK ignora el anuncio.
TVSDK admite varios casos de uso para la resolución e inserción de anuncios de VOD.
TVSDK resuelve los anuncios, los inserta en ubicaciones definidas por el servidor de publicidad y calcula la cronología virtual antes de que comience la reproducción. Una vez que comienza la reproducción, no se pueden producir cambios, como insertarse o eliminar anuncios insertados.
TVSDK admite varios casos de uso para la resolución y la inserción de anuncios en directo y lineal.
TVSDK resuelve los anuncios e inserta los anuncios cuando se encuentra un punto de referencia en el flujo en directo o lineal. De forma predeterminada, TVSDK admite las siguientes indicaciones como marcadores de publicidad válidos al resolver y colocar anuncios:
Estos marcadores requieren el DURATION
en segundos del campo de metadatos y el ID exclusivo del cue. Por ejemplo:
#EXT-X-CUE DURATION=27 ID=identiferForThisCue ...
Para obtener más información sobre sugerencias adicionales, consulte Suscribirse a etiquetas personalizadas.
TVSDK rastrea automáticamente los anuncios para VOD y flujo en directo/lineal.
Las notificaciones se utilizan para informar a la aplicación del progreso de una publicidad, incluida la información sobre cuándo comienza y cuándo finaliza una publicidad.
Para la inserción de anuncios en directo, es posible que tenga que salir de una pausa publicitaria antes de que todos los anuncios de la pausa se reproduzcan hasta el final.
Estos son algunos ejemplos de un retorno anticipado de pausa publicitaria:
Duración de la pausa publicitaria en determinados eventos deportivos.
Aunque se proporciona una duración predeterminada, si el juego se reanuda antes de que finalice la pausa publicitaria, esta debe salir.
Señal de emergencia durante una pausa publicitaria en una emisión en directo.
La capacidad de salir de una pausa publicitaria anticipadamente se identifica mediante una etiqueta personalizada en el manifiesto conocida como empalme o etiqueta de inclusión. TVSDK permite que la aplicación se suscriba a estas etiquetas de complemento para proporcionar una oportunidad de complemento.
Para utilizar la etiqueta #EXT-X-CUE-IN
como una oportunidad de inicio de secuencia e implementar un retorno de pausa publicitaria anticipado:
Suscríbase a la etiqueta .
[PTSDKConfig setSubscribedTags:[NSArray arrayWithObject:@"#EXT-X-CUE-IN"]];
Añada la resolución de oportunidad de cue-in.
// self.player is the PTMediaPlayer instance created for content and ad playback
PTDefaultMediaPlayerClientFactory *clientFactory = self.player.mediaPlayerClientFactory;
// Set cue in opportunity resolver
[clientFactory registerOpportunityResolver:[PTDefaultAdSpliceInOpportunityResolver adSpliceInOpportunityResolverWithTag:@"#EXT-X-CUE-IN"]];
Para compartir la misma etiqueta para el empalme y el empalme:
Si la aplicación está compartiendo el mismo cue para indicar cue-out/splice-out y cue-in/splice-in, amplíe PTDefaultAdOpportunityResolver
e implemente el método preparePlacementOpportunity
.
El siguiente código supone que la aplicación tiene una implementación para el método isCueInOpportunity
.
- (PTPlacementOpportunity *)preparePlacementOpportunity:(PTTimedMetadata *)timedMetadata
{
if ([self isCueInOpportunity:timedMetadata])
{
return [PTPlacementOpportunity advertisementSpliceInOpportunityWithTimedMetadata:timedMetadata];
}
else
{
return [super preparePlacementOpportunity:timedMetadata];
}
}
Registre la resolución de oportunidad extendida en la instancia PTDefaultMediaPlayerClientFactory
.
// self.player is the PTMediaPlayer instance created for content and ad playback
PTDefaultMediaPlayerClientFactory *clientFactory = self.player.mediaPlayerClientFactory;
// Clear existing resolver and register the new opportunity resolver
[clientFactory clearOpportunityResolvers];
[clientFactory registerOpportunityResolver:[[PTDefaultExtendedAdOpportunityResolver new] autorelease]];