다음 섹션은 1.x와 2.x의 코드 비교, 초기화 설명, 코어 재생, 광고 재생, 챕터 재생 및 일부 추가 이벤트를 제공합니다.
VHL 코드 비교: 초기화
개체 초기화
1.x API
2.x API
Heartbeat()
MediaHeartbeat()
VideoPlayerPlugin()
MediaHeartbeatConfig()
AdobeAnalyticsPlugin()
HeartbeatPlugin()
비디오 플레이어 플러그인 초기화(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);
미디어 하트비트 초기화(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);
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);
};
표준 비디오 메타데이터
1.x API
2.x API
VideoMetadataKeys()
MediaHeartbeat.createMediaObject()
AdobeAnalyticsPlugin.setVideoMetadata()
MediaHeartbeat.trackSessionStart()
표준 메타데이터(1.x)
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();
};
표준 메타데이터(2.x)
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);
};
노트
VHL 2.0에서는 AdobeAnalyticsPlugin.setVideoMetadata() API를 통해 표준 비디오 메타데이터를 설정하는 대신, MediaObject 키 MediaObject.MediaObjectKey.StandardVideoMetadata()를 통해 표준 비디오 메타데이터를 설정합니다.
VideoAnalyticsProvider.prototype._onComplete = function() {
console.log('Player event: COMPLETE');
this._playerPlugin.trackComplete(function() {
console.log( "The completion of the content has been tracked.");
});
};
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);
};
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);
};
노트
VHL 2.0에서는 AdobeAnalyticsPlugin.setVideoMetadata() API를 통해 표준 광고 메타데이터를 설정하는 대신, AdMetadata 키 MediaObject.MediaObjectKey.StandardVideoMetadata를 통해 표준 광고 메타데이터를 설정합니다.
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);
};
노트
VHL 2.0에서는 AdobeAnalyticsPlugin.setVideoMetadata API를 통해 사용자 지정 광고 메타데이터를 설정하는 대신, MediaHeartbeat.trackAdStart() API를 통해 표준 광고 메타데이터를 설정합니다.
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);
};