Comparación de código: 1.x a 2.x
Todos los parámetros de configuración y las API de seguimiento se consolidan ahora en las clases MediaHeartbeats
y MediaHeartbeatConfig
.
Cambios en la API de configuración:
AdobeHeartbeatPluginConfig.sdk
- Se ha cambiado el nombre a MediaConfig.appVersion
MediaHeartbeatConfig.playerName
ahora se configura mediante MediaHeartbeatConfig
en lugar de con VideoPlayerPluginDelegate
- (Solo para JavaScript): la instancia de
AppMeasurement
se envía a través del constructor MediaHeartbeat
.
Cambios en las propiedades de configuración:
sdk
- Se ha cambiado el nombre a appVersion
publisher
- Eliminado; se utiliza el ID de empresa de Experience Cloud como publicador.
quiteMode
- Eliminado
Vínculos a reproductores de muestra 1.x y 2.x:
Las siguientes secciones comparan en paralelo los códigos 1.x y 2.x e incluyen la inicialización, reproducción principal, reproducción de anuncios, reproducción de capítulos y algunos eventos adicionales.
Comparación de código VHL: INICIALIZACIÓN
Inicialización de objetos
API 1.x |
API 2.x |
Heartbeat() |
MediaHeartbeat() |
VideoPlayerPlugin() |
MediaHeartbeatConfig() |
AdobeAnalyticsPlugin() |
|
HeartbeatPlugin() |
|
Inicialización del complemento del reproductor de vídeo (1.x)
this._playerPlugin = new VideoPlayerPlugin( new SampleVideoPlayerPluginDelegate(this._player));
var playerPluginConfig = new VideoPlayerPluginConfig();
playerPluginConfig.debugLogging = true;
// Set up the AppMeasurement plugin
this._aaPlugin = new AdobeAnalyticsPlugin( appMeasurement, new SampleAdobeAnalyticsPluginDelegate());
var aaPluginConfig = new AdobeAnalyticsPluginConfig();
aaPluginConfig.channel = Configuration.HEARTBEAT.CHANNEL;
aaPluginConfig.debuglogging = true;
this._aaPlugin.configure(aaPluginConfig);
// Set up the AdobeHeartbeat plugin
var ahPlugin = new AdobeHeartbeatPlugin( new SampleAdobeHeartbeatPluginDelegate());
var ahPluginConfig = new AdobeHeartbeatPluginConfig( configuration.HEARTBEAT.TRACKING_SERVER, configuration.HEARTBEAT.PUBLISHER);
ahPluginConfig.ovp = configuration.HEARTBEAT.OVP;
ahPluginConfig.sdk = configuration.HEARTBEAT.SDK;
ahPluginConfig.debugLogging = true;
ahPlugin.configure(ahPluginConfig);
var plugins = [this._playerPlugin, this._aaPlugin, ahPlugin];
// Set up and configure the heartbeat library this._heartbeat = new Heartbeat(new SampleHeartbeatDelegate(), plugins);
var configData = new HeartbeatConfig();
configData.debugLogging = true;
this._heartbeat.configure(configData);
Inicialización de Media Heartbeat (2.x)
var mediaConfig = new MediaHeartbeatConfig();
mediaConfig.trackingServer = Configuration.HEARTBEAT.TRACKING_SERVER;
mediaConfig.playerName = Configuration.PLAYER.NAME;
mediaConfig.debugLogging = true;
mediaConfig.channel = Configuration.HEARTBEAT.CHANNEL;
mediaConfig.ssl = false;
mediaConfig.ovp = Configuration.HEARTBEAT.OVP;
mediaConfig.appVersion = Configuration.HEARTBEAT.SDK;
this._mediaHeartbeat = new MediaHeartbeat( new SampleMediaHeartbeatDelegate(this._player), mediaConfig, appMeasurement);
Delegados
API 1.x |
API 2.x |
VideoPlayerPluginDelegate() |
MediaHeartbeatDelegate() |
VideoPlayerPluginDelegate().getVideoInfo |
MediaHeartbeatDelegate().getCurrentPlaybackTime |
VideoPlayerPluginDelegate().getAdBreakInfo |
MediaHeartbeatDelegate().getQoSObject |
VideoPlayerPluginDelegate().getAdInfo |
|
VideoPlayerPluginDelegate().getChapterInfo |
|
VideoPlayerPluginDelegate().getQoSInfo |
|
VideoPlayerPluginDelegate().get.onError |
|
AdobeAnalyticsPluginDelegate() |
|
VideoPlayerPluginDelegate (1.x)
$.extend(SampleVideoPlayerPluginDelegate.prototype, VideoPlayerPluginDelegate.prototype);
function SampleVideoPlayerPluginDelegate(player) {
this._player = player;
}
SampleVideoPlayerPluginDelegate.prototype.getVideoInfo = function() {
return this._player.getVideoInfo();
};
SampleVideoPlayerPluginDelegate.prototype.getAdBreakInfo = function() {
return this._player.getAdBreakInfo();
};
SampleVideoPlayerPluginDelegate.prototype.getAdInfo = function() {
return this._player.getAdInfo();
};
SampleVideoPlayerPluginDelegate.prototype.getChapterInfo = function() {
return this._player.getChapterInfo();
};
SampleVideoPlayerPluginDelegate.prototype.getQoSInfo = function() {
return this._player.getQoSInfo();
};
AdobeAnalyticsPluginDelegate (1.x)
$.extend(SampleAdobeAnalyticsPluginDelegate.prototype, AdobeAnalyticsPluginDelegate.prototype);
function SampleAdobeAnalyticsPluginDelegate() {}
SampleAdobeAnalyticsPluginDelegate.prototype.onError = function(errorInfo) {
console.log("AdobeAnalyticsPlugin error: " + errorInfo.getMessage() + " | " + errorInfo.getDetails());
};
HeartbeatDelegate (1.x)
$.extend(SampleHeartbeatDelegate.prototype, HeartbeatDelegate.prototype);
function SampleHeartbeatDelegate() {}
SampleHeartbeatDelegate.prototype.onError = function(errorInfo) {
console.log("Heartbeat error: " + errorInfo.getMessage() + " | " + errorInfo.getDetails());
};
MediaHeartbeatDelegate (2.x)
ADB.core.extend(SampleMediaHeartbeatDelegate.prototype, MediaHeartbeatDelegate.prototype);
function SampleMediaHeartbeatDelegate(player) {
this._player = player;
}
SampleMediaHeartbeatDelegate.prototype.getCurrentPlaybackTime = function() {
return this._player.getCurrentPlaybackTime();
};
SampleMediaHeartbeatDelegate.prototype.getQoSObject = function() {
return this._player.getQoSInfo();
};
this._mediaHeartbeat = new MediaHeartbeat(new SampleMediaHeartbeatDelegate(this._player), mediaConfig, appMeasurement);
Comparación de código VHL: REPRODUCCIÓN PRINCIPAL
Inicio de sesión
VHL 1.x |
VHL 2.x |
VideoPlayerPluginDelegate.trackVideoLoad() |
MediaHeartbeat.createMediaObject() |
VideoPlayerPluginDelegate.getVideoInfo() |
MediaHeartbeat.trackSessionStart() |
Inicio de sesión (1.x)
VideoAnalyticsProvider.prototype._onLoad = function() {
this._playerPlugin.trackVideoLoad();
};
SampleVideoPlayerPluginDelegate.prototype.getVideoInfo = function() {
return this._player.getVideoInfo();
};
VideoPlayer.prototype.getVideoInfo = function() {
this._videoInfo.playhead = vTime;
return this._videoInfo;
};
Inicio de sesión (2.x)
VideoAnalyticsProvider.prototype._onLoad = function() {
var contextData = {};
var videoInfo = this._player.getVideoInfo();
var mediaInfo = MediaHeartbeat.createMediaObject(videoInfo.name, videoInfo.id, videoInfo.length, videoInfo.streamType);
this._mediaHeartbeat.trackSessionStart(mediaInfo, contextData);
};
API 1.x |
API 2.x |
VideoMetadataKeys() |
MediaHeartbeat.createMediaObject() |
AdobeAnalyticsPlugin.setVideoMetadata() |
MediaHeartbeat.trackSessionStart() |
VideoAnalyticsProvider.prototype._onLoad = function() {
console.log('Player event: MEDIA_LOAD');
var contextData = {};
// Setting Standard Video Metadata
contextData[VideoMetadataKeys.SEASON] = "sample season";
contextData[VideoMetadataKeys.SHOW] = "sample show";
contextData[VideoMetadataKeys.EPISODE] = "sample episode";
contextData[VideoMetadataKeys.ASSET_ID] = "sample asset id";
contextData[VideoMetadataKeys.GENRE] = "sample genre";
contextData[VideoMetadataKeys.FIRST_AIR_DATE] = "sample air date";
// Etc.
this._aaPlugin.setVideoMetadata(contextData);
this._playerPlugin.trackVideoLoad();
};
VideoAnalyticsProvider.prototype._onLoad = function() {
console.log('Player event: MEDIA_LOAD');
var contextData = {};
var mediaInfo = MediaHeartbeat.createMediaObject(videoInfo.name, videoInfo.id, videoInfo.length, videoInfo.streamType);
// Set standard Video Metadata
var standardVideoMetadata = {};
standardVideoMetadata[VideoMetadataKeys.SEASON] = "sample season";
standardVideoMetadata[VideoMetadataKeys.SHOW] = "sample show";
standardVideoMetadata[VideoMetadataKeys.EPISODE] = "sample episode";
standardVideoMetadata[VideoMetadataKeys.ASSET_ID] = "sample asset id";
standardVideoMetadata[VideoMetadataKeys.GENRE] = "sample genre";
standardVideoMetadata[VideoMetadataKeys.FIRST_AIR_DATE] = "sample air date";
// Etc.
mediaInfo.setValue(MediaHeartbeat.MediaObjectKey.StandardVideoMetadata, standardVideoMetadata);
this._mediaHeartbeat.trackSessionStart(mediaInfo, contextData);
};
NOTA
En lugar de configurar los metadatos de vídeo estándar mediante la API de AdobeAnalyticsPlugin.setVideoMetadata()
, en VHL 2.0, los metadatos de vídeo estándar se configuran con la clave MediaObject MediaObject.MediaObjectKey.StandardVideoMetadata()
.
API 1.x |
API 2.x |
VideoMetadataKeys() |
MediaHeartbeat.createMediaObject() |
AdobeAnalyticsPlugin.setVideoMetadata() |
MediaHeartbeat.trackSessionStart() |
VideoAnalyticsProvider.prototype._onLoad = function() {
var contextData = {
isUserLoggedIn: "false",
tvStation: "Sample TV station",
programmer: "Sample programmer"
};
this._aaPlugin.setVideoMetadata(contextData);
this._playerPlugin.trackVideoLoad();
};
VideoAnalyticsProvider.prototype._onLoad = function() {
var contextData = {
isUserLoggedIn: "false",
tvStation: "Sample TV station",
programmer: "Sample programmer"
};
var videoInfo = this._player.getVideoInfo();
var mediaInfo = MediaHeartbeat.createMediaObject(videoInfo.name, videoInfo.id, videoInfo.length, videoInfo.streamType);
mediaInfo.setValue(MediaHeartbeat.MediaObjectKey.StandardVideoMetadata, standardVideoMetadata);
this._mediaHeartbeat.trackSessionStart(mediaInfo, contextData);
};
NOTA
En lugar de establecer los metadatos de vídeo personalizados mediante la API de AdobeAnalyticsPlugin.setVideoMetadata()
, en VHL 2.0, los metadatos de vídeo estándar se establecen mediante la API de MediaHeartbeat.trackSessionStart()
.
Reproducción
API 1.x |
API 2.x |
VideoPlayerPlugin.trackPlay() |
MediaHeartbeat.trackPlay() |
Reproducción (1.x)
VideoAnalyticsProvider.prototype._onSeekStart = function() {
console.log('Player event: SEEK_START');
this._playerPlugin.trackSeekStart();
};
Reproducción (2.x)
VideoAnalyticsProvider.prototype._onSeekStart = function() {
console.log('Player event: SEEK_START');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekStart);
};
Pausa
API 1.x |
API 2.x |
VideoPlayerPlugin.trackPause() |
MediaHeartbeat.trackPausel() |
Pausar (1.x)
VideoAnalyticsProvider.prototype._onPause = function() {
console.log('Player event:X PAUSE');
this._playerPlugin.trackPause();
};
Pausar (2.x)
VideoAnalyticsProvider.prototype._onBufferComplete = function() {
console.log('Player event: BUFFER_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.BufferComplete);
};
Finalización de la llamada a otro punto del contenido
API 1.x |
API 2.x |
VideoPlayerPlugin.trackSeekComplete() |
MediaHeartbeat. trackEvent(MediaHeartbeat.Event.SeekComplete) |
Búsqueda (1.x)
VideoAnalyticsProvider.prototype._onSeekComplete = function() {
console.log('Player event: SEEK_COMPLETE');
this._playerPlugin.trackSeekComplete();
};
Búsqueda (2.x)
VideoAnalyticsProvider.prototype._onSeekComplete = function() {
console.log('Player event: SEEK_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekComplete);
};
Inicio del búfer
API 1.x |
API 2.x |
VideoPlayerPlugin.trackBufferStart() |
MediaHeartbeat.trackEvent( MediaHeartbeat.Event.BufferStart) |
Inicio del búfer (1.x)
VideoAnalyticsProvider.prototype._onBufferStart = function() {
console.log('Player event: BUFFER_START');
this._playerPlugin.trackBufferStart();
};
Inicio del búfer (2.x)
VideoAnalyticsProvider.prototype._onBufferStart = function() {
console.log('Player event: BUFFER_START');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.BufferStart);
};
Finalización del búfer
API 1.x |
API 2.x |
VideoPlayerPlugin.trackBufferComplete() |
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.BufferComplete) |
Finalización del búfer (1.x)
VideoAnalyticsProvider.prototype._onBufferComplete = function() {
console.log('Player event: BUFFER_COMPLETE');
this._playerPlugin.trackBufferComplete();
};
Finalización del búfer (2.x)
VideoAnalyticsProvider.prototype._onBufferComplete = function() {
console.log('Player event: BUFFER_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.BufferComplete);
};
Reproducción finalizada
API 1.x |
API 2.x |
VideoPlayerPlugin.trackComplete() |
MediaHeartbeat.trackComplete() |
Finalización de la reproducción (1.x)
VideoAnalyticsProvider.prototype._onComplete = function() {
console.log('Player event: COMPLETE');
this._playerPlugin.trackComplete(function() {
console.log( "The completion of the content has been tracked.");
});
};
Finalización de la reproducción (2.x)
VideoAnalyticsProvider.prototype._onComplete = function() {
console.log('Player event: COMPLETE');
this._mediaHeartbeat.trackComplete();
};
Comparación de código VHL: REPRODUCCIÓN DE ANUNCIO
Inicio del anuncio
VHL 1.x |
VHL 2.x |
VideoPlayerPlugin.trackAdStart() |
MediaHeartbeat.createAdBreakObject() |
VideoPlayerPluginDelegate.getAdBreakInfo() |
MediaHeartbeat.createAdObject() |
VideoPlayerPluginDelegate.getAdInfo() |
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.AdBreakStart) |
|
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.AdStart) |
Inicio del anuncio (1.x)
VideoAnalyticsProvider.prototype._onAdStart = function() {
console.log('Player event: AD_START');
this._playerPlugin.trackAdStart();
};
SampleVideoPlayerPluginDelegate.prototype.getAdInfo = function() {
return this._player.getAdInfo();
};
Inicio del anuncio (2.x)
VideoAnalyticsProvider.prototype._onAdStart = function() {
console.log('Player event: AD_START');
var adContextData = {};
// AdBreak Info - getting the adBreakInfo from player and creating AdBreakInfo Object from MediaHeartbeat
var _adBreakInfo = this._player.getAdBreakInfo();
var adBreakInfo = MediaHeartbeat.createAdBreakObject(_adBreakInfo.name, _adBreakInfo.position, _adBreakInfo.startTime);
// Ad Info - getting the adInfo from player and creating AdInfo Object from MediaHeartbeat
var _adInfo = this._player.getAdInfo();
var adInfo = MediaHeartbeat.createAdObject(_adInfo.name, _adInfo.id, _adInfo.position, _adInfo.length);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adContextData);
};
API 1.x |
API 2.x |
AdMetadataKeys() |
MediaHeartbeat.createAdObject() |
AdobeAnalyticsPlugin.setAdMetadata() |
MediaHeartbeat.trackAdStart() |
VideoAnalyticsProvider.prototype._onAdStart = function() {
console.log('Player event: AD_START');
var contextData = {};
// setting Standard Ad Metadata
contextData[AdMetadataKeys.ADVERTISER] = "sample advertiser";
contextData[AdMetadataKeys.CAMPAIGN_ID] = "sample campaign";
contextData[AdMetadataKeys.CREATIVE_ID] = "sample creative";
contextData[AdMetadataKeys.CREATIVE_URL] = "sample url";
contextData[AdMetadataKeys.SITE_ID] = "sample site";
contextData[AdMetadataKeys.PLACEMENT_ID] = "sample placement";
this._aaPlugin.setAdMetadata(contextData);
this._playerPlugin.trackAdStart();
};
VideoAnalyticsProvider.prototype._onAdStart = function() {
console.log('Player event: AD_START');
var adContextData = { };
// AdBreak Info - getting the adBreakInfo from player and creating AdBreakInfo Object from MediaHeartbeat
var _adBreakInfo = this._player.getAdBreakInfo();
var adBreakInfo = MediaHeartbeat.createAdBreakObject(_adBreakInfo.name, _adBreakInfo.position, _adBreakInfo.startTime);
// Ad Info - getting the adInfo from player and creating AdInfo Object from MediaHeartbeat
var _adInfo = this._player.getAdInfo();
var adInfo = MediaHeartbeat.createAdObject(_adInfo.name, _adInfo.id, _adInfo.position, _adInfo.length);
// Set standard Ad Metadata
var standardAdMetadata = {};
standardAdMetadata[MediaHeartbeat.AdMetadataKeys.ADVERTISER] = "Sample Advertiser";
standardAdMetadata[MediaHeartbeat.AdMetadataKeys.CAMPAIGN_ID] = "Sample Campaign";
adInfo.setValue(MediaHeartbeat.MediaObjectKey.StandardAdMetadata, standardAdMetadata);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adContextData);
};
NOTA
En lugar de configurar los metadatos de la publicidad estándar mediante la API de AdobeAnalyticsPlugin.setVideoMetadata()
, en VHL 2.0, los metadatos de publicidad estándar se configuran mediante la clave AdMetadata
MediaObject.MediaObjectKey.StandardVideoMetadata
API 1.x |
API 2.x |
AdobeAnalyticsPlugin.setAdMetadata() |
MediaHeartbeat.createAdObject() |
|
MediaHeartbeat.trackAdStart() |
VideoAnalyticsProvider.prototype._onAdStart = function() {
console.log('Player event: AD_START');
var contextData = {};
// Setting Standard Ad Metadata
contextData[AdMetadataKeys.ADVERTISER] = "sample advertiser";
contextData[AdMetadataKeys.CAMPAIGN_ID] = "sample campaign";
contextData[AdMetadataKeys.CREATIVE_ID] = "sample creative";
contextData[AdMetadataKeys.CREATIVE_URL] = "sample url";
contextData[AdMetadataKeys.SITE_ID] = "sample site";
contextData[AdMetadataKeys.PLACEMENT_ID] = "sample placement";
this._aaPlugin.setAdMetadata(contextData);
this._playerPlugin.trackAdStart();
};
VideoAnalyticsProvider.prototype._onAdStart = function() {
console.log('Player event: AD_START');
var adContextData = {
affiliate: "Sample affiliate",
campaign: "Sample ad campaign"
};
// AdBreak Info - getting the adBreakInfo from player and creating AdBreakInfo Object from MediaHeartbeat
var _adBreakInfo = this._player.getAdBreakInfo();
var adBreakInfo = MediaHeartbeat.createAdBreakObject(_adBreakInfo.name, _adBreakInfo.position, _adBreakInfo.startTime);
// Ad Info - getting the adInfo from player and creating AdInfo Object from MediaHeartbeat
var _adInfo = this._player.getAdInfo();
var adInfo = MediaHeartbeat.createAdObject(_adInfo.name, _adInfo.id, _adInfo.position, _adInfo.length);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakInfo);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdStart, adInfo, adContextData);
};
NOTA
En lugar de configurar los metadatos de publicidad personalizados mediante la API de AdobeAnalyticsPlugin.setVideoMetadata
, en VHL 2.0, los metadatos de publicidad estándar se configuran mediante la API de MediaHeartbeat.trackAdStart()
.
Omisión de publicidad
API 1.x |
API 2.x |
AdobeAnalyticsPlugin.setAdMetadata() |
MediaHeartbeat.createAdObject() |
|
MediaHeartbeat.trackAdStart() |
Omisión de publicidad (1.x)
SampleVideoPlayerPluginDelegate.prototype.getAdInfo = function() {
return this._player.getAdInfo();
};
Omisión de publicidad (2.x)
VideoAnalyticsProvider.prototype._onAdSkip = function() {
console.log('Player event: AD_SKIP');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdSkip);
};
NOTA
En las API de VHL 1.5.x; getAdinfo()
y getAdBreakInfo()
no deben devolver nada si el reproductor está fuera de los límites de las pausas publicitarias.
Publicidad completa
API 1.x |
API 2.x |
VideoPlayerPlugin.trackAdComplete() |
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.AdComplete) |
|
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.AdBreakComplete) |
Anuncio completado (1.x)
VideoAnalyticsProvider.prototype._onAdComplete = function() {
console.log('Player event: AD_COMPLETE');
this._playerPlugin.trackAdComplete();
};
Anuncio completado (2.x)
VideoAnalyticsProvider.prototype._onAdComplete = function() {
console.log('Player event: AD_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete);
};
Comparación de código VHL: REPRODUCCIÓN DEL CAPÍTULO
Inicio del capítulo.
VHL 1.x |
VHL 2.x |
VideoPlayerPluginDelegate.getChapterInfo() |
MediaHeartbeat.createChapterObject |
VideoPlayerPlugin.trackChapterStart() |
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.ChapterStart) |
Inicio del capítulo (1.x)
VideoAnalyticsProvider.prototype._onChapterStart = function() {
console.log('Player event: CHAPTER_START');
this._playerPlugin.trackChapterStart();
};
SampleVideoPlayerPluginDelegate.prototype.getChapterInfo = function() {
return this._player.getChapterInfo();
};
Inicio del capítulo (2.x)
VideoAnalyticsProvider.prototype._onChapterStart = function() {
console.log('Player event: CHAPTER_START');
var chapterContextData = { };
// Chapter Info - getting the chapterInfo from player and creating ChapterInfo Object from MediaHeartbeat
var _chapterInfo = this._player.getChapterInfo();
var chapterInfo = MediaHeartbeat.createChapterObject(_chapterInfo.name, _chapterInfo.position, _chapterInfo.length, _chapterInfo.startTime);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterStart, chapterInfo, chapterContextData);
};
Omisión del capítulo
API 1.x |
API 2.x |
VideoPlayerPluginDelegate.getChapterInfo() |
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.ChapterSkip) |
Omisión de capítulo (1.x)
SampleVideoPlayerPluginDelegate.prototype.getChapterInfo = function() {
return this._player.getChapterInfo();
};
NOTA
En las API de VHL 1.5.x; getChapterinfo()
no debe devolver nada si el reproductor está fuera de los límites del capítulo.
Omisión de capítulo (2.x)
VideoAnalyticsProvider.prototype._onChapterSkip = function() {
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterSkip);
};
API 1.x |
API 2.x |
VideoPlayerPlugin.trackChapterStart() |
MediaHeartbeat.createChapterObject() |
AdobeAnalyticsPlugin.setChapterMetadata() |
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.ChapterStart) |
VideoAnalyticsProvider.prototype._onChapterStart = function() {
console.log('Player event: CHAPTER_START');
this._aaPlugin.setChapterMetadata({
segmentType: "Sample segment type"
});
this._playerPlugin.trackChapterStart();
};
VideoAnalyticsProvider.prototype._onChapterStart = function() {
console.log('Player event: CHAPTER_START');
var chapterContextData = {
segmentType: "Sample segment type"
};
// Chapter Info - getting the chapterInfo from player and creating ChapterInfo Object from MediaHeartbeat
var _chapterInfo = this._player.getChapterInfo();
var chapterInfo = MediaHeartbeat.createChapterObject(_chapterInfo.name, _chapterInfo.position, _chapterInfo.length, _chapterInfo.startTime);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterStart, chapterInfo, chapterContextData);
};
Capítulo completado
API 1.x |
API 2.x |
trackChapterComplete() |
trackEvent(MediaHeartbeat.Event.ChapterComplete) |
Capítulo completado (1.x)
VideoAnalyticsProvider.prototype._onChapterComplete = function() {
console.log('Player event: CHAPTER_COMPLETE');
this._playerPlugin.trackChapterComplete();
};
Capítulo completado (2.x)
VideoAnalyticsProvider.prototype._onChapterComplete = function() {
console.log('Player event: CHAPTER_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterComplete);
};
Comparación de código VHL: OTROS EVENTOS
Cambio de velocidad de bits
VHL 1.x |
VHL 2.x |
VideoPlayerPlugin.trackBitrateChange() |
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.BitrateChange) |
Cambio de velocidad de bits (1.x)
VideoAnalyticsProvider.prototype._onBitrateChange = function() {
console.log('Player event: BITRATE_CHANGE');
// Update getQosInfo to return the updated bitrate
this._playerPlugin.trackBitrateChange();
};
Cambio de velocidad de bits (2.x)
VideoAnalyticsProvider.prototype._onBitrateChange = function() {
console.log('Player event: BITRATE_CHANGE');
// Update getQosObject to return the updated bitrate
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.BitrateChange);
};
Reanudación del vídeo
API 1.x |
API 2.x |
VideoInfo.resumed() |
MediaObject() |
VideoPlayerPluginDelegate.getVideoInfo() |
MediaHeartbeat.trackSessionStart() |
VideoPlayerPlugin.trackVideoLoad() |
|
Reanudación de vídeo (1.x)
this._videoInfo.resumed=true;
VideoPlayer.prototype.getVideoInfo = function() {
this._videoInfo.playhead = vTime;
return this._videoInfo;
};
Reanudación de vídeo (2.x)
VideoAnalyticsProvider.prototype._onLoad = function() {
console.log('Player event: MEDIA_LOAD');
var contextData = {};
var videoInfo = this._player.getVideoInfo();
var mediaInfo = MediaHeartbeat.createMediaObject(videoInfo.playerName, videoInfo.id, videoInfo.length, videoInfo.streamType);
mediaInfo.setValue(MediaHeartbeat.MediaObjectKey.VideoResumed, true);
this._mediaHeartbeat.trackSessionStart(mediaInfo, contextData);
};
Para obtener más información sobre el seguimiento de vídeo con 2.x, consulte Seguimiento de reproducción de vídeo principal.