レガシーコードの比較 - 1.x と 2.x code-comparison-x-to-x
設定パラメーターと追跡 API はすべて、MediaHeartbeats
と MediaHeartbeatConfig
クラスに統合されました。
設定 API の変更点は次のとおりです。
AdobeHeartbeatPluginConfig.sdk
- 名前がMediaConfig.appVersion
に変更されましたMediaHeartbeatConfig.playerName
-VideoPlayerPluginDelegate
ではなく、MediaHeartbeatConfig
によって設定されるようになりました- (JavaScript のみ):
AppMeasurement
インスタンス -MediaHeartbeat
コンストラクターによって送信されるようになりました。
設定プロパティの変更点は次のとおりです。
sdk
- 名前がappVersion
に変更されましたpublisher
- 削除されました。Experience Cloud 組織 ID が投稿者として使用されますquiteMode
- 削除済み
1.x および 2.x サンプルプレーヤーへのリンク:
次の節では、初期化、コア再生、広告再生、チャプター再生、その他のイベントについて、1.x と 2.x のコードを比較します。
VHL コードの比較:初期化
オブジェクトの初期化
1.x API
2.x API
Heartbeat()
MediaHeartbeat()
VideoPlayerPlugin()
MediaHeartbeatConfig()
AdobeAnalyticsPlugin()
HeartbeatPlugin()
ビデオプレーヤープラグインの初期化(1.x) plugin-init-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) mh-init-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);
デリゲート
1.x API
2.x API
VideoPlayerPluginDelegate()
MediaHeartbeatDelegate()
VideoPlayerPluginDelegate().getVideoInfo
MediaHeartbeatDelegate().getCurrentPlaybackTime
VideoPlayerPluginDelegate().getAdBreakInfo
MediaHeartbeatDelegate().getQoSObject
VideoPlayerPluginDelegate().getAdInfo
VideoPlayerPluginDelegate().getChapterInfo
VideoPlayerPluginDelegate().getQoSInfo
VideoPlayerPluginDelegate().get.onError
AdobeAnalyticsPluginDelegate()
VideoPlayerPluginDelegate(1.x) player-plugin-delegate-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) analytics-plugin-delegate-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) hb-delegate-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) mh-delegate-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);
VHL コードの比較:コア再生
セッション開始
VHL 1.x
VHL 2.x
VideoPlayerPluginDelegate.trackVideoLoad()
MediaHeartbeat.createMediaObject()
VideoPlayerPluginDelegate.getVideoInfo()
MediaHeartbeat.trackSessionStart()
セッション開始(1.x) session-start-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;
};
セッション開始(2.x) session-start-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);
};
標準のビデオメタデータ
1.x API
2.x API
VideoMetadataKeys()
MediaHeartbeat.createMediaObject()
AdobeAnalyticsPlugin.setVideoMetadata()
MediaHeartbeat.trackSessionStart()
標準メタデータ(1.x) std-meta-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) std-meta-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);
};
NOTE
AdobeAnalyticsPlugin.setVideoMetadata()
API によって標準ビデオメタデータを設定する代わりに、VHL 2.0 では、MediaObject キーの MediaObject.MediaObjectKey.StandardVideoMetadata()
を使用して標準ビデオメタデータを設定します。カスタムのビデオメタデータ
1.x API
2.x API
VideoMetadataKeys()
MediaHeartbeat.createMediaObject()
AdobeAnalyticsPlugin.setVideoMetadata()
MediaHeartbeat.trackSessionStart()
カスタムメタデータ(1.x) custom-meta-1.x
VideoAnalyticsProvider.prototype._onLoad = function() {
var contextData = {
isUserLoggedIn: "false",
tvStation: "Sample TV station",
programmer: "Sample programmer"
};
this._aaPlugin.setVideoMetadata(contextData);
this._playerPlugin.trackVideoLoad();
};
カスタムメタデータ(2.x) custom-meta-2.x
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);
};
NOTE
AdobeAnalyticsPlugin.setVideoMetadata()
API によってカスタムビデオメタデータを設定する代わりに、VHL 2.0 では、MediaHeartbeat.trackSessionStart()
API を使用して標準ビデオメタデータを設定します。再生
1.x API
2.x API
VideoPlayerPlugin.trackPlay()
MediaHeartbeat.trackPlay()
再生(1.x) playback-1.x
VideoAnalyticsProvider.prototype._onSeekStart = function() {
console.log('Player event: SEEK_START');
this._playerPlugin.trackSeekStart();
};
再生(2.x) playback-2.x
VideoAnalyticsProvider.prototype._onSeekStart = function() {
console.log('Player event: SEEK_START');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekStart);
};
一時停止
1.x API
2.x API
VideoPlayerPlugin.trackPause()
MediaHeartbeat.trackPausel()
一時停止(1.x) pause-1.x
VideoAnalyticsProvider.prototype._onPause = function() {
console.log('Player event:X PAUSE');
this._playerPlugin.trackPause();
};
一時停止(2.x) pause-2.x
VideoAnalyticsProvider.prototype._onBufferComplete = function() {
console.log('Player event: BUFFER_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.BufferComplete);
};
シーク完了
1.x API
2.x API
VideoPlayerPlugin.trackSeekComplete()
MediaHeartbeat.
trackEvent(MediaHeartbeat.Event.SeekComplete)
シーク(1.x) seek-1.x
VideoAnalyticsProvider.prototype._onSeekComplete = function() {
console.log('Player event: SEEK_COMPLETE');
this._playerPlugin.trackSeekComplete();
};
シーク(2.x) seek-2.x
VideoAnalyticsProvider.prototype._onSeekComplete = function() {
console.log('Player event: SEEK_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.SeekComplete);
};
バッファー開始
1.x API
2.x API
VideoPlayerPlugin.trackBufferStart()
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.BufferStart)
バッファー開始(1.x) buffer-start-1.x
VideoAnalyticsProvider.prototype._onBufferStart = function() {
console.log('Player event: BUFFER_START');
this._playerPlugin.trackBufferStart();
};
バッファー開始(2.x) buffer-start-2.x
VideoAnalyticsProvider.prototype._onBufferStart = function() {
console.log('Player event: BUFFER_START');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.BufferStart);
};
バッファー完了
1.x API
2.x API
VideoPlayerPlugin.trackBufferComplete()
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.BufferComplete)
バッファー完了(1.x) buffer-complete-1.x
VideoAnalyticsProvider.prototype._onBufferComplete = function() {
console.log('Player event: BUFFER_COMPLETE');
this._playerPlugin.trackBufferComplete();
};
バッファー完了(2.x) buffer-complete-2.x
VideoAnalyticsProvider.prototype._onBufferComplete = function() {
console.log('Player event: BUFFER_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.BufferComplete);
};
再生完了
1.x API
2.x API
VideoPlayerPlugin.trackComplete()
MediaHeartbeat.trackComplete()
再生完了(1.x) playback-complete-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.");
});
};
再生完了(2.x) playback-complete-2.x
VideoAnalyticsProvider.prototype._onComplete = function() {
console.log('Player event: COMPLETE');
this._mediaHeartbeat.trackComplete();
};
VHL コードの比較:広告再生
広告開始
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)
広告開始(1.x) ad-start-1.x
VideoAnalyticsProvider.prototype._onAdStart = function() {
console.log('Player event: AD_START');
this._playerPlugin.trackAdStart();
};
SampleVideoPlayerPluginDelegate.prototype.getAdInfo = function() {
return this._player.getAdInfo();
};
広告開始(2.x) ad-start-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);
};
標準の広告メタデータ
1.x API
2.x API
AdMetadataKeys()
MediaHeartbeat.createAdObject()
AdobeAnalyticsPlugin.setAdMetadata()
MediaHeartbeat.trackAdStart()
標準広告メタデータ(1.x) ad-meta-1.x
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();
};
標準広告メタデータ(2.x) ad-meta-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);
// 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);
};
NOTE
AdobeAnalyticsPlugin.setVideoMetadata()
API によって標準広告メタデータを設定する代わりに、VHL 2.0 では、AdMetadata
キーの MediaObject.MediaObjectKey.StandardVideoMetadata
を使用して標準広告メタデータを設定します。カスタム広告メタデータ
1.x API
2.x API
AdobeAnalyticsPlugin.setAdMetadata()
MediaHeartbeat.createAdObject()
MediaHeartbeat.trackAdStart()
カスタム広告メタデータ(1.x) custom-ad-meta-1.x
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();
};
カスタム広告メタデータ(2.x) custom-ad-meta-2.x
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);
};
NOTE
AdobeAnalyticsPlugin.setVideoMetadata
API によってカスタム広告メタデータを設定する代わりに、VHL 2.0 では、MediaHeartbeat.trackAdStart()
API を使用して標準広告メタデータを設定します。広告スキップ
1.x API
2.x API
AdobeAnalyticsPlugin.setAdMetadata()
MediaHeartbeat.createAdObject()
MediaHeartbeat.trackAdStart()
広告スキップ(1.x) ad-skip-1.x
SampleVideoPlayerPluginDelegate.prototype.getAdInfo = function() {
return this._player.getAdInfo();
};
広告スキップ(2.x) ad-skip-2.x
VideoAnalyticsProvider.prototype._onAdSkip = function() {
console.log('Player event: AD_SKIP');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdSkip);
};
NOTE
VHL 1.5.X API では、プレーヤーが広告ブレーク境界の外にある場合は、
getAdinfo()
と getAdBreakInfo()
は null を返す必要があります。広告完了
1.x API
2.x API
VideoPlayerPlugin.trackAdComplete()
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.AdComplete)
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.AdBreakComplete)
広告完了(1.x) ad-complete-1.x
VideoAnalyticsProvider.prototype._onAdComplete = function() {
console.log('Player event: AD_COMPLETE');
this._playerPlugin.trackAdComplete();
};
広告完了(2.x) ad-complete-2.x
VideoAnalyticsProvider.prototype._onAdComplete = function() {
console.log('Player event: AD_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdComplete);
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.AdBreakComplete);
};
VHL コードの比較:チャプター再生
チャプター開始
VHL 1.x
VHL 2.x
VideoPlayerPluginDelegate.getChapterInfo()
MediaHeartbeat.createChapterObject
VideoPlayerPlugin.trackChapterStart()
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.ChapterStart)
チャプター開始(1.x) chap-start-1.x
VideoAnalyticsProvider.prototype._onChapterStart = function() {
console.log('Player event: CHAPTER_START');
this._playerPlugin.trackChapterStart();
};
SampleVideoPlayerPluginDelegate.prototype.getChapterInfo = function() {
return this._player.getChapterInfo();
};
チャプター開始(2.x) chap-start-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);
};
チャプタースキップ
1.x API
2.x API
VideoPlayerPluginDelegate.getChapterInfo()
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.ChapterSkip)
チャプタースキップ(1.x) chap-skip-1.x
SampleVideoPlayerPluginDelegate.prototype.getChapterInfo = function() {
return this._player.getChapterInfo();
};
NOTE
VHL 1.5.X API では、プレーヤーがチャプター境界の外にある場合は、
getChapterinfo()
は null を返す必要があります。チャプタースキップ(2.x) chap-skip-2.x
VideoAnalyticsProvider.prototype._onChapterSkip = function() {
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterSkip);
};
チャプターのカスタムメタデータ
1.x API
2.x API
VideoPlayerPlugin.trackChapterStart()
MediaHeartbeat.createChapterObject()
AdobeAnalyticsPlugin.setChapterMetadata()
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.ChapterStart)
チャプターカスタムメタデータ(1.x) chap-cust-meta-1.x
VideoAnalyticsProvider.prototype._onChapterStart = function() {
console.log('Player event: CHAPTER_START');
this._aaPlugin.setChapterMetadata({
segmentType: "Sample segment type"
});
this._playerPlugin.trackChapterStart();
};
チャプターカスタムメタデータ(2.x) chap-cust-meta-2.x
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);
};
チャプター完了
1.x API
2.x API
trackChapterComplete()
trackEvent(MediaHeartbeat.Event.ChapterComplete)
チャプター完了(1.x) chap-complete-1.x
VideoAnalyticsProvider.prototype._onChapterComplete = function() {
console.log('Player event: CHAPTER_COMPLETE');
this._playerPlugin.trackChapterComplete();
};
チャプター完了(2.x) chap-complete-2.x
VideoAnalyticsProvider.prototype._onChapterComplete = function() {
console.log('Player event: CHAPTER_COMPLETE');
this._mediaHeartbeat.trackEvent(MediaHeartbeat.Event.ChapterComplete);
};
VHL コードの比較:その他のイベント
ビットレート変更
VHL 1.x
VHL 2.x
VideoPlayerPlugin.trackBitrateChange()
MediaHeartbeat.trackEvent(
MediaHeartbeat.Event.BitrateChange)
ビットレート変更(1.x) bitrate-chg-1.x
VideoAnalyticsProvider.prototype._onBitrateChange = function() {
console.log('Player event: BITRATE_CHANGE');
// Update getQosInfo to return the updated bitrate
this._playerPlugin.trackBitrateChange();
};
ビットレート変更(2.x) bitrate-chg-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);
};
ビデオ再開
1.x API
2.x API
VideoInfo.resumed()
MediaObject()
VideoPlayerPluginDelegate.getVideoInfo()
MediaHeartbeat.trackSessionStart()
VideoPlayerPlugin.trackVideoLoad()
ビデオ再開(1.x) video-resume-1.x
this._videoInfo.resumed=true;
VideoPlayer.prototype.getVideoInfo = function() {
this._videoInfo.playhead = vTime;
return this._videoInfo;
};
ビデオ再開(2.x) video-resume-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);
};
2.x を使用したビデオの追跡について詳しくは、「コアビデオ再生の追跡」を参照してください。
recommendation-more-help
c8eee520-cef5-4f8c-a38a-d4952cfae4eb