Vast 3.0协议文档
广告流程
流程.png- VAST Request
>媒体播放器发送vast请求给服务器
- VAST Redirect
>在广告系列设置期间,广告方(可能是代理商或网络)发送VAST Wrapper响应,从二级广告服务器识别资源。 如下列
示例
xml <VAST> <Ad> <Wrapper> … <VASTAdTagURI> http://SecondaryAdServer.vast.tag </VASTAdTagURI> … </Wrapper> </Ad> </VAST>
- VAST Request
> 解析VAST响应后,视频播放器向二级广告服务器发送请求从步骤2的主VAST响应中提供的URI。
-
VAST Inline Response
广告服务器返回广告模板,如下面的示例:
xml <VAST> <Ad> <InLine> … </InLine> </Ad> </VAST>
-
Tracking URIs Pinged
触发广告的指定事件后,每个广告服务器都是使用提供的跟踪URI进行通知。
广告类型
广告类型.png-
Linear Ads
线性广告需要设置播放时间点,有可能在视频内容播放前、播放中、播放后。像电视广告在播放节目之前出现广告(pre-roll),在节目中间休息期播放广告(mid-roll)或者在节目播放完之后出现广告(post-roll)。 线性广告可以是视频,富媒体或静止图像广告。使用API或其他技术,线性广告可以变得有互动性,当一个用户有互动行为时,广告时间可以延长。
-
Companion Ads
伴随广告一般和线性广告、非线性广告一起,但是显示在播放器的外部,通常是页面的显示横幅广告(banner)或富媒体(rich media)广告。伴随广告在相关In-Stream广告结束后,可能继续会留在页面上。一个伴随广告,也可以是一个嵌入到视频体验所设计的皮肤。
-
Nonlinear Ads
是In-Stream广告,与视频内容播放同时显示。非线性广告通常覆盖视频播放器的底部或顶部的五分之一,可以是文本、图像或互动广告。使用API或其他技术,视频播放器可以允许用户发起的交互行为时暂停内容的播放。非线性广告只能出现在内容视频开始和结束之间的某一点(中旬辊位置),如果没有什么互动,广告一般10-20秒后消失。
-
Ad Pods
广告荚是一序列线性广告(Linear ads )来回播放,像多个电视插播广告,属于一个商业的暂停休息。
各广告类型需要的节点,如下图:
广告类型所需节点.png
VAST文件结构
Ad节点
<VAST>元素中有一个或多个元素。在VAST中,<Ad>元素包含视频播放器显示和跟踪广告素材所需的所有信息, VAST响应可能会提供多个广告。
单个<Ad>元素是最常见的,代表视频播放器只显示一个广告的情况。
在VAST 3.0之前只考虑了单个广告案例,现在有多个广告的可能。下图说明了如何在VAST响应中表示<Ad>元素。
在VAST 3.0中引入的是广告的序列属性。序列属性,使广告服务器能够将多个广告投放为按照序列值指示的Ad Pod播放顺序。 Pod可能会与其他没有序列值的广告一起提供,这些广告从Pod中排除。当多个广告(无论是Pod的一部分还是standdalone广告的集合)都包含在VAST响应中时,视频播放器只有在声明支持多个广告时才需要支持多种广告播放。如果视频播放器无法显示多个广告的广告响应,则可能会拒绝加载广告资源并发送错误代码。
-
属性
id: 该广告的广告服务器定义的标识符字符串
sequence: 一个大于0的数字,用于标识广告应该播放的顺序; 所有具有序列值的<Ad>元素是荚的一部分,并且是按顺序播放的 -
结构
每一个Ad节点包含InLine或者Wrapper节点,仅会是其中一个。
Ad结构.png
Wrapper节点
<Wrapper>元素包含第三方广告服务器的URI引用。 此广告服务器可以在VAST <InLine>广告元素中提供广告文件,也可以提供指向另一个广告服务器的URI。 最终,广告供应链中的最终广告服务器必须返回包含显示广告所需的所有必要内容。
InLine节点
<InLine>元素是广告供应链中的最后一个广告服务器提供<InLine>元素。 在<InLine>元素中,是显示广告所需的所有内容。
-
必须元素
<AdSystem>: 返回广告的广告服务器的名称 <AdTitle>: 广告标题 <Impression>: 当视频播放器在显示广告的第一帧时应请求的URI <Creatives>: 一个或多个<Creative>元素
Inline必须元素.png
-
非必须元素
<Description>:广告描述 <Advertiser>:广告主定义的广告客户名称, 此元素可用于防止与广告客户竞争对手展示广告。 <Survey>: 测量Url,例如类型属性可用于指定MIME类型,可设置为type =“text/javascript”。 <Error>: 错误Url <Pricing>: 提供一个代表实时出价(RTB)系统可以使用的价格的值。 VAST虽然不是为了处理RTB而设计的,但可能存在其他用法,如果需要价格,这个元素可以提供解决方案。 如果使用,必须识别以下两个属性: 1、model:将定价模型标识为“CPM”,“CPC”,“CPE”或“CPV”之一。 2、currency:标识所提供价值货币(即美元,英镑等)的3个字母的ISO-4217货币符号。 当作为广告链中的VAST Wrapper的一部分时,只需要考虑第一个Wrapper中提供的值。 <Extensions>: 自定义节点,如:<Extensions> <CustomXML>…</CustomXML></Extensions>
VAST Tracking
视频播放器必须向发送元素中提供的URI监测;然而,视频播放器不需要对返回的响应做任何事情。此响应通常为200,响应主体中具有1x1像素图像(也可能是其他类型)。
VAST各元素包含的监测列表如下:
<VAST> Tracking Elements:
<Error>视频播放器在收到“无广告”响应时应请求监测URI
<InLine> and <Wrapper> Tracking Elements:
<Error> 视频播放器在服务器因为某些原因无法提供InLine广告时应该请求的监测URI
<Impression> 视频播放器通常在将InLine广告的第一帧显示时请求的监测URI,通常作为计算广告“展示次数”指标。
<Linear> Tracking Elements :
<TrackingEvents> 包含以下元素:
<Tracking> 视频播放器在播放线性广告素材期间发生特定的命名事件时请求(事件名称作为该元素的属性传递)的监测URI。
<VideoClicks>包含以下元素:
<ClickThrough> 当用户在线性广告播放期间点击视频帧时,在浏览器上打开的网页URI(落地页); 服务器可以使用此URI的请求来跟踪“点击率”指标
<ClickTracking> 当用户在线性广告播放期间点击视频帧时应该请求的URI; 服务器可以使用此URI的请求来跟踪“点击率”指标
<CustomClick> 当用户点击特定按钮,链接或其他与线性广告相关联的其他呼叫行为时请求的URI,但不会在Web中打开新的页面; 不应同时请求ClickThrough和CustomClick网址(即同一次点击)
<IconClicks>包含以下元素:
<IconClickThrough>当用户点击与广告相关联的图标广告素材时,视频播放器应在Web浏览器窗口中打开的网页的URI; 也可以用来跟踪点击。
<IconClickTracking> 当用户点击图标广告素材时视频播放器应该请求的监测URI。
<IconViewTracking> 当向用户显示图标/图标广告素材时视频播放器应该请求的监测URI。
<Companion> Tracking Elements:
<CompanionClickThrough> 当用户点击伴随广告素材时视频播放器应在Web浏览器窗口中打开的网页URI; URI也可以用于跟踪点击
<CompanionClickTracking> 当用户点击伴随广告素材时视频播放器应该请求的监测URI; 用于在广告素材处理点击时跟踪InLine广告素材的点击次数; 在Wrapper广告中,URI用于跟踪Wrapper之后产生的InLine响应的点击
<NonLinearAds> Tracking Elements:
<TrackingEvents>包含以下元素:
<Tracking> 视频播放器在播放非线性广告素材期间发生特定的命名事件时请求(事件名称作为该元素的属性传递)的监测URI。
<NonLinear> Tracking Elements:
<NonLinearClickThrough> 当用户点击非线性广告素材时,视频播放器应在Web浏览器窗口中打开的网页的URI
<NonLinearClickTracking> 当用户点击非线性广告素材时视频播放器应该请求的监测URI; 用于在广告素材处理点击时跟踪InLine点击; 在Wrapper广告中,URI用于跟踪Wrapper之后产生的InLine响应的点击
Impression节点
VAST响应中的<InLine>元素包含一个或多个<Impression>元素。 每个<Impression>元素只包含一个子CDAT Ad wrapped URI。 如果广告素材需要多个展示资源文件(例如,当多个系统希望被通知展示时),则必须为每个展示资源都包含一个<Impression>元素,每个展示资源都具有唯一的URI。 可能包含潜在危险字符的VAST URI应包装在CDATA块中,如以下示例所示:
<Impression id=”myserver”>
<[CDATA[ http://ad.server.com/impression/dot.gif ]]>
</Impression>
Impression节点.png
-
Impression vs 'start' Event
Impression URI应用于广告的第一帧显示时发送。但是,广告可能由多个广告素材组成。如果广告主除追踪广告展示外,还想跟踪何时启动个别广告素材,则VAST响应应在要跟踪广告素材的<TrackingEvents>元素下包含一个'Start'事件。 -
Multiple Impressions(多重印象)
多重印象使用多个印象URI可让广告服务器与其他广告投放系统(例如广告客户使用的供应商广告服务器)共享展示监测信息。当VAST响应中包含多个展示元素时,视频播放器需要在同一时间请求全部印象。展示请求之间的任何重大延迟可能导致广告投放系统之间的计数差异。如果提供了多个<Impression>元素,则必须在同一时间或尽可能接近的时间请求它们。特别是对于包含<Linear>元素的VAST响应视频播放器,要求在向用户显示线性广告素材的第一帧时请求所有的展示URI。如果任何请求被显着延迟,则可能导致参与广告投放系统计数差异。
Creatives节点
VAST中的广告素材是VAST广告的一部分,多个广告素材可以以线性,非线性或伴随形式提供。在<InLine>元素中有一个<Creatives>元素。 <Creatives>元素提供有关要作为广告体验一部分的每个广告素材的文件的详细信息,每个嵌套的<Creative>元素包含以下之一:<Linear>,<NonLinear>或<CompanionAds>。
上面介绍了不同的广告类型,下图表示包含带有免费随播广告的线性广告的<Creatives>元素。 <Creative>元素可能包含一个序列属性,用于标识每个广告素材应显示的数字顺序。例如,广告可能希望播放线性广告素材,后跟非线性广告素材。在这种情况下,序列属性线性广告素材的值为1,非线性广告素材的值为2。在没有序列值的情况下,连续显示广告素材是视频播放器自行决定的。<Creative>序列属性不应与<Ad>序列属性混淆。
Creatives节点.png
-
属性
所有创意属性都是可选的。
id: 广告素材的广告服务器定义的标识符
sequence: 每个广告素材应显示的数字顺序(不要与用于定义广告投放位置的Ad序列属性混淆)
adId: 标识广告素材所属广告Id
apiFramework: 标识API -
例子
**此响应表示具有随播广告的线性广告** <VAST version=”3.0”> <Ad> <InLine> <AdSystem>My Ad Server</AdSystem> <AdTitle>Car Company</AdTitle> <Impression>...</Impression> <Creatives> <Creative> <Linear>...</Linear> </Creative> <Creative> <CompanionAds>...</CompanionAds> </Creative> </Creatives> </InLine> </Ad> </VAST>
-
Creative Extensions扩展
广告素材扩展当需要特定API框架来执行广告素材时,可以在<Creative>下添加<CreativeExtensions>元素。此扩展可用于加载无论是不是媒体文件的可执行广告素材。一个<CreativeExtension>元素嵌套在<CreativeExtensions>元素下,此外,此扩展中使用的任何xml标识避免与VAST元素名称混淆。
1、嵌套的<CreativeExtension>包含一个type的属性,它指定了执行扩展所需的MIME类型。
2、广告素材属性apiFramework标识执行广告素材所需的API。如果未指定apiFramework属性,则视频播放器可能会忽略广告素材。
如果广告无法执行,则视频播放器可能会忽略该广告,并使用<Error>元素(在<Ad>元素下方通知广告服务器该广告无法显示。
Linear 线性广告格式
在行业中投放的最常见的视频广告类型是“线性广告”,它是与内容显示在同一区域而不是与内容同时显示的广告。 事实上,视频播放器必须在显示线性广告之前中断内容。 线性广告通常在视频内容播放之前显示,该广告位置称为“predroll”位置。 因此,线性广告通常被称为“predroll”。表示线性广告的VAST响应结构如下图所示。
线性广告.png
Linear Elements
<Linear>元素具有两个必需的子元素,即<Duration>和<MediaFiles>元素。
此外,还提供了四个可选的子元素:<VideoClicks>,<AdParameters>,<TrackingEvents>和<Icons>。
下图表示直接位于<Linear>元素下面的元素。 红色概述的要素是必需的。
线性广告节点.png
- The Duration Element(必须)
线性广告素材的广告持续时间在<Duration>元素中表示,持续时间以“HH:MM:SS.mmm”格式表示(.mmm表示毫秒,可选)。
例如,30秒的视频表示如下:
<Duration> 00:00:30 </Duration>
或者
<Duration> 00:00:30.000 </Duration>
尽可能使用毫秒的.mmm扩展 以避免过早停止创意。 <MediaFiles>元素可以包含多个<MediaFile>元素,每个元素必须是在线性元素中定义的持续时间。
-
The MediaFiles Element(必须)
<MediaFiles>元素<MediaFiles>元素是一个或多个<MediaFile>元素的容器,每个元素都包含要为线性广告素材下载或流式传输的媒体文件的CDATAd或者wrapped URI。
线性广告素材通常是视频文件,但也可以使用静态图像。 <MediaFiles>元素可能包含多个<MediaFile>元素,每个元素最适合于不同的技术或设备。当广告可以被投放到多个视频平台时,为了适配不同的设备的编码和比特率的视频文件,VAST文档通常包含多个替代的<MediaFile>元素,每个元素具有不同的containerd-codec版本,并具有几种不同的比特率,每个媒体文件的广告内容应该相同,应该只显示与视频播放器系统最匹配的媒体文件。
<MediaFile>元素还具有多个属性,视频播放器根据这些属性和设备上用户以及设备现有能力(视频解码器,网络连接等)来选择最适合的媒体文件进行展示。-
MediaFile 必须属性
delivery: 传输协议,progressive(如HTTP)或者streaming
type: 文件MIME类型。 流行的MIME类型包括但不限于Flash视频的“video/ x-flv”和MP4的“video/mp4”
width: 视频文件的宽度,单位:px
height: 视频文件的高度,单位:px
当为音频等格式时,宽高可以为0 -
MediaFile 可选属性
codec: 用于对符合RFC-4281规定的文件进行编码(RFC-4281:http://tools.ietf.org/html/rfc428)
id: 媒体文件的标识符
bitrate or minBitrate and maxBitrate:使用文件的确定比特率值或者平均比特率或者可以使用minBitrate和maxBitrate来指定流式视频的最小和最大比特率来加载视频
scalable: 标识文件可以放大的最大比例
maintainAspectRatio: 一个布尔值,标识是否可以将媒体文件进行等比例缩放
apiFramework: 展示媒体文件所需的api
MediaFiles通常包含多个媒体文件,视频播放器仅需要选择一个最适合的<MediaFile>元素来显示,视频播放器应该在选择一个显示之前遍历所有媒体文件。
- MediaFile 静态图片文件
为获得最佳效果,线性广告点中使用的静态图像应转码为视频媒体文件。 但是,当静态图像作为媒体文件提供,视频播放器应该是只需要Duration元素来显示图像。 视频播放器应该向用户指示图像正在展示中,以避免用户在广告播放期间冻结视频播放器。 如果静态图像无法显示,则视频播放器应使用error事件URI发送事件错误(error405可能是最合适的)。
-
-
VideoClicks Element(可选)
当用户点击视频播放器时,如果提供了<VideoClicks>元素,它必须包含一个单独的<ClickThrough>元素,并且可以包含一个或多个<ClickTracking>和<CustomClick>元素。
下面的图表示了<VideoClicks>元素及其嵌套元素的结构。
<ClickThrough>点击时视频播放器在web浏览器窗口中打开此 URI。
<ClickTracking>用于在广告素材文件处理点击时跟踪点击
<CustomClick>元素用于跟踪线性广告素材中的其他非点击点击次数。
-
TrackingEvents Element(可选)
<TrackingEvents>元素可能包含多个<Tracking>元素。 <Tracking>元素的event属性标识需跟踪的事件类型。
event属性在部分VAST响应的以下示例中表示:
<TrackingEvents>
<Tracking event ="firstQuartile">
<[CDATA [http://adserver.com/firstQuartilePixel.gif]>
</Tracking>
</TrackingEvents >
如果Tracking事件存在,当在线性广告素材的播放中发生相应的事件时,视频播放器发送对应的请求URI
Tracking事件类型如下:
- creativeView: 不要与展示混淆,此事件表示已查看广告的单个广告素材部分。展示指示广告的第一帧显示;然而,广告可能由多个广告素材或广告素材组成,这些广告素材并不是在所有平台上都能展示。
- start: 此事件用于指示广告中的单个广告素材已加载,开始播放。与creativeView一样,此事件是跟踪广告素材回放的另一种方式。
- firstQuartile: 素材至少播放了25%
- midpoint: 素材至少播放了50%
- thirdQuartile: 素材至少播放了75%
- complete: 素材以正常速度播放完毕
- mute: 用户对素材静音
- unmute: 用户对素材取消静音
- pause: 用户暂停了素材的播放
- rewind: 用户回放了素材
- resume: 用户停止或暂停素材后,又重新开始播放素材
- fullscreen: 用户点击了全屏播放按钮
- exitFullscreen: 用户退出全屏播放,回到初始大小
- expand: 用户点击某个按钮展开素材
- collapse: 用户点击某个按钮将素材缩小到初始大小
- acceptInvitationLinear:用户激活启动了素材的附加部分,此事件用于线性广告。
- closeLinear: 用户点击了素材上的关闭按钮,此事件用于线性广告
- skip: 用户点击了跳过按钮以跳过广告素材,这与用于关闭按钮不同。
- progress: 广告素材以正常速度播放持续时间等于或大于属性中的offset值。offset可以是格式为HH:MM:SS或HH:MM:SS.mmm或格式为n%的百分比值。可以使用多个不同的值来跟踪线性广告素材时间轴上的多个进度点。
当存在相同类型的多个跟踪事件(如多个“开始”事件)时,视频播放器需要同时或尽可能接近的时间请求所有相同类型的事件,请求之间的任何重大延迟可能导致广告投放系统之间的计数差异。
-
AdParameters Element(可选)
一些广告投放系统可能希望在首次初始化时将一些数据发送到媒体文件。例如,媒体文件可以使用这些数据识别展示哪个素材,请求哪个服务器等。
线性广告素材的可选<AdParameters>元素可启用此数据交换,属性xmlEncoded可用于标识<AdParameters>参数是否为xmldencoded。如果为true,则视频播放器必须使用xml来解码数据。
VAST中的<AdParameters>值应该包装在CDATA块中。
Skippable Linear Creative
Skippingable线性广告素材用户可以选择跳过,通常在规定的秒数通过后。 可跳过的广告素材创造更好的用户体验,为了支持可跳过的创意,VAST 3.0引入了以下功能:
-
Linear element 的skipoffset属性
Skipoffset属性要指定可以跳过线性广告素材,广告服务器必须在<Linear>元素中包含skipoffset属性,skipoffset值的格式为HH:MM:SS或HH:MM:SS.mmm或格式为n%的百分比的时间值。skipoffset中的.mmm值表示毫秒,是可选的。此skipoffset值表示在广告素材开始播放后应该提供跳过控件的时间。 **Time skipoffset:以下示例提供了一个skipoffset:05秒。** <Creative> <Linear skipoffset=“00:00:05”> ... </Linear> </Creative> **百分比skipoffset:以下示例提供10%的skipoffset。** <Creative> <Linear skipoffset=“10%”> ... </Linear> </Creative> 广告的视频播放器必须在可接受的skipoffset值指示的时间内在界面中提供“跳过”按钮。
-
skip event
当用户跳过素材时,发送此事件的跟踪URI。 以下示例为VAST 3.0响应中的skip事件提供了跟踪URI: <TrackingEvents> <Tracking event =“skip”> <[CDATA [http://ad.server.com/skip/dot.gif]]> </Tracking> </TrackingEvents> skip事件不应该与close事件混淆,只有当用户采取行动关闭播放器或窗口时,才会触发close事件。 而skip事件在点击跳过控件时被触发。
-
progress event
进度事件包括提供时间值(HH:MM:SS或HH:MM:SS.mmm)或百分比(n%)值的偏移属性,表示记录视图的时间。 以下示例提供了在线性广告素材播放至少30秒后触发的进度事件的跟踪URI。 <TrackingEvents> <Tracking event = "progress" offset ="00:00:30.000"> <[CDATA [http://ad.server.com/view.gif]]> </Tracking> </TrackingEvents> 视频播放器可以使用具有不同offset值的多个进度事件来跟踪线性广告素材时间轴中的不同时间点。 当进度offset设置为25%,50%,75%和100%时虽然与四分位数跟踪事件(即25%,50%,75%,100%)相同的时间点,但是四分位数跟踪事件仍需要单独支持。
Companion 伴随广告格式
伴随广告素材必须用线性或非线性广告素材投放,无法单独投放。此外,可以在任何其他广告格式的VAST响应中投放<CompanionAds>元素。但只要属性“required =”none“存在,则视频播放器可以选择忽略任何伴随广告素材。
如果视频播放器仅支持线性广告,但VAST响应的是包含序列属性的<Ad>元素,只要至少有一个没有序列属性的<Ad>元素,则视频播放器可以忽略有排序属性的<Ad>元素。但是,如果VAST响应中返回的唯一广告格式是视频播放器不支持,则视频播放器可以拒绝广告,并使用<Ad>的<Error>元素通知广告服务器。
待续