VAST v3.0不完全指南(50%)

IAB视频指南

在线视频广告行业的惊人增长也伴随着视频广告支出的急剧增长。为了促进这一行业的发展,IAB数字视频委员会将出版商,代理商和供应商聚集在一起,制定了一套视频广告规范,为广告服务器和视频播放器之间的通信建立了一个通用框架。已经制定了六套IAB指南来帮助改进视频广告:

·视频广告评估指南(VAMG):概述应如何跟踪事件。

•视频广告投放模板(VAST):启用从广告服务器发送到视频播放器的视频广告响应的通用结构。

·视频播放器广告界面定义(VPAID):建立交互式广告与呈现广告的视频播放器之间的通信协议。

·视频多重广告播放列表(VMAP):为从广告服务器发送到视频播放器的视频广告的播放列表启用结构。

·数字视频广告格式指南和最佳做法:概述视频广告应遵循的一般格式和最佳做法,以获得最佳广告体验。

·数字视频流内广告指标定义:定义用于衡量视频广告效果的行业认可指标。

下图说明了这些上面的概念说明与视频广告投放流程之间的关系。


1概述

在使用浏览器来展示广告的在线广告时,使用HTML在可能涉及的许多网络和服务器之间发送数据,可以跟踪广告交互。 但是,在视频广告中,视频播放器不是浏览器,可能不使用HTML。 视频播放器基于各种不同的技术构建,每种技术都使用自己的技术实例。

如果广告服务器想要向视频播放器投放广告,他们必须开发广告标签(ad tags),以便根据他们想要投放的每个视频播放器的技术来展示广告。使问题复杂化的是,可能需要多个服务器作为投放广告的过程的一部分,要求每个服务器提供专门的广告展示信息。

VAST是一种视频广告投放模板,可以提供统一的方式,将广告数据从广告服务器传输到视频播放器,而不受任何技术的限制。使用XML,VAST可以为视频广告提供HTML所做的基于浏览器的广告投放。

正如HTML允许Web浏览器从任何Web服务器显示网站一样,VAST使视频播放器能够显示来自任何视频广告服务器的广告。

VAST支持向可以请求和解析XML文档的任何视频播放器提供视频广告。 VAST的任何内容都不是特定于设备或平台的,这意味着它适用于许多视频播放器情况,包括以下一些情况:

·网页中的视频播放器

·移动优化网页中的视频播放器

·移动应用程序中的视频播放器

·互联网电视中的视频播放器

·通过IPTV或其他机顶盒环境播放视频


1.1 VAST如何工作

尽管VAST最初旨在促进视频广告中的标准广告响应,但它已经包含了对视频播放器应如何处理响应的一系列期望。最新版本的VAST通过提供有关视频播放器应如何显示和跟踪VAST广告的指南,正式确定了这些期望。

通常,VAST支持的广告投放流程涉及视频播放器请求视频广告,显示VAST响应并将广告展示和其他事件的跟踪信息发送回服务器。这可以直接在视频播放器和一个广告服务器(通常是发布者)之间或视频播放器和多个广告服务器之间完成。

当广告直接从发布商的系统投放到视频播放器时,VAST广告投放流程如下:


1.VAST请求:视频播放器呼叫广告服务器以获取VAST响应。

2.VAST内联响应:广告服务器使用VAST内联响应进行响应,该响应包含显示和跟踪广告所需的所有媒体文件和跟踪URI。

3.Tracking URIs Pinged:视频播放器从广告中发生关联事件时提供的跟踪URI请求跟踪资源。

在刚才描述的场景中,只涉及一个广告服务器。如果在发布商的广告服务器中直接预订了VAST广告系列,则通常会发生这种情况。 当多个广告服务器成为视频广告投放流程的一部分时,VAST的优势变得更加明显。

1.VAST请求:视频播放器向主要广告服务器发送请求。

2.VAST重定向:在广告活动设置期间,广告方(可能是代理商或网络)发送VAST Wrapper响应,以识别来自辅助广告服务器的资源。以下示例提供了VAST Wrapper响应的摘录:


<VAST> <Ad> <Wrapper> ...

<VASTAdTagURI>

HTTP://SecondaryAdServer.vast.tag

</ VASTAdTagURI>

... </ Wrapper> </ Ad> </ VAST>


3.VAST请求:解析VAST响应后,视频播放器使用步骤2中主VAST响应中提供的URI向辅助广告服务器发送请求。

4.VAST内联响应:辅助广告服务器发送VAST响应,其中包含要显示的广告的所有必要详细信息。以下示例显示了用于内联响应的概述VAST元素:


<VAST> <Ad> <InLine>

...

</ InLine> </ Ad> </ VAST>


5.Tracking URIs Pinged:触发广告的指定事件后,将使用提供的跟踪URI通知每个广告服务器。

在上面的场景中,涉及两个广告服务器。当一个或多个供应商广告服务器成为流程的一部分并且双方都希望接收所有跟踪信息时,通常会发生这种情况。

此广告投放方案可以轻松扩展到两个广告服务器之外。辅助广告服务器可以使用指向另一个广告服务器的VAST Wrapper进行响应。 但是,最终,链中的最后一个广告服务器必须使用VAST InLine响应进行响应。

1.2 VAST支持的广告类型

视频插播广告可以是在发布商的内容视频(线性)之前,之后或中间播放的视频,或者广告可能是在内容视频正在进行时覆盖内容视频的图片广告(非线性)。

下面将详细介绍一些线性和非线性广告类型:

1.2.1线性广告

线性广告通常用作视频,但也可以包括静态图像,其在沿着内容视频的时间线的线性点处播放设定的持续时间。他们可能会在内容视频开始之前播放(前贴片广告),在内容视频(中间播放)期间或内容视频(后贴片广告)之后休息。

利用其他技术,例如VPAID,可以在观众互动时扩展线性广告的持续时间。

1.2.2伴随广告

随播广告与线性或非线性广告一起投放,但会在视频播放器外部展示。在视频广告结束后,它们可以作为页面上的留下线,并为用户提供更具吸引力的体验。随播广告通常显示为标准横幅广告或富媒体广告,但也可以是包含视频广告体验的外观。一个或多个伴随广告可以与广告的原始视频部分或主广告一起提供。

1.2.3非线性广告

通常,图像广告(也称为叠加),非线性广告在视频回放的同时显示在内容视频的顶部。非线性广告通常覆盖内容视频的顶部或底部五分之一,通常是显示约10-20秒的文本或静态图像。

使用其他技术(例如VPAID),广告可以是交互式的并且能够停止内容视频以播放额外的广告内容。此类交互仅由用户启动。

1.2.4Ad Pods

VAST 3.0中的新功能是对Ad Pod的支持,即一系列连续线性广告的投放。下图表示Ad Pod,其中有三个广告在内容视频之前按顺序播放。 Ad Pod可以在播放内容视频之前,播放期间或之后播放,其功能类似于具有多个广告位的电视广告插播。广告空间的放置超出了VAST 3.0的范围,但可以通过视频播放器编程或使用VMAP来指定广告插播时间。有关VMAP的信息,请参阅第3.1节。



2.VAST实现细节

本节提供了希望认为自己符合VAST准则的广告服务器和视频播放器的详细要求,从而确保任何两个符合VAST标准的系统都按预期运行,因此可以互操作。提供了一般VAST概念和不同广告格式的要求。

2.1Compliance

VAST指定广告响应的格式以及视频播放器应如何处理响应。为了使VAST有效,广告服务器和视频播放器都必须采用本文档中概述的准则。

通常,视频播放器只需接受其请求的广告,并且广告服务器响应应以预期的广告格式显示。例如,如果视频播放器请求非线性广告但收到线性广告,则视频播放器不会显示线性广告。同样,如果请求标准线性广告但收到可跳过的线性广告,则视频播放器不应显示可跳过的线性广告,也不应视频播放器将可跳过广告作为线性广告播放(无跳过控件)。

本文档的各节中包含了每种VAST广告格式的一般支持的详细信息。

2.1.1Ad服务器

符合VAST标准的广告服务器必须能够提供符合本文档中定义的VAST XML架构的广告响应。广告服务器还必须能够接收视频播放器执行VAST广告响应后产生的后续跟踪和错误请求。

2.1.2视频播放器

符合VAST标准的视频播放器必须能够根据VAST广告响应提供的说明并根据视频播放器声明的格式支持在VAST响应中显示广告,其中包括:

·正确更新广告资源

·在VAST响应中检查广告服务器指令,包括在VAST包装响应链中调用的任何后续广告服务器的指令,提供响应符合VAST

·对应支持的用户交互

·将适当的跟踪信息发送回广告服务器

·支持XML约定,例如标准注释语法(即,在标准XML语法中确认VAST注释:<! -  comment  - >)

本文档中定义了正确广告显示和VAST支持的详细信息。

2.1.2.1请求VAST广告格式

在VAST 3.0中,提供了多种格式作为VAST合规性的选项。 (有关详细信息,请参阅第2.3节。)发布者必须声明他们支持哪种合规的格式,但视频播放器还应该能够在请求广告时传达它支持的格式。执行此操作的机制超出了VAST的范围,但应予以考虑。

2.1.2.2加入VAST结构

鼓励发布者为他们将接受并在其视频播放器中显示的内容设置要求(即文件大小,视频类型,伴随规格等)。广告主在制作视频广告系列时应始终讨论发布商要求。

但是,如果发布商还要求VAST广告响应仅包含满足其要求的详细信息,那么VAST提供的跨平台视频广告投放的信息就会丢失。

例如,VAST为广告服务器提供了一种包含多个媒体文件的方法:每种视频类型可能需要一种,以满足各种视频播放器的要求。然后,每个视频播放器都可以解析满足发布商要求的媒体文件的VAST响应。这样的VAST响应可以在多个视频播放器中提供而无需修改。

但是,如果发布商规定VAST广告代码仅包含与其要求相关的元素(即只有一个符合其要求的媒体文件),则VAST响应只能提供给该发布者(以及任何其他发布者)碰巧有完全相同的要求。

限制广告服务器创建动态VAST响应的能力,其中包含满足各种要求的详细信息,这极大地限制了VAST旨在提供的优势。虽然VAST指南不限制发布者强制使用特定的VAST结构,但不建议使用此做法。相反,发布商应考虑接受包含符合要求的广告信息的任何VAST响应,并忽略任何不受支持的细节。

2.1.3VAST格式合规性

VAST涵盖了几种截然不同的视频广告格式,但广告服务和视频发布商组织可能不希望支持所有格式。 例如,某些供应商可能会选择仅使用Companions投放线性广告。 同样,某些发布商可能只想在其视频播放器中支持NonLinear广告。

在VAST 3.0中,指定了五种视频广告格式,以便视频广告组织可以与VAST兼容,同时仅支持选定的广告格式子集。

VAST合规格式如下:

1.线性广告

2.非线性广告

3.伴随广告

4.可跳过的线性广告

5.Ad Pods

符合VAST标准的公司必须声明其技术支持的五种广告格式中的哪一种。

说明:IAB VPAID和VMAP规范被排除在格式合规性列表之外,因为这两个规范彼此独立且与VAST无关。 遵守一个规范并不意味着遵守任何其他规范。 必须单独声明任一规范的合规性。

2.1.4最小合规性

此外,无论公司声明遵守哪种VAST格式,所有广告服务器和视频播放器都必须符合适用于所有类别的一系列常规VAST功能,包括:

1.Inline和Wrapper广告(支持多个广告服务供应商)

2.追踪活动

3.错误报告

4.Industry图标(例如支持OBA自我监管的广告内通知)

使用任何符合VAST标准的技术时,公司应该能够期望支持所有上述一般功能。

2.1.5 Flash™和JavaScript™的浏览器安全性

现代浏览器限制Adobe Flash和JavaScript运行时环境从其他服务器检索数据。由于典型的VAST响应来自其他服务器,因此必须采取措施:

2.1.5.1 Flash的crossdomain.xml

要使Flash视频播放器能够接受VAST响应,广告服务器必须在其root HTTP域名中提供crossdomain.xml文件。例如,adserver.com应提供如下文件:

http://adserver.com/crossdomain.xml

Flash视频播放器知道检查发送数据的任何服务器的root域名。xml是一个简单的文件,包括以下内容:

<cross-domain-policy>

<cross-domain-policy>

domain属性的星号(*)值允许任何Flash视频播放器接受来自提供crossdomain.xml文件的服务器的数据。

有关更多信息,请访问http://kb2.adobe.com/cps/142/tn_14213.html

2.1.5.2 JavaScript的跨源资源共享(CORS)

为了让JavaScript视频播放器接受VAST响应,广告服务器必须在http文件中包含一个包装VAST响应的CORS标头。 CORS标头必须格式如下:

Access-Control-Allow-Origin:<origin header value> Access-Control-Allow-Credentials:true

这些HTTP标头允许任何来源的广告播放器从广告服务器来源读取VAST响应。 Access-Control-Allow-Origin的值应该是随广告请求一起发送的Origin标头的值。

将Access-Control-Allow-Credentials标头设置为true将确保正确发送和接收cookie。

有关更多信息,请访问http://www.w3.org/TR/cors

2.1.6XML命名空间

每当VAST与任何其他XML模板结合使用时,例如使用VMAP或VAST扩展,都应为每个模板声明一个名称空间,以便一个元素不与另一个元素混淆。

有关更多信息,请访问:http://www.w3.org/TR/REC--xml--names/

2.2一般VAST文档结构

符合VAST标准的广告响应是一个格式良好的XML文档,符合XML 1.0,因此应该遵守标准XML要求,如字符实体和<!- -  XML comments- - >。它还必须针对与本文档一起分发的VAST 3.0 XML架构定义(XSD)的模式进行检查。最后,它必须符合某些无法在VAST 3.0 XSD中表达的其他关系项。本节概述了这些关系,并在本文档中进一步描述。

2.2.1声明VAST响应

所有VAST响应都具有相同的一般结构。每个VAST响应都声明为<VAST>作为其最顶层元素以及version属性,指示响应符合的正式版本。例如,VAST 3.0响应声明如下:

与所有XML文档一样,在提供嵌套在元素中的详细信息之后,必须关闭每个元素。以下示例是具有一个嵌套<Ad>元素的VAST响应。

<Ad>

<!--ad details go here-->

</Ad>

</VAST>

2.2.2 Root 元素

元素中包含一个或多个<Ad>元素。广告主和视频内容发布商可以将<Ad>元素与合同文档中定义的订单项视频广告相关联,通常是广告订单。这些订单项广告通常指定要显示的广告,价格,投放计划,定位等。

在VAST中,<Ad>元素包含视频播放器显示和跟踪广告素材所需的所有信息,并且通常会在各方之间的合同中映射回视频广告的订单项。虽然VAST <Ad>元素与合同中的订单项的关联很常见,但情况并非总是如此。无论合同如何定义广告,VAST都会以非常结构化的方式定义广告,如以下各节所述。

VAST响应可能会提供多个广告。单个<Ad>元素是最常见的,并且表示视频播放器仅显示单个广告的情况。在VAST 3.0之前,在开发指南中仅考虑了单个广告的案例。现在,另外两个回应是可能的。下图说明了如何在VAST响应中表示<Ad>元素。


在VAST 3.0中引入的是Ads的序列属性。 序列属性(在上图右侧的两个图表中显示)使广告服务器能够将多个广告作为广告播放器按顺序播放,如序列值所示。

Pod可以与没有序列值的其他广告一起提供,这些广告从Pod中排除。 这些独立广告可能被视为广告自助播放的一部分,如右图所示,如果无法显示广告播放,视频播放器可以从中选择。

当多个广告(无论是Pod的一部分还是独立广告的一部分)都包含在VAST响应中时,如果视频播放器声明它支持多个广告,则只需要支持多个广告播放。 如果视频播放器无法显示包含多个广告的广告响应,则可以拒绝加载广告资源并发送错误代码。 有关Ad Pod的详细信息,请参阅第2.3.5节。

Video Player Implementation Note:如果为多个元素提供了序列属性,则在支持Ad Pod格式时,它们必须显示为Pod。 如果不支持或无法播放Pod,视频播放器应该请求提供的错误 - 跟踪URI。

使用VMAP时比较特殊。有关VMAP的信息,请参阅第3.1节。

2.2.2.1Ad属性

元素有两个属性:

·id:广告服务器定义的广告标识符字符串

·sequence:大于零的数字(0),用于标识广告应播放的顺序; 所有具有序列值的<Ad>元素是pod的一部分,旨在按顺序播放。

2.2.2.2Ad结构

每个包含一个<InLine>元素或<Wrapper>元素(不同时包含),如下图所示。


2.2.3 <Wrapper>元素

<Wrapper>元素包含对供应商广告服务器(通常称为第三方广告服务器)的URI引用。目标广告服务器在VAST <InLine>广告元素中提供广告文件,或者可以提供辅助包装广告,指向另一个广告服务器。最终,广告供应链中的最终广告服务器必须包含展示广告所需的所有必要文件。有关包装广告的更多详细信息,请参阅第2.4.1节。

2.2.4<InLine> 元素

广告供应链中的最后一个广告服务器提供元素。在<InLine>元素的嵌套元素中,是显示广告所需的所有文件和URI。

2.2.4.1所需的内联元素

直接包含在元素中的是以下必需元素:

·<AdSystem>:返回广告的广告服务器的名称

·<AdTitle>:广告的通用名称

·<Impression>:一个URI,用于将视频播放器定向到跟踪资源文件,视频播放器应在广告的第一帧显示时请求该文件

·<Creatives>:一个或多个<Creative>元素的容器

到目前为止,VAST响应结构可表示如下:


2.2.4.2可选的 InLine元素

以下内容也可能包含在元素中,但这些元素是可选的:

·<Description>:一个字符串值,提供更长的广告描述。

·<Advertiser>:广告服务方定义的广告商名称。此元素可用于阻止与广告客户竞争对手展示广告。广告投放方和发布商应确定如何解释此元素中提供的值。与任何可选元素一样,视频播放器不需要支持它。

·<Survey>:调查供应商的URI,可以是调查,跟踪像素或与调查有关的任何内容。可以提供多个调查元素。 type属性可用于指定所服务的MIME类型。例如,该属性可能设置为type =“text / javascript”。只要避免跨域问题,就可以将调查动态插入到VAST响应中。

·<Error>:表示错误跟踪像素的URI;这个元素可以多次出现。错误在2.4.2.3节中定义。

·<Pricing>:提供表示实时出价(RTB)系统可以使用的价格的值。 VAST不是为处理RTB而设计的,因为存在其他传递价格的方法,但如果需要,此元素可用于自定义解决方案。如果使用,则必须标识以下两个属性:

omodel:将定价模型标识为“CPM”,“CPC”,“CPE”或“CPV”之一。

ocurrency:3个字母的ISO-4217货币符号,用于标识所提供值的货币(即美元,英镑等......)

如果要对提供的值进行模糊处理/编码,则发布者和广告商必须协商相应的机制来执行此操作。当作为包装链中的VAST Wrapper的一部分包含在内时,只需要考虑第一个包装器中提供的值。

·<Extensions>:自定义扩展的XML节点,由广告服务器定义。使用时,自定义元素应嵌套在<Extensions>下,以帮助将自定义XML元素与VAST元素分开。以下示例包含Extensions元素中的自定义xml元素。

<Extensions> <CustomXML> ... </ CustomXML> </ Extensions>

2.2.5VAST跟踪

跟踪以VAST格式提供的广告是使用VAST响应中不同级别的VAST跟踪元素集合完成的。 这些跟踪元素均包含发送VAST响应的广告服务器上的资源文件或位置的URI。 资源文件通常(但不总是)是1x1透明像素图像(即跟踪像素),其在被调用时记录特定于该跟踪像素的事件。

Video player Note:视频播放器负责在执行VAST广告响应期间的适当时间请求跟踪像素。

大多数跟踪元素对于广告服务器来说是可选的,但如果包括在内,则视频播放器需要从适当时间提供的URI请求资源文件。 广告商和发布商依赖于准确的跟踪记录来进行结算,广告系列效果,市场分析以及其他重要的商业智能和会计。 整个行业的良好跟踪实践对数字视频广告的成功和发展至关重要。

Note:视频播放器必须向跟踪元素中提供的URI发送请求; 但是,视频播放器不需要对返回的响应执行任何操作。 响应仅用于确认事件并遵守HTTP协议。 该响应通常为200,响应体中具有1x1像素图像(尽管响应可以是任何其他类型)。

2.2.5.1 VAST跟踪元素概述

以下VAST跟踪元素列表总结了VAST中每个级别提供的跟踪选项。

跟踪元素

·<error>包含视频播放器在收到“无广告”响应时应请求的跟踪资源的URI 和<Wrapper>跟踪元素

·<error>包含视频播放器应该请求的跟踪资源的URI,如果由于某种原因无法提供InLine广告

·<impression>包含视频播放器应在计算广告“展示次数”指标时请求的跟踪资源的URI,通常是在向用户显示InLine广告的第一帧时

<Linear>跟踪元素

·<TrackingEvents>以下类型元素的容器:

o 包含跟踪资源的URI,视频播放器在播放Linear广告素材期间发生特定命名事件时应该请求该视频播放器(事件名称作为此元素的属性传递);服务器可以使用对此URL的请求来跟踪与指定事件关联的指标

·<VideoClicks>以下类型元素的容器:

o 包含视频播放器应该请求的页面的URI,当用户在播放线性广告时在视频帧中单击时,该页面将显示在Web浏览器窗口中(称为“点击”或“登录页面”URI );服务器还可以使用对此URI的请求来跟踪“点击”指标

o 包含视频播放器在播放线性广告时用户在视频帧中点击时应该请求的位置或文件的URI;服务器还可以使用对此URI的请求来跟踪“点击”指标

o 包含视频播放器在播放期间点击与线性广告关联的特定按钮,链接或其他号召性用语时应请求的位置或文件的URI,但不会打开新的Web浏览器窗口中的页面;永远不应同时请求ClickThrough和CustomClick网址(即同一点击)

·<IconClicks>图标/图标元素中的容器,用于以下类型的元素:

2.2.5.2 ClickThrough和ClickTracking Elements

具有类型(即图像)的NonLinear和Companion广告素材需要一种方法来提供点击后URI,以便在用户点击广告时将其定向到广告客户的网页。 <NonLinearClickThrough>和<CompanionClickThrough>的VAST元素可以实现。

包含静态图片广告素材的点击后缀URI。在大多数情况下,此点击也会提供跟踪信息,通知相关方点击广告的情况。

然而,使用诸如VPAID的API用于视频播放器和广告单元之间的通信,广告单元可以处理点击。

NonLinear广告素材的<NonLinearClickTracking>元素和Companion广告素材的<CompanionClickTracking>元素在此情况下启用跟踪。

此外,由于只有InLine广告素材应提供点击,因此点击跟踪元素可用于跟踪Wrapper响应中的InLine广告素材中的点击次数。

下表描述了在VAST InLine和Wrapper响应中用于选择静态资源广告素材的元素。

o 包含网页的URI,当用户点击与广告关联显示的图标广告时,视频播放器应在网络浏览器窗口中打开该网页的URI;也可用于跟踪点击

o 包含视频播放器在用户点击Icon广告素材时应该请求的位置或文件的URI

·<IconViewTracking>包含视频播放器在向用户显示图标/图标广告时应该请求的位置或文件的URI

<Companion>跟踪元素(更多信息请参见第2.2.5.2节)

·<CompanionClickThrough>包含网页的URI,当用户点击随播广告时,视频播放器应在网页浏览器窗口中打开该网页的URI; URI也可用于跟踪点击率

·<CompanionClickTracking>包含视频播放器在用户点击随播广告素材时应该请求的位置或文件的URI;用于在广告素材处理点击时跟踪InLine广告素材的点击率;在Wrapper Ad中,URI用于跟踪在Wrapper之后生成的InLine响应的点击。

<NonLinearAds>跟踪元素

·<TrackingEvents>以下类型元素的容器:

o 包含视频播放器在播放非线性广告素材期间发生特定命名事件时应请求的位置或文件的URI(事件名称作为此元素的属性传递);服务器可以使用对此URL的请求来跟踪与这些事件关联的指标

<NonLinear>跟踪元素(有关更多信息,请参见第2.2.5.2节)

·<NonLinearClickThrough>包含网页的URI,当用户点击非线性广告素材时,视频播放器应在网页浏览器窗口中打开该网页

·<NonLinearClickTracking>包含视频播放器在用户点击“非线性”广告素材时应该请求的位置或文件的URI;用于在广告素材处理点击时跟踪InLine点击;在Wrapper Ad中,URI用于跟踪在Wrapper之后生成的InLine响应的点击

对于级别的<Error>元素,所有跟踪元素都以InLine和Wrapper两种格式提供,因为它仅在未返回InLine响应时使用。

2.2.5.3 <Impression>元素

VAST响应中的<InLine>元素包含一个或多个<Impression>元素。 每个<Impression>元素只包含一个子CDATA包装的URI。 如果广告素材需要多个展示资源文件(例如,当多个系统希望获得展示通知时),则必须为每个展示资源添加<Impression>元素,每个元素都具有唯一的URI。


VAST URI和可能包含潜在危险字符的任何其他自由文本字段应包装在CDATA块中,如以下示例所示:

<Impression id =“myserver”>

![CDATA [

http://ad.server.com/impression/dot.gif

]]>

</impression>

Ad sever note:包含在VAST文档中的所有URI或任何其他包含潜在危险字符的自由文本字段应包装在CDATA块中。

2.2.5.4impression与“开始”事件

应使用展示跟踪URI来跟踪广告的第一帧何时显示。 但是,广告可能由多个广告素材组成。 如果广告主除了跟踪广告展示时想要跟踪启动单个广告素材的时间,则VAST响应应在<TrackingEvents>元素下包含“开始”事件,以便跟踪广告素材。 有关详细信息,请参阅2.3.1  -  2.3.5节中每种相关广告格式下的跟踪说明。

2.2.5.5多次展示

使用多个展示URI允许广告服务器与其他广告服务系统(例如广告商使用的供应商广告服务器)共享印象跟踪信息。 当VAST响应中包含多个展示元素时,视频播放器需要全部请求

同时展示。展示请求之间的任何延迟都可能导致广告投放系统之间的计数差异。

Video player note:如果提供了多个<Impression>元素,则必须在同一时刻或尽可能接近时间请求它们。 特别是对于包含<Linear>元素的VAST响应,与IAB数字视频测量指南的合规性要求在向用户显示线性广告素材的第一帧时请求所有展示URI。 如果任何请求被显着延迟,则差异可能会导致参与的广告投放系统计数。

2.2.5.6多方的跟踪记录

参与数字广告活动的多方可能都希望自己的跟踪记录用于以VAST格式提供的视频广告。有不同的方法可以执行此操作,但VAST允许使用多个跟踪元素 - 每个跟踪元素都可以向请求通知广告跟踪信息的任何一方的服务器提供URI。

每个三个广告素材元素的跟踪元素都包含一个id属性。与上一节中描述的多次展示一样,只要提供了相同ID的多个跟踪元素,就应该同时请求每个跟踪资源。跟踪资源请求的任何重大延迟都可能导致参与方系统出现差异。

2.2.6<Creatives> 元素

VAST中的广告素材是属于VAST广告的文件。可以以Linear,NonLinear或Companions的形式提供多个广告素材。还可以以不同的技术格式提供相同种类的多个创意,以便可以显示最适合用户设备的文件(在这种情况下,仅使用最适合于该技术/设备的创意)。尽管广告中包含了多少或哪种类型的广告素材,但所有广告素材文件通常应代表相同的广告素材概念。

在元素中有一个<Creatives>元素。 <Creatives>元素提供有关每个广告素材的文件的详细信息,这些广告素材将作为广告体验的一部分包含在内。多

<Creative>可以嵌套在<Creatives>元素中。请注意主要元素<Creatives>的复数拼写和嵌套元素<Creative>的单数拼写。

每个嵌套的元素包含以下之一:<Linear>,<NonLinear>或<CompanionAds>。第1.2节描述了不同的广告类型。


下图表示元素,其中包含带有免费Companion广告的线性广告

<Creative>元素可能包含一个序列属性,用于标识每个广告素材应显示的数字顺序。 例如,广告可能希望播放线性广告素材,然后播放NonLinear广告素材。 在这种情况下,序列属性的值对于线性广告素材为1,对于NonLinear广告素材为2。 在没有序列值的情况下连续显示创意是由视频播放器自行决定的。

Note:不应将<Creative>序列属性与<Ad>序列属性混淆。 广告素材序列标识单个广告中的多个广告素材的序列,并且不定义广告连播。 相反,<Ad>序列标识多个广告的序列并定义Ad Pod。 有关Ad Pod的详细信息,请参阅第2.3.5节。

2.2.6.1creative属性

元素可使用以下属性:

·id:广告服务器定义的广告素材标识符

·sequence:每个排序的广告素材应显示的数字顺序(不要与用于定义Ad Pod的<Ad>序列属性混淆)

·adId:标识投放广告素材的广告

·apiFramework:用于任何包含的API的技术

所有广告素材属性均为可选

2.2.6.2VAST示例:与伴随线性


2.2.6.3creative扩展

当需要API框架来执行广告素材时,可以在<Creative>下添加<CreativeExtensions>元素。此扩展程序可用于在使用或不使用媒体文件的情况下加载可执行广告素材。

元素嵌套在<CreativeExtensions>(复数)元素下,以便任何xml扩展名与VAST xml分开。此外,此扩展中使用的任何xml都应标识xml名称空间(xmlns),以避免将任何xml元素名称与VAST名称空间混淆。

嵌套的包含type的属性,该属性指定执行扩展所需的MIME类型。

广告素材属性apiFramework标识了执行广告素材所需的API。如果未指定apiFramework属性,则视频播放器可能会忽略广告素材。如果没有它就无法完全执行广告,则视频播放器可能会忽略广告并使用<错误>元素(在<Ad>元素下通知广告服务器广告无法显示。


符合格式的2.3VAST要求

在VAST 3.0中,视频播放器可以选择支持不同的视频广告格式,同时保持符合VAST标准的状态。视频播放器可能会选择支持五种VAST广告格式中的一种或多种:

[if !supportLists]· [endif]·Linear Ads

[if !supportLists]· [endif]Skippable Linear Ads*

[if !supportLists]· [endif]Companion Ads*

[if !supportLists]· [endif]NonLinear Ads

[if !supportLists]· [endif]Ad Pods*


*可跳过的线性广告和广告广告需要支持线性广告。随播广告需要支持线性广告或非线性广告。

提供可选的合规格式使视频播放器能够符合VAST规则,同时仅支持最适合其视频发布模式的格式。允许选择符合精选广告格式的选项有助于提高整个行业的采用率,从而使视频广告服务器更容易扩展到更多发布商平台的覆盖面。

识别VAST响应中的广告格式

下表总结了VAST响应中找到的元素的属性,该响应代表五种VAST广告格式之一。其中一个广告格式列下的检查✓表示该行中的VAST元素应在VAST响应中找到。

工程师可以使用下表对视频播放器进行编程,以快速识别VAST响应中包含的VAST广告格式。



例如,如果视频播放器仅支持线性广告,但VAST响应包含<Ad>元素,其序列属性可用作广告播放器,只要至少有一个<Ad>元素没有序列属性,视频播放器可以忽略其他有序的<Ad>元素。但是,如果在VAST响应中找到的广告格式的唯一选项是视频播放器不支持的格式,则视频播放器可以拒绝广告并使用<Ad>的<Error>元素通知广告服务器。

同样,如果视频播放器支持多种格式,例如Linear Ads和Companion Ads(支持流行的“linear with companion”产品),则应尊重两种格式的签名元素属性。

每个合规性类别的详细信息请参见第2.3.1-2.3.5节。

2.3.1线性广告格式

业内流行的最常见类型的视频广告是“线性广告”,其是与内容显示在相同区域但不与内容同时显示的广告。实际上,视频播放器必须在显示线性广告之前中断内容。线性广告通常会在播放视频内容之前显示。此广告位置称为“前贴片”位置。出于这个原因,线性广告通常被称为“前贴片广告”。

表示线性广告的VAST响应结构如下图所示。



2.3.1.1线性元素

元素有两个必需的子元素,<Duration>和<MediaFiles>元件。 此外,还提供了四个可选的子元素:<VideoClicks>,<AdParameters>,<TrackingEvents>和<Icons>。

下图表示直接位于<Linear>元素下的元素。 以红色标出的元素是必需的。


2.3.1.2 <Duration>元素

线性广告素材的广告持续时间以元素表示。持续时间以“HH:MM:SS.mmm”格式表示(.mmm表示毫秒并且是可选的)。例如,30秒的视频表示如下:

<Duration>00:00:30</Duration>

或者

<Duration>00:00:30.000</Duration>

应尽可能使用.mmm扩展名(毫秒)以避免过早停止广告素材。

元素可以包含多个<MediaFile>元素(在下一节中描述),每个元素必须具有在线性持续时间元素中定义的持续时间。由转码过程产生的微小变化是可以接受的。

2.3.1.3 <MediaFiles>元素

<MediaFiles>元素是一个或多个<MediaFile>元素的容器,每个元素都包含CDATA包装的URI,该URI包含要为Linear广告素材下载或流式传输的媒体文件。线性广告素材通常是视频文件,但也可以使用静态图片。

元素可以包含多个<MediaFile>元素,每个元素最适合不同的技术或设备。当广告可以被服务于多个视频平台时,一个平台(即设备)可能需要与另一平台需要的格式不同的媒体文件。更具体地,不同的设备能够以不同的比特率显示具有不同编码和容器的视频文件。

因此,对于跨平台交付的广告,VAST文档通常包含多个替代方案

<MediaFiles>元素,每个元素都有不同的容器 - 编解码器版本以及几种不同的比特率。只应显示与视频播放器系统最匹配的媒体文件。每个媒体文件的广告素材内容应相同。

Ad sever note:对于跨平台交付的广告,广告服务器应返回包含多个备选<MediaFile>元素的VAST响应,每个元素具有不同的容器 - 编解码器版本以及几种不同的比特率。

元素还具有视频播放器用于选择要向用户显示的媒体文件的若干属性。 视频播放器必须只选择一个要显示的媒体文件,并且应该选择最能在用户设备上显示的设备以及设备现有功能(视频解码器,网络连接等)。

2.3.1.4media file属性

以下属性可用于元素。必需属性:

·delivery:渐进式下载协议(如HTTP)的“渐进式”或流式协议的“流式传输”。

·type:文件容器的MIME类型。流行的MIME类型包括但不限于Flash视频的“video / x-flv”和MP4的“video / mp4”

·* width:视频文件的原始宽度(以像素为单位)

·* height:视频文件的原始高度(以像素为单位)

*对于没有宽度和高度的媒体文件(例如仅使用音频文件),可以接受值“0”。

可选属性:

·codec:用于编码文件的编解码器,可以采用RFC 4281指定的值:http://tools.ietf.org/html/rfc4281

·id:媒体文件的标识符

·bitrate或minBitrate和maxBitrate:对于渐进式加载视频,比特率值指定媒体文件的平均比特率;否则,minBitrate和maxBitrate可以一起用于指定流视频的最小和最大比特率

·scalable:标识媒体文件是否旨在扩展到更大的维度

·maintainAspectRatio:一个布尔值,指示在缩放到新维度时是否应保持媒体文件维度的宽高比

·apiFramework:标识执行交互式媒体文件所需的API

Video player note:多个媒体文件通常包含在广告素材元素中,以确保至少一个文件可以最佳地显示给用户。 视频播放器只需要选择一个<MediaFile>元素进行显示,并且应该选择最能在用户设备上显示的元素。

某些视频播放器可能只查看可用的第一个媒体文件,并在无法显示时忽略该创意,但提供的第一个媒体文件可能不是最适合显示给用户的媒体文件。在选择要显示的文件之前,视频播放器应轮询所有媒体文件。

2.3.1.5使用静态图像媒体文件进行线性创作

为获得最佳效果,应将线性广告位中使用的静态图像转码为视频媒体文件。但是,当提供静态图像作为Linear广告素材的媒体文件时,视频播放器应该

只要元素指示,就会尝试显示图像。视频播放器UI元素应向观看者指示图像正在进行中,以避免在广告播放期间向用户显示视频播放器已冻结。如果无法显示静态图像,则视频播放器应使用错误事件URI发送描述事件的错误(错误405可能是最合适的)。有关错误消息的详细信息,请参见第2.4.2节。

2.3.1.6可选的<VideoClicks>元素

元素可以选择性地包含<VideoClicks>元素,该元素用于指定当用户在显示广告时直接在视频播放器框架内单击时视频播放器应该执行的操作。如果提供了<VideoClicks>元素,则它必须包含单个子<ClickThrough>元素,并且可选地包含一个或多个子<ClickTracking>和<CustomClick>元素。 <VideoClicks>元素及其嵌套元素的结构如下图所示。


如果媒体文件无法提供自己的媒体文件,则元素用于为媒体文件提供点击。 提供的点击URI用于在用户点击广告时在新的网络浏览器窗口中打开视频播放器。 URI通常会将用户重定向到广告商网站上的页面。

可选的元素用于跟踪广告素材文件处理点击时的点击次数,<CustomClick>元素用于跟踪线性广告素材中的其他非点击点击。

Video player note:如果存在<ClickThrough>元素,则当用户单击视频广告素材时,视频播放器必须在Web浏览器窗口中加载嵌套的URI。

元素的其他可选子元素是用于可执行广告素材的<AdParameters>元素和<TrackingEvents>元素。 <AdParameters>元素在2.3.1.9节中描述,<TrackingEvents>元素在2.3.1.7节中描述。

2.3.1.7跟踪linear creative

在从广告服务器请求和显示VAST广告时,视频播放器的关键功能是将跟踪信息完全按照VAST文档中的规定发送回广告服务器。无法发送准确的跟踪数据会导致视频播放器和广告服务器计数之间出现不一致的结果。

线性广告素材的跟踪信息在两个位置指定:在<VideoClicks>和

<TrackingEvents>元素(两个可选元素直接嵌套在<Linear>元素下)。 <VideoClicks>元素在上一节中描述。

<TrackingEvents>元素可能包含一个或多个<Tracking>元素。 <Tracking>元素的事件属性使广告服务器能够为他们想要跟踪的事件包含单独的跟踪URI。事件属性在以下部分VAST响应示例中表示:

<TrackingEvents>

<Tracking event=”firstQuartile”>

<![CDATA[http://adserver.com/firstQuartilePixel.gif]>

</Tracking>

</TrackingEvents>

如果存在,当在线性广告素材的播放中发生相应事件时,视频播放器必须在事件中向跟踪URI发送请求。如果未提供特定事件的<Tracking>元素,则不会对视频播放器执行任何操作。

Note: VAST 3.0中提供的一些跟踪事件是新的,未在2008 IAB数字视频流内广告指标定义文档中定义的指标中涵盖。 两个文档中描述的度量标准之间不应存在冲突,但VAST 3.0提供了更多用于跟踪的选项,并且(仅在本文档的发布时)仅适用于VAST 3.0。

事件类型如下:

·creativeView:不要与展示混淆,此事件表示广告的各个广告素材部分已被查看。展示会显示广告的第一帧;但广告可能由多个广告素材或广告素材组成,仅在某些平台上播放,而在其他平台上播放。此事件使广告服务器能够跟踪查看的广告素材,因此,哪些平台更常见。

·start:此事件用于表示广告中的单个广告素材已加载并开始播放。与creativeView一样,此活动是跟踪广告素材播放的另一种方式。

·firstQuartile:创意至少占总持续时间的25%。

·midpoint:广告素材的播放时间至少为总持续时间的50%。

·thirdQuartile:创意至少播放了75%的时间。

·complete:广告素材以正常速度播放到最后。

•静音:用户激活静音控件并将广告素材静音。

·unmute:用户激活静音控件并取消静音广告素材。

•暂停:用户点击了暂停控件并停止了广告素材。

·rewind:用户激活了回放控件以访问广告素材时间轴中的上一个点。

·resume:用户在广告素材停止或暂停后激活了恢复控件。

·**全屏:用户激活控件以将视频播放器扩展到查看器屏幕的边缘。

·** exitFullscreen:用户激活控件以将视频播放器大小减小到原始尺寸。

·**fullscreen:用户激活控件以展开广告素材。

·**exitFullscreen:用户激活控件以将广告素材缩小到原始尺寸。

·* acceptInvitationLinear:用户激活了一个控件,该控件启动了广告素材的其他部分。此事件的名称将其与2008 IAB数字视频流内广告指标定义中描述的现有“acceptInvitation”事件区分开来,后者将“acceptInivitation”指标定义为仅适用于非线性广告。 “acceptInvitationLinear”事件扩展了在Linear广告素材中使用的指标。

·* closeLinear:用户点击了广告素材上的关闭按钮。此事件的名称将其与2008 IAB数字视频流内广告指标定义中描述的现有“关闭”事件区分开来,后者将“关闭”指标定义为仅适用于非线性广告。 “closeLinear”事件扩展了“close”事件,以便在Linear广告素材中使用。

·* skip:用户激活跳过控件以跳过广告素材,该控件与用于关闭广告素材的控件不同。

·*progress:在正常速度下播放的广告素材等于或大于偏移量附加属性中提供的值。偏移值可以是格式为HH:MM:SS或HH:MM:SS.mmm的时间或格式为n%的百分比值。具有不同值的多个进度事件可用于跟踪线性广告素材时间轴中的多个进度点。

* VAST 3.0中引入的度量标准。

** 2008 IAB数字视频流媒体广告指标定义中描述的展开和折叠指标用于跟踪视频播放器本身何时展开到全屏并从全屏折叠到其原始大小。为了保持符合2008年指南,应相应地使用这些指标。在VAST 3.0中,可以使用指标全屏和exitFullscreen,保持展开和折叠以跟踪创意行为而不是视频播放器行为。要在保持与2008指南合规的同时使用全屏和exitFullscreen,请为全屏和展开使用通用跟踪URI,并为exitFullscreen和折叠使用另一个常用URI。

Video player note:如果广告素材中存在一个或多个<Tracking>元素,则视频播放器必须在相应的<Tracking>元素中标识的URI中请求跟踪资源,以便在播放广告素材时发生相应的事件。

如果存在元素,则视频播放器必须在用户单击广告素材时从提供的URI请求跟踪资源。 多

当用户点击广告素材时,必须同时(或尽可能接近时间)请求 URI。

2.3.1.8相同类型的多个跟踪事件

使用相同类型的多个跟踪事件使广告服务器能够与其他广告服务系统(例如广告商使用的供应商广告服务器)共享印象跟踪信息。

当提供相同类型的多个跟踪事件(即,多个“开始”事件)时,视频播放器需要同时或尽可能接近地请求相同类型的所有事件。 请求之间的任何显着延迟都可能导致广告服务系统之间的计数差异。

Video player note:如果提供了相同类型的多个跟踪事件,则必须在同一时刻(或尽可能接近时间)请求每个跟踪资源。 如果任何请求被显着延迟,则差异可能会导致参与的广告投放系统计数。

2.3.1.9可执行媒体文件

VAST支持媒体文件是“可执行文件”的情况。可执行媒体文件是基于代码构建的广告,必须在运行时环境(如Adobe Flash™)中执行。广告服务器可以使用可执行文件来指定具有自定义交互性的广告素材,或使用自定义跟踪行为。最常见的(截至本文档发布),可执行文件是设计为在Flash Player中运行的二进制文件,或者是设计为在Web浏览器中执行的JavaScript文件。 VAST可以通过识别视频播放器的格式来支持这些和任何其他可执行文件格式。

如果在VAST响应中为广告素材标识了可执行媒体文件,则视频播放器需要知道文件的格式以及如何以编程方式与其进行通信。通常,可执行媒体文件使用IAB视频播放器广告界面定义(VPAID)API与视频播放器进行通信,尽管VAST可以支持任何API。有关VPAID的更多信息,请访问http://www.iab.net/vsuite/vpaid。

包含可执行媒体文件的VAST响应应使用<MediaFile>属性类型来包含可执行文件的MIME类型。例如,Flash“SWF”文件应使用“application / x-shockwave-flash”类型,JavaScript文件应使用“application / x-javascript”类型。可执行的<MediaFile>元素还应指定可选属性apiFramework。如果缺少相应的apiFramework但需要执行媒体文件,则视频播放器可以忽略媒体文件。如果其他选项无法用于显示广告,则视频播放器可以忽略该广告,并应使用<Error>元素通知广告服务器无法显示广告。

以下xml示例提供了使用VPAID作为交互式API在Flash中执行的媒体文件的属性值。

<MediaFiles>

...

</MeidaFile>

</ MediaFiles>


2.3.1.10可选的<AdParameters>元素

某些广告投放系统可能希望在首次初始化时将数据发送到媒体文件。例如,媒体文件可以使用广告服务器数据来识别用于显示广告素材的上下文,要与之交谈的服务器,或者甚至要显示哪个创意。Linear广告素材的可选<AdParameters>元素可启用此数据交换。

可选属性xmlEncoded可用于<AdParameters>元素,以标识广告参数是否为xml编码。如果为true,则视频播放器必须使用xml来解码数据。在早期版本的VAST上运行的视频播放器可能无法对数据进行xml解码,因此数据在提供给能够xml的视频播放器时只能进行xml编码 - 解码数据。

VAST中的<AdParameters>值应包含在CDATA块中。

2.3.2.2Skip事件

提供跳过事件是为了支持跟踪已跳过且仅适用于线性广告素材的线性广告素材。当用户跳过可跳过的广告素材时,视频播放器必须从提供的跳过事件URI中请求跟踪资源。

以下示例为VAST 3.0响应中的跳过事件提供跟踪URI:


<TrackingEvents>

<Tracking event="skip">

<![CDATA[

http://ad.server.com/skip/dot.gif

]]>

</Tracking>

</TrackingEvents>

跳过事件不应与close事件混淆。 只有在用户采取措施关闭播放器或窗口时才会触发关闭事件。 另一方面,当激活特定跳过控件时,触发跳过事件。

2.3.2.3进展事件

无论广告是否被跳过,广告客户和发布商都需要在“可跳过的线性”广告素材视为视图时进行协商。例如,支持可跳过广告的某些供应商可能会在至少30秒的广告素材播放时计算一个视图。 progress事件包括offset属性,该属性提供指示记录视图的时间的时间值(HH:MM:SS或HH:MM:SS.mmm)或百分比(n%)值。在这种情况下,creativeView事件可用于跟踪视图,但应在发布者和广告商之间协商详细信息。

以下示例为线性广告素材播放至少30秒后触发的进度事件提供跟踪URI。

<TrackingEvents>

<Tracking event="progress" offset=”00:00:30.000”>

<![CDATA[

http://ad.server.com/view.gif

]]>

</Tracking>

</TrackingEvents>

支持Skippable Linear Ads的视频播放器必须向为progress事件提供的URI发送请求(如果提供了该请求)。如果持续时间未知时以百分比值提供进度偏移,则视频播放器可以忽略进度事件。具有不同偏移值的多个进度事件可用于跟踪线性创意时间线中的不同时间点。

无论进度事件记录如何,发布者和广告商都必须根据进度事件协商计算视图的条款。

当进度设置为25%,50%,75%和100%时,进度事件提供与四分位数跟踪事件(即,第一四分位数,中点,第三四分位数,完整)相当的度量。但是,会单独跟踪进度事件,因此在提供时仍必须支持四分位事件。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,326评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,228评论 1 304
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,979评论 0 252
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,489评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,894评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,900评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,075评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,803评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,565评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,778评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,255评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,582评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,254评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,151评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,952评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,035评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,839评论 2 277

推荐阅读更多精彩内容