借助 Dynamic Ad Insert API,您可以请求和跟踪 DAI 直播。
服务:dai.google.com
所有 URI 均相对于 https://dai.google.com
。
方法:stream
方法 | |
---|---|
stream |
POST /ssai/pods/api/v1/network/{network_code}/custom_asset/{custom_asset_key}/stream
注册 DAI DAI pod 投放直播会话。 |
HTTP 请求
POST https://dai.google.com/ssai/pods/api/v1/network/{network_code}/custom_asset/{custom_asset_key}/stream
路径参数
参数 | |
---|---|
network_code |
string
发布商的 Google Ad Manager 广告资源网代码。 |
custom_asset_key |
string
Google Ad Manager 中与此事件相关联的自定义标识符。 |
请求正文
请求正文的类型为 application/x-www-form-urlencoded
并包含以下参数:
参数 | ||
---|---|---|
DFP 定位参数 | 可选 | 其他定位参数。 |
替换视频流参数 | 可选 | 替换数据流创建参数的默认值。 |
HMAC 身份验证 | 可选 | 使用基于 HMAC 的令牌进行身份验证。 |
响应正文
如果成功,响应正文将包含一个新的 Stream
对象。
开放式衡量
DAI API 的 Verifications
字段中包含 Open Measurement 验证信息。此字段包含一个或多个 Verification
元素,其中列出了执行第三方衡量代码以验证广告素材播放所需的资源和元数据。仅支持 JavaScriptResource
。如需了解详情,请参阅 IAB Tech Lab 和 VAST 4.1 规范。
方法:广告连播细分
方法 | |
---|---|
pod segment |
GET /linear/pods/v1/seg/network/{network_code}/custom_asset/{custom_asset_key}/{pod_identifier}/profile/{profile_name}/{segment_number}.{segment_format}
为给定事件 ID 创建 DAI 数据流。 |
HTTP 请求
GET https://dai.google.com/linear/pods/v1/seg/network/{network_code}/custom_asset/{custom_asset_key}/{pod_identifier}/profile/{profile_name}/{segment_number}.{segment_format}
路径参数
参数 | |
---|---|
network_code |
string
发布商的 Google Ad Manager 广告资源网代码。 |
custom_asset_key |
string
Google Ad Manager 中与此事件相关联的自定义标识符。 |
pod_identifier |
支持以下格式: pod/{integer}
当前广告插播时间点的数字标识符。系统会为每个广告插播事件逐个分配广告连播 ID,从 ad_break_id/{string}
当前广告插播时间点的字符串标识符。 |
profile_name |
string
所请求的 Google Ad Manager DAI 编码配置文件的名称。 编码配置文件必须是为所选事件配置的编码配置文件之一。 |
segment_number |
integer
当前广告连播中所请求的细分受众群的索引(从零开始)。 |
segment_format |
string
与请求的片段格式关联的文件扩展名。
接受的扩展名包括: |
查询参数
参数 | ||||||
---|---|---|---|---|---|---|
stream_id |
required |
string
当前用户会话的串流 ID。对 |
||||
sd |
required1
|
integer
请求的片段的时长(以毫秒为单位)。 |
||||
so |
可选 |
请求的广告连播中相应广告片段的偏移量(以毫秒为单位)。
如果您省略 |
||||
pd |
必需2 |
integer
广告连播的时长(以毫秒为单位)。 |
||||
auth-token |
required |
string
当前广告连播的经过签名的网址编码 HMAC 令牌。 |
||||
last |
可选 |
boolean
表示广告插播时间点中的最后一个片段。对于所有其他细分,省略此参数。 |
||||
scte35 |
可选 |
string
此广告插播时间点的 Base64 编码 SCTE-35 信号。 |
||||
cust_params |
可选 |
string
一组用于 Ad Manager 广告系列定位的键值对。这些对必须表示为经过网址编码的查询字符串。 示例:
|
脚注
示例
GET https://dai.google.com/linear/pods/v1/seg/network/sandbox_dev/custom_asset/podserving-segredirect-custom-key/ad_break_id/adbreak-2/profile/8b8888cf79ad43f0800482ffc035a1ac_ts_a/1.ts?so=0&sd=10000&pd=30000&stream_id=8e19cbc6-850b-404c-99d7-860aa4a674cb:TEST
GET
响应正文
如果成功,响应正文将是一个与请求中指定的格式和参数匹配的可播放流片段。
方法:HLS 广告连播清单
检索直播的 HLS 广告连播清单,以便客户端视频播放器加载和播放。
方法 | |
---|---|
GET |
GET /linear/pods/v1/hls/network/{network_code}/custom_asset/{custom_asset}/pod/{pod_id}.m3u8;
用于检索广告连播的 HLS 多变体播放列表的 API。 |
HTTP 请求
GET https://dai.google.com/linear/pods/v1/hls/network/{network_code}/custom_asset/{custom_asset_key}/pod/{pod_id}.m3u8?stream_id={stream_id}&pd={pod_duration}
路径参数
参数 | |
---|---|
network_code |
string
发布商的 Google Ad Manager 广告资源网代码。 |
custom_asset_key |
string
Google Ad Manager 中与此事件相关联的自定义标识符 |
pod_id |
integer
当前广告插播时间点的数字标识符。系统会为每个广告插播事件逐个分配广告连播 ID,从 |
查询参数
参数 | ||||||
---|---|---|---|---|---|---|
stream_id |
必需 |
string
当前用户会话的串流 ID。对 |
||||
pd |
必需 |
integer
广告连播的时长(以毫秒为单位)。 |
||||
scte35 |
可选 |
string
此广告插播时间点的 Base64 编码 SCTE-35 信号。 |
||||
cust_params |
可选 |
string
一组用于 Ad Manager 广告系列定位的键值对。这些对必须表示为经过网址编码的查询字符串。 示例:
|
响应正文
如果成功,响应正文将是一个 HLS 多变体播放列表。
方法:DASH 广告连播清单
检索直播的 MPEG-DASH 广告连播清单,以便客户端视频播放器加载和播放。
方法 | |
---|---|
GET |
GET /linear/pods/v1/dash/network/{network_code}/custom_asset/{custom_asset}/stream/{stream_id}/pod/{pod_id}/manifest.mpd
用于检索广告连播的 MPEG-DASH mpd 播放列表的 API。 |
HTTP 请求
GET https://dai.google.com/linear/pods/v1/dash/network/{network_code}/custom_asset/{custom_asset_key}/stream/{stream_id}/pod/{pod_id}/manifest.mpd?pd={pod_duration}
路径参数
参数 | |
---|---|
network_code |
string
发布商的 Google Ad Manager 广告资源网代码。 |
custom_asset_key |
string
在 Google Ad Manager 中与此事件关联的自定义标识符 |
stream_id |
string
当前用户会话的视频流 ID。成功向 |
pod_id |
integer
当前广告插播时间点的数字标识符。系统会为每个广告插播事件逐个分配广告连播 ID,从 |
查询参数
参数 | ||||||
---|---|---|---|---|---|---|
pd |
必需 |
integer
广告连播的时长(以毫秒为单位)。 |
||||
scte35 |
可选 |
string
此广告插播时间点的 Base64 编码 SCTE-35 信号。 |
||||
cust_params |
可选 |
string
一组用于 Ad Manager 广告系列定位的键值对。这些对必须表示为经过网址编码的查询字符串。 示例:
|
响应正文
如果成功,响应正文将是一个 MPEG-DASH mpd 播放列表。
方法:DASH pod 时间段模板
方法 | |
---|---|
pods |
GET /linear/pods/v1/dash/network/{network_code}/custom_asset/{custom_asset_key}/pods.json
向 Google Ad Manager 请求 DASH 时间段模板。此模板包含您必须使用视频流参数填充的宏。填充这些宏后,模板就会成为广告插播时间点,并且可以缝合到您的 DASH 清单中。 |
HTTP 请求
GET https://dai.google.com/linear/pods/v1/dash/network/{network_code}/custom_asset/{custom_asset_key}/pods.json
路径参数
参数 | |
---|---|
network_code |
string
发布商的 Google Ad Manager 广告资源网代码。 |
custom_asset_key |
string
Google Ad Manager 中与此事件相关联的自定义标识符。 |
查询参数
参数 | ||
---|---|---|
stream_id |
required |
string
当前用户会话的串流 ID。成功向 |
响应正文
如果成功,响应正文将包含一个新的 PodTemplateResponse
对象。
方法:媒体验证
在播放过程中遇到广告媒体标识符后,立即使用上文中从 stream 端点获取的 media_verification_url 发出请求。对于服务器端信标串流(服务器发起媒体验证),这些请求不是必需的。
对 media verification
端点的请求是幂等的。
方法 | |
---|---|
media verification |
GET /{media_verification_url}/{ad_media_id}
向 API 通知媒体验证事件。 |
HTTP 请求
GET https://{media-verification-url}/{ad-media-id}
响应正文
media verification
会返回以下响应:
- 如果媒体验证成功且已发送所有 ping,则为
HTTP/1.1 204 No Content
。 - 如果请求因网址格式不正确或到期时间而无法验证媒体,则为
HTTP/1.1 404 Not Found
。 HTTP/1.1 404 Not Found
(如果之前针对此 ID 的验证请求已成功)。HTTP/1.1 409 Conflict
,如果此时有其他请求正在发送 ping。
广告媒体 ID
广告媒体标识符将编码在单独的元数据轨道中,即 HLS 传输流的时间戳元数据或 mp4 文件的 emsg。广告媒体标识符始终以字符串 google_
开头。
在发出每个广告验证请求之前,应将元数据条目的全部文本内容附加到广告验证网址中。
方法:metadata
位于 metadata_url
的元数据端点会返回用于构建广告界面的信息。元数据端点不适用于服务器端信标串流,在这种情况下,服务器负责发起广告媒体验证。
方法 | |
---|---|
metadata |
GET /{metadata_url}/{ad-media-id} GET /{metadata_url}
检索广告元数据信息。 |
HTTP 请求
GET https://{metadata_url}/{ad-media-id}
GET https://{metadata_url}
响应正文
如果成功,响应将返回一个 PodMetadata
实例。
解析元数据
元数据分为三个部分:tags
、ads
和广告 breaks
。数据的入口点是 tags
部分。然后,迭代标记,找到名称是视频串流中找到的广告媒体 ID 前缀的第一个条目。例如,您的广告媒体 ID 可能如下所示:
google_1234567890
然后,您会找到一个名为 google_12345
的标记对象。在本例中,它与您的广告媒体 ID 匹配。找到正确的广告媒体前缀对象后,您可以查找广告 ID、广告插播 ID 和事件类型。然后,广告 ID 用于为 ads
对象编制索引,广告插播 ID 用于为 breaks
对象编制索引。
响应数据
数据流
用于以 JSON 格式呈现新创建的串流的资源列表。JSON 表示法 |
---|
{ "stream_id": string, "media_verification_url": string, "metadata_url": string, "session_update_url": string, "heartbeat_url": string, "polling_frequency": number, "pod_manifest_url": string, "manifest_format": string, } |
字段 | |
---|---|
stream_id |
string GAM 数据流标识符。 |
media_verification_url |
string 用作跟踪播放事件的基本端点的媒体验证网址。 |
metadata_url |
string 用于轮询与即将进行的直播广告活动的定期信息有关的元数据网址。 |
session_update_url |
string 用于更新此视频流的定位参数的会话更新网址。 系统会在初始视频流创建请求期间捕获定位参数的原始值。 |
heartbeat_url |
string 心跳 URL,用于保持服务器端信标流的活跃状态,必须每 {PollingFrequency} 秒 ping 一次。为服务器端信标流填充。 |
polling_frequency |
number 请求 metadata_url 或 heartbeat_url 时的轮询频率(以秒为单位)。 |
pod_manifest_url |
string 广告连播清单网址模板用于生成用于检索直播的广告连播清单的网址,对应于 HLS 中的多变体播放列表的网址或 DASH 中的 MPD。系统会为动态广告插播类型为 POD_SERVING_MANIFEST 的直播事件填充此字段。 https://developers.google.com/ad-manager/api/reference/v202305/LiveStreamEventService.DynamicAdInsertionType |
manifest_format |
string 清单格式是指从 pod_manifest_url 检索到的清单的格式,可以是 dash 或 hls。 |
PodMetadata
PodMetadata 包含有关广告、广告插播时间点和媒体 ID 代码的元数据信息。JSON 表示法 |
---|
{ "tags": map[string, object(TagSegment)], "ads": map[string, object(Ad)], "ad_breaks": map[string, object(AdBreak)], } |
字段 | |
---|---|
tags |
map[string, object(TagSegment)] 按标记前缀编入索引的代码段地图。 |
ads |
map[string, object(Ad)] 按广告 ID 编入索引的广告映射。 |
ad_breaks |
map[string, object(AdBreak)] 按广告插播 ID 编入索引的广告插播映射。 |
TagSegment
TagSegment 包含对广告、其广告插播时间点和事件类型的引用。不应向广告媒体验证端点 ping 类型为“progress”的 TagSegment。JSON 表示法 |
---|
{ "ad": string, "ad_break_id": string, "type": string, } |
字段 | |
---|---|
ad |
string 此代码所对应的广告的 ID。 |
ad_break_id |
string 此代码的广告插播时段的 ID。 |
type |
string 此代码的事件类型。 |
AdBreak
AdBreak 用于描述直播中的单个广告插播。它包含时长、类型(中间/前/后)和广告数量。JSON 表示法 |
---|
{ "type": string, "duration": number, "expected_duration": number, "ads": number, } |
字段 | |
---|---|
type |
string 有效的休息类型包括:前、中和后。 |
duration |
number 此广告插播的总广告时长(以秒为单位)。 |
expected_duration |
number 广告插播时间点的预计时长(以秒为单位),包括所有广告和所有可选广告。 |
ads |
number 广告插播时间点中的广告数量。 |
广告
广告描述视频流中的广告。JSON 表示法 |
---|
{ "ad_break_id": string, "position": number, "duration": number, "title": string, "description": string, "advertiser": string, "ad_system": string, "ad_id": string, "creative_id": string, "creative_ad_id": string, "deal_id": string, "clickthrough_url": string, "click_tracking_urls": [], "verifications": [object(Verification)], "slate": boolean, "icons": [object(Icon)], "wrappers": [object(Wrapper)], "universal_ad_id": object(UniversalAdID), "extensions": [], "companions": [object(Companion)], "interactive_file": object(InteractiveFile), } |
字段 | |
---|---|
ad_break_id |
string 此广告的广告插播时段的 ID。 |
position |
number 此广告在广告插播时段中的位置,从 1 开始。 |
duration |
number 广告时长(以秒为单位)。 |
title |
string 广告的标题(可选)。 |
description |
string 广告的可选广告内容描述。 |
advertiser |
string 可选的广告客户标识符。 |
ad_system |
string 可选广告系统。 |
ad_id |
string 可选广告 ID。 |
creative_id |
string 可选广告素材 ID。 |
creative_ad_id |
string 可选的广告素材广告 ID。 |
deal_id |
string 可选的交易 ID。 |
clickthrough_url |
string 可选的点击后到达网址。 |
click_tracking_urls |
string 可选的点击跟踪网址。 |
verifications |
[object(Verification)] 可选的 Open Measurement 验证条目,其中会列出执行第三方衡量代码以验证广告素材播放所需的资源和元数据。 |
slate |
boolean 可选布尔值,表示当前条目是可选广告。 |
icons |
[object(Icon)] 图标列表,如果为空则省略。 |
wrappers |
[object(Wrapper)] 封装容器列表,如果为空,则省略。 |
universal_ad_id |
object(UniversalAdID) 可选的通用广告 ID。 |
extensions |
string VAST 中所有 <Extension> 节点的可选列表。 |
companions |
[object(Companion)] 可选随播广告,可与此广告一起展示。 |
interactive_file |
object(InteractiveFile) 应在广告播放期间展示的可选互动广告素材 (SIMID)。 |
PodTemplateResponse
PodTemplateResponse 表示返回给 VTP 以进行 pod 拼接的 JSON 载荷。JSON 表示法 |
---|
{ "dash_period_template": string, "segment_duration_ms": int64, } |
字段 | |
---|---|
dash_period_template |
string DashPeriodTemplate 是该时间段的 XML 模板,该模板在拼接前填充了适当的数据。 |
segment_duration_ms |
int64 SegmentDurationMS 是时段细分的时长(以毫秒为单位)。 |
图标
Icon 包含有关 VAST 图标的信息。JSON 表示法 |
---|
{ "click_data": object(ClickData), "creative_type": string, "click_fallback_images": [object(FallbackImage)], "height": int32, "width": int32, "resource": string, "type": string, "x_position": string, "y_position": string, "program": string, "alt_text": string, } |
字段 | |
---|---|
click_data |
object(ClickData) |
creative_type |
string |
click_fallback_images |
[object(FallbackImage)] |
height |
int32 |
width |
int32 |
resource |
string |
type |
string |
x_position |
string |
y_position |
string |
program |
string |
alt_text |
string |
ClickData
ClickData 包含有关图标点击的信息。JSON 表示法 |
---|
{ "url": string, } |
字段 | |
---|---|
url |
string |
FallbackImage
FallbackImage 包含 VAST 后备图片的相关信息。JSON 表示法 |
---|
{ "creative_type": string, "height": int32, "width": int32, "resource": string, "alt_text": string, } |
字段 | |
---|---|
creative_type |
string |
height |
int32 |
width |
int32 |
resource |
string |
alt_text |
string |
Wrapper
Wrapper 包含封装容器广告的相关信息。如果不存在交易 ID,则不包含交易 ID。JSON 表示法 |
---|
{ "system": string, "ad_id": string, "creative_id": string, "creative_ad_id": string, "deal_id": string, } |
字段 | |
---|---|
system |
string 广告系统标识符。 |
ad_id |
string 用于封装容器广告的广告 ID。 |
creative_id |
string 用于封装容器广告的广告素材 ID。 |
creative_ad_id |
string 用于封装容器广告的广告素材 ID。 |
deal_id |
string 可选的封装容器广告交易 ID。 |
验证
“验证”部分包含 Open Measurement 的信息,有助于第三方可见度和验证衡量。目前仅支持 JavaScript 资源。请参阅 https://iabtechlab.com/standards/open-measurement-sdk/JSON 表示法 |
---|
{ "vendor": string, "java_script_resources": [object(JavaScriptResource)], "tracking_events": [object(TrackingEvent)], "parameters": string, } |
字段 | |
---|---|
vendor |
string 验证供应商。 |
java_script_resources |
[object(JavaScriptResource)] 用于验证的 JavaScript 资源列表。 |
tracking_events |
[object(TrackingEvent)] 用于验证的跟踪事件列表。 |
parameters |
string 传递给引导程序验证代码的不透明字符串。 |
JavaScriptResource
JavaScriptResource 包含用于通过 JavaScript 进行验证的信息。JSON 表示法 |
---|
{ "script_url": string, "api_framework": string, "browser_optional": boolean, } |
字段 | |
---|---|
script_url |
string JavaScript 载荷的 URI。 |
api_framework |
string APIFramework 是执行验证码的视频框架的名称。 |
browser_optional |
boolean 此脚本是否可以在浏览器之外运行。 |
TrackingEvent
TrackingEvent 包含客户端在特定情况下应对其执行 ping 操作的网址。JSON 表示法 |
---|
{ "event": string, "uri": string, } |
字段 | |
---|---|
event |
string 跟踪事件的类型。 |
uri |
string 要进行 ping 的跟踪事件。 |
UniversalAdID
UniversalAdID 用于提供在各个广告系统中维护的唯一广告素材标识符。JSON 表示法 |
---|
{ "id_value": string, "id_registry": string, } |
字段 | |
---|---|
id_value |
string 广告所选广告素材的通用广告 ID。 |
id_registry |
string 一个字符串,用于标识注册库网站的网址,其中包含所选广告素材的通用广告 ID 目录。 |
随播广告
随播广告包含可与广告一起展示的随播广告的相关信息。JSON 表示法 |
---|
{ "click_data": object(ClickData), "creative_type": string, "height": int32, "width": int32, "resource": string, "type": string, "ad_slot_id": string, "api_framework": string, "tracking_events": [object(TrackingEvent)], } |
字段 | |
---|---|
click_data |
object(ClickData) 此随播广告的点击数据。 |
creative_type |
string VAST 中 <StaticResource> 节点上的 CreativeType 属性(如果它是静态类型的随播广告素材)。 |
height |
int32 此配套项的高度(以像素为单位)。 |
width |
int32 此随播广告的宽度(以像素为单位)。 |
resource |
string 对于静态和 iframe 随播广告,这将成为要加载和显示的网址。对于 HTML 随播广告,这应是应作为随播广告显示的 HTML 代码段。 |
type |
string 此随播广告素材的类型。它可以是静态、iframe 或 HTML。 |
ad_slot_id |
string 此随播广告的广告位 ID。 |
api_framework |
string 此配套应用的 API 框架。 |
tracking_events |
[object(TrackingEvent)] 此配套应用的跟踪事件列表。 |
InteractiveFile
InteractiveFile 包含应在广告播放期间显示的互动式广告素材(即 SIMID)的信息。JSON 表示法 |
---|
{ "resource": string, "type": string, "variable_duration": boolean, "ad_parameters": string, } |
字段 | |
---|---|
resource |
string 指向互动广告素材的网址。 |
type |
string 作为资源提供的文件的 MIME 类型。 |
variable_duration |
boolean 此广告素材是否会请求延长时长。 |
ad_parameters |
string VAST 中的 <AdParameters> 节点的值。 |