Adobe Analytics - YouTube视频跟踪实现

If Content is King, Video is Heir to the Throne.——from Adobe
随着Web技术和网络带宽的提升,在线视频已经非常普及,许多新兴的视频平台取代电视广播,成为越来越多的企业首选的产品宣传及广告平台。如果我们需要知道企业对这部分费用的ROI(投资回报率),我们就需要追踪在线视频的观看情况,以及对最终用户付费的影响。Adobe Analytics中,我们可以使用Media模块方便地实现视频跟踪程序。在这篇文章中,我们以YouTube在线视频为例,向大家介绍Media模块的使用方法,以及如何基于YouTube API开发一个视频跟踪的插件。

如何度量视频

在采集数据时,我们不止是为了知道转化率以及最终的投资回报率,更重要的是为了理解用户及用户的产品使用环境。对一个视频使用场景,用户涉及的影响因素有:

  • 网络速度:影响用户的观看体验
  • 播放器:我们的用户使用哪些播放器
  • 播放设备:我们的用户使用哪些设备
    对而视频的统计指标,我们可以设定:

  • 查看视频页面次数

  • 播放视频次数
  • 播放时间
  • 观看完成次数
  • 关键帧:能够传达关键信息的视频片段的时间点,如产品特征、购买信息等
    定义event、eVar及prop

  • events

    • event1: 开始播放视频
    • event2: 观看视频
    • event3: 观看完成
  • eVar

    • eVar1: 视频名称,用于作为统计维度描述
  • prop

    • prop1: 视频名称,用于作为统计次数变量
      Media模块

加载Media模块:

s.loadModule(‘Media’);

Media模块提供了一系列的属性和方法供我们调用:

属性名称

描述

trackUsingContextData

是否使用ContextData对数据进行跟踪,如设置为true,模块会匹配并发送contextDataMapping中配置的各个跟踪属性。

contextDataMapping

将各个跟踪属性匹配到Media属性上,示例:

s.Media.contextDataMapping = {
“a.media.name”:”eVar2,prop2”,
“a.media.segment”:”eVar3”,
“a.contentType”:”eVar1”,
“a.media.timePlayed”:”event3”,
“a.media.view”:”event1”,
“a.media.segmentView”:”event2”,
“a.media.complete”:”event7”,
“a.media.milestones”:{
25:”event4”,
50:”event5”,
75:”event6”
}
};


trackVars

添加需要跟踪的所有属性。

s.Media.trackVars = “events,prop2,eVar1,eVar2,eVar3”;


trackEvents

添加需要跟踪的所有事件。

s.Media.trackEvents = “event1,event2,event3,event4,event5,event6,event7”;


trackSeconds

定义一个时间间隔,每过这个间隔模块将发送contextDataMapping中匹配的数据。

s.Media.trackSeconds = 15;


trackMilestones

使用视频长度百分比为单位定义视频播放的里程碑。

s.Media.trackMilestones = “25,50,75”;


autoTrack

启用自动跟踪。

s.Media.autoTrack = true;

目前支持的格式有:

  • Open Source Media Framework (OSMF)
  • FLVPlayback (Video players created by the import video wizard in Flash Professional)
  • Silverlight
  • MediaDisplay
  • MediaPlayback
  • Brightcove API versions 2 & 3 (see Brightcove)
  • Windows Media Player, Quicktime, or Real Player using JavaScript




    Media模块提供的方法:



























    方法名称描述
    open视频打开事件,仅在Media模块中作数据标记,并不能真正操作视频。
    s.Media.open(mediaName, mediaLength, mediaPlayerName);

    close视频关闭动作,只有在open和close视频名称一致并且满足观看完成条件的情况下,才发送一个视频完成事件。
    s.Media.close(mediaName);

    complete视频完成事件。
    s.Media.complete(name, offset);

    play视频播放事件,在每个定义的时间间隔中,发送视频播放时间。
    s.Media.play(name, offset, segmentNum, segment, segmentLength);

    stop视频停止事件,将停止发送视频播放时间。
    s.Media.stop(mediaName, mediaOffset);


    YouTube Player API

Media模块并不能直接对YouTube视频进行跟踪,我们需要根据Media提供的操作方法,调用YouTube Player Javascript API进行视频数据发送。

首先我们在网页上使用iframe嵌入一个YouTube视频,并启用Javascript API:

<iframe id=”player” src=”http://www.youtube.com/embed/videid?enablejsapi=1"></iframe>

之后YouTube API JS文件会下载到浏览器中并触发onYouTubeIframeAPIReady方法,在这个方法中创建一个YouTube Player对象:

var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player(‘player’, {
videoId: ‘M7lc1UVf-VE’,
events: {
‘onStateChange’: onPlayerStateChange
}
});
}

将YouTube API和Adobe Media模块集成起来的关键,是利用YouTube Player onStateChange事件。建立一份Javascript文件用于编写YouTube视频跟踪插件,编写onStateChange函数并调用s.Media对应方法:

var player;
function onPlayerStateChange(event) {
video = event.target.getVideoData();
if (event.data == 1) {
s.Media.open(video.title, 0, video.getDuration());
s.Media.play(video.title, video.getCurrentTime());
} else if (event.data == 2) {
s.Media.stop(video.title, video.getCurrentTime());
} else if (event.data == 0) {
s.Media.close(video.title);
}
}

以上是一个简单的示例,功能齐全的插件大家可以在GitHub上参考我的代码,支持多浏览器(Chrome、Firefox、IE7-10)和同一页面多个视频跟踪。

报表查看

首先可以通过查看视频观看的来源,得到受众最广的渠道:

了解用户的使用习惯:

通过结合用户购买事件的数据,我们可以找出观看视频与购买或浏览深度的关系,从而确定ROI.

© 2018 Silent River All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero