我正在尝试为VAST文件编写一个小型解析器,以找出所描述的广告休息的“总持续时间”:
<Ad>
和一个<InLine>
,一个<Creative>
和一个<Linear>
,则“总持续时间”显然是<Duration>
<Linear>
,每个都有一个<Ad>
,每个都有两个<InLine>
,每个都有一个<Creative>
,则“总持续时间”是四个<Linear>
中四个<Duration>
的总和<Linear>
标签包含<Linear>
属性,则会忽略此属性并使用完整的持续时间skipOffset
包含一个<Ad>
标记,我将加载<Wrapper>
并从中解析出持续时间,以添加到我的“总持续时间”(总持续时间异步返回,因此这是可以接受的-我只是将回调延迟到所有包装程序下载完成<VASTAdTagURI>
只能包含一个<Ad>
或<Wrapper>
标签-因此,我不必担心<InLine>
拥有多个<Ad>
或多个<InLine>
。<Wrapper>
只能包含<Wrapper>
个附加跟踪标签,否则可能不包含任何<Linear>
个,因此不会直接影响我的时间<MediaFile>
可能包含多个<InLine>
,因此我必须添加所有<Creative>
s的持续时间<Creative>
可能只包含一个<Creative>
-因此,我不必担心<Linear>
拥有多个<Creative>
s <Linear>
必须包含一个<Linear>
,并且只能包含一个<Duration>
-因此,我不必担心{{1} }没有<Duration>
或有多个<Linear>
<Duration>
而没有找到<Duration>
,则您可能会(按照规范)抛出错误并拒绝加载更多内容-因此,我不必担心无限循环或从不担心找到一个<Wrapper>
在所有这些限制下,规范中没有提到明确的一件事困扰着我。尽管规范确实说:
- VAST请求:在视频内容播放期间的某个时间点,(在前片前),在中间片中(中间)或之后(后片),播放器到达插入广告并使用HTTP发送广告请求的提示。有关发送广告请求的信息,请参见1.1.1节。该请求将发送到主要广告服务器,该服务器可能是视频发布者的广告服务器或供应方平台(SSP)。
- *包装器响应:主服务器以VAST响应。该响应是InLine响应或包装器响应。如果服务器可以满足广告请求,则会发送一个内联响应(步骤4)。在许多情况下,广告服务器会使用Wrapper响应将播放器重定向到辅助服务器。
- 次要VAST请求:如果收到包装器响应,则播放器会向另一台服务器发出次要请求。次要响应可以是InLine响应或其他VAST包装器。
- 内嵌响应:最终,在一系列请求和响应之后,广告服务器会提供内嵌响应。
这听起来像<InLine>
,在加载时应该只包含一个<InLine>
(可能包含另一个<Wrapper>
或可能包含<Ad>
)-但是我没有看到任何禁止<Wrapper>
包含多个<InLine>
的内容。这可能吗?还是我在规格中遗漏了一些东西?
如果一个<Wrapper>
可以 包含多个<Ad>
,那么我需要找到一种方法来包含 all 相关的<Wrapper>
(原始VAST中的所有<Ad>
和<Ad>
中的所有<Ad>
)。但是,设想允许这样做会引发许多有关如何处理<Wrapper>
和<Impression>
的问题。例如,如果<TrackingEvent>
同时包含<Wrapper>
和<Impression>
,并且<VASTAdTagURI>
的内容包含两个<VASTAdTAgURI>
,那么我们是否会ping {播放每个 <Ad>
时一次{1}} URL?还是仅在两者 <Impression>
播放之后?