Contenido principal activo con seguimiento secuencial live-main-content-with-sequential-tracking
Escenario scenario
En este escenario, hay un recurso activo sin anuncios reproducidos durante 40 segundos tras unirse a la emisión en directo.
Este es el mismo escenario que el de reproducción de VOD sin anuncios, pero una parte del contenido se analiza y se hace una búsqueda desde un punto del contenido principal hasta otro punto.
Parámetros parameters
Inicio del contenido de Heartbeat
s:sc:rsid
s:sc:tracking_serve
s:user:mid
s:user:mid
s:event:type
"start"
s:asset:type
"main"
s:asset:media_id
s:stream:type
live
s:meta:*
Reproducción del contenido de Heartbeat heartbeat-content-play
Esto debería parecerse casi exactamente a la llamada de Inicio de Contenido del Latido, pero con la diferencia clave en el parámetro " stipo". Todos los parámetros deben seguir en su lugar.
s:event:type
"play"
s:asset:type
"main"
Latidos de contenido content-heartbeats
Durante la reproducción de contenidos, hay un temporizador que enviará uno o más latidos cada 10 segundos para el contenido principal y cada segundo para los anuncios. Estos latidos tendrán información sobre la reproducción, los anuncios, el almacenamiento en búfer y muchas otras cosas. El contenido exacto de cada latido está fuera del ámbito de este documento. Lo más importante para validar es que los latidos se activan de forma coherente durante la reproducción.
En los latidos de contenido, busque algunas cosas específicas:
s:event:type
"play"
l:event:playhead
Finalización de contenido de Heartbeat heartbeat-content-complete
Cuando se completa la reproducción de un episodio determinado (el cabezal de reproducción cruza el límite del episodio), se envía una llamada de finalización de contenido de Heartbeat. Esto se parece a otras llamadas de Heartbeat, pero tiene un par de cuestiones específicas:
s:event:type
"complete"
s:asset:type
"main"
Código de muestra sample-code
Android
Este es el orden esperado de las llamadas de API:
// Set up mediaObject
MediaObject mediaInfo = MediaHeartbeat.createMediaObject(
Configuration.MEDIA_NAME,
Configuration.MEDIA_ID,
Configuration.MEDIA_LENGTH,
MediaHeartbeat.StreamType.LIVE
);
HashMap<String, String> mediaMetadata = new HashMap<String, String>();
mediaMetadata.put(CUSTOM_VAL_1, CUSTOM_KEY_1);
mediaMetadata.put(CUSTOM_VAL_2, CUSTOM_KEY_2);
// 1. Call trackSessionStart() when the user clicks Play or if autoplay is used,
// i.e., when there is an intent to start playback.
_mediaHeartbeat.trackSessionStart(mediaInfo, mediaMetadata);
......
......
// 2. Call trackPlay() when the playback actually starts, i.e., when the first
// frame of main content is rendered on the screen.
_mediaHeartbeat.trackPlay();
.......
.......
// 3. Call trackComplete() when the playback reaches the end of session,
// i.e., when the media completes and finishes playing 1st episode/session.
_mediaHeartbeat.trackComplete();
........
........
// 4. Call trackSessionEnd() to end session 1
_mediaHeartbeat.trackSessionEnd();
........
........
// Start tracking session 2 /episode 2 of the same live stream.
// There is no need to reinstantiate a mediaHeartbeat instance for tracking sesison 2.
// Set up mediaObject
MediaObject mediaInfo = MediaHeartbeat.createMediaObject(
Configuration.MEDIA_NAME,
Configuration.MEDIA_ID,
Configuration.MEDIA_LENGTH,
MediaHeartbeat.StreamType.LIVE
);
HashMap<String, String> mediaMetadata = new HashMap<String, String>();
mediaMetadata.put(CUSTOM_VAL_1, CUSTOM_KEY_1);
mediaMetadata.put(CUSTOM_VAL_2, CUSTOM_KEY_2);
// 5. Call trackSessionStart() when the playhead reaches a point that denotes the
// start of session 2
_mediaHeartbeat.trackSessionStart(mediaInfo, mediaMetadata);
......
......
// 6. Call trackPlay() to start tracking session 2 playback
_mediaHeartbeat.trackPlay();
.......
.......
// 7. Call trackComplete() when the playback reaches the end of session 2,
// i.e., the media completes and finishes playing.
_mediaHeartbeat.trackComplete();
........
........
// 8. Call trackSessionEnd() to end session 2
_mediaHeartbeat.trackSessionEnd();
........
........
// Continue similarly tracking further sessions in the live stream if required
iOS
Este es el orden esperado de las llamadas de API:
// Set up mediaObject
ADBMediaObject *mediaObject =
[ADBMediaHeartbeat createMediaObjectWithName:MEDIA_NAME
length:MEDIA_LENGTH
streamType:ADBMediaHeartbeatStreamTypeLIVE];
NSMutableDictionary *mediaContextData = [[NSMutableDictionary alloc] init];
[mediaContextData setObject:CUSTOM_VAL_1 forKey:CUSTOM_KEY_1];
[mediaContextData setObject:CUSTOM_VAL_2 forKey:CUSTOM_KEY_2];
// 1. Call trackSessionStart when the user clicks Play or if autoplay is used,
// i.e., there is an intent to start playback.
[_mediaHeartbeat trackSessionStart:mediaObject data:mediaContextData];
......
......
// 2. Call trackPlay when the playback actually starts, i.e., when the first
// frame of main content is rendered on the screen.
[_mediaHeartbeat trackPlay];
.......
.......
// 3. Call trackComplete when the playback reaches the end of session,
// i.e., when the media completes and finishes playing the first
// episode/session.
[_mediaHeartbeat trackComplete];
.......
.......
// 4. Call trackSessionEnd to end session 1
[_mediaHeartbeat trackSessionEnd];
........
........
// Start tracking session 2 / episode 2 of the same live stream, No need to
// reinstantiate mediaHeartbeat instance for tracking sesison 2.
// Set up mediaObject
ADBMediaObject *mediaObject =
[ADBMediaHeartbeat createMediaObjectWithName:MEDIA_NAME
length:MEDIA_LENGTH
streamType:ADBMediaHeartbeatStreamTypeLIVE];
NSMutableDictionary *mediaContextData = [[NSMutableDictionary alloc] init];
[mediaContextData setObject:CUSTOM_VAL_1 forKey:CUSTOM_KEY_1];
[mediaContextData setObject:CUSTOM_VAL_2 forKey:CUSTOM_KEY_2];
// 5. Call trackSessionStart when the playhead reaches a point that denotes
// start of session 2
[_mediaHeartbeat trackSessionStart:mediaObject data:mediaContextData];
......
......
// 6. Call trackPlay to start tracking session 2 playback
[_mediaHeartbeat trackPlay];
.......
.......
// 7. Call trackComplete when the playback reaches the end of session 2,
// i.e., when the media completes and finishes playing.
[_mediaHeartbeat trackComplete];
........
........
// 8. Call trackSessionEnd to end the session 2
[_mediaHeartbeat trackSessionEnd];
........
........
// Continue tracking further sessions in live stream similarly if required
JavaScript
Este es el orden esperado de las llamadas de API:
// Set up mediaObject
var mediaInfo = MediaHeartbeat.createMediaObject(
Configuration.MEDIA_NAME,
Configuration.MEDIA_ID,
Configuration.MEDIA_LENGTH,
MediaHeartbeat.StreamType.VOD
);
var mediaMetadata = {
CUSTOM_KEY_1 : CUSTOM_VAL_1,
CUSTOM_KEY_2 : CUSTOM_VAL_2,
CUSTOM_KEY_3 : CUSTOM_VAL_3
};
// 1. Call trackSessionStart() when Play is clicked or if autoplay is used,
// i.e., there's an intent to start playback.
this._mediaHeartbeat.trackSessionStart(mediaInfo, mediaMetadata);
......
......
// 2. Call trackPlay() when the playback actually starts, i.e., when the
// first frame of media is rendered on the screen.
this._mediaHeartbeat.trackPlay();
.......
.......
// 3. Call trackComplete() when the playback reaches the end of a session,
// i.e., whn playback completes and finishes playing the 1st episode/session.
this._mediaHeartbeat.trackComplete();
........
........
// 4. Call trackSessionEnd() to end session 1
this._mediaHeartbeat.trackSessionEnd();
........
........
// Start tracking session 2/episode 2 of the same live stream. There is no need
// to reinstantiate a mediaHeartbeat instance for tracking sesison 2.
// Set up mediaObject
var mediaInfo2 = MediaHeartbeat.createMediaObject(
Configuration.MEDIA_NAME,
Configuration.MEDIA_ID,
Configuration.MEDIA_LENGTH,
MediaHeartbeat.StreamType.LIVE
);
var mediaMetadata2 = {
CUSTOM_KEY_1 : CUSTOM_VAL_1,
CUSTOM_KEY_2 : CUSTOM_VAL_2,
CUSTOM_KEY_3 : CUSTOM_VAL_3
};
// 5. Call trackSessionStart() when the playhead reaches a point that denotes
// the start of session 2
this._mediaHeartbeat.trackSessionStart(mediaInfo2, mediaMetadata2);
......
......
// 6. Call trackPlay() to start tracking session 2 playback
this._mediaHeartbeat.trackPlay();
.......
.......
// 7. Call trackComplete() when the playback reaches the end of session 2,
// i.e., playback completes and finishes playing.
this._mediaHeartbeat.trackComplete();
........
........
// 8. Call trackSessionEnd() to end session 2
this._mediaHeartbeat.trackSessionEnd();
........
........
// Continue tracking further sessions in live stream similarly if required