Early ad break notification v1

使用 Early Ad Break Notification API

  • 要为其创建广告插播时间点的相应直播的标识符。此标识符可以是以下各项之一:
  • 直播的“素材资源键”。
  • 直播的“自定义素材资源键”,可让您通过指定自己的标识符字符串来管理自己的键空间。
  • 直播的“内容来源 ID”和“内容 ID”。

注意:您必须已获授权才能使用此标识符类型。如需了解详情,请与您的客户经理联系。

  • 下一个广告插播时段的预计时长。时长需要尽可能接近实际广告插播时长。

除了这些必需字段之外,您还可以发送自定义定位参数、要应用的广告连播模板的名称,或 SCTE35 Cue Out 数据(如果有)。

前提条件

如需使用 EABN API,您必须创建一个服务账号,并将该账号添加到您的 Google Ad Manager 广告联盟。

创建服务账号

如需创建用于调用 EABN API 的服务账号,请完成以下步骤:- 如果您有 Google Cloud 账号,请使用 IAM 模块创建服务账号。如需了解详情,请参阅创建和管理服务账号。- 如果您没有 Google Cloud 账号,请完成以下步骤,在 Google API 控制台中创建一个:

  1. 创建新项目或选择现有项目。
  2. 凭据页面中,点击管理服务账号
  3. 服务账号页面上,点击创建服务账号
  4. 创建服务账号页面中,输入账号详细信息。然后,点击创建

创建服务账号后,复制该账号的 JSON 密钥,该密钥用于身份验证。

将服务账号添加到 Google Ad Manager 广告资源网

如需将服务账号添加到您的广告联盟,请完成添加服务账号用户以启用 API 访问权限中的步骤。

启用 API

创建服务账号后,请向您的客户经理提供以下信息,以便为您的账号启用该 API:

  • 您的 Google Cloud 账号电子邮件地址
  • 您的服务账号
  • 您的 Google Ad Manager 广告资源网的广告资源网代码。

在您的客户经理启用该 API 后,请完成以下步骤以启用该 API:

  1. Google API 库中,搜索“Google Ad Manager Video API”。
  2. 点击启用

注意:如果搜索结果中未显示该 API,请与您的客户经理联系,确认您的账号是否已启用 DAI API。

使用此 API

您可以使用 JSON/REST 请求调用 EABN API。

授权

如需对 EABN API 进行授权调用,您需要使用服务账号的 JSON 密钥和范围 https://www.googleapis.com/auth/video-ads 生成 OAuth2 服务账号凭据。如需了解详情,请参阅将 OAuth 2.0 用于服务器到服务器应用

您必须在每次调用 EABN API 时将生成的授权令牌作为 Auth 标头添加到请求中。

发送广告插播提前通知

如需发送广告插播提前通知,请向以下三个有效的 EABN 网址之一发送 POST 请求,具体取决于您希望如何指定直播。以下部分介绍了这些网址之间的区别,并提供了请求和响应示例。

网址

广告插播提前通知有三个有效网址。您可以使用这三种类型来创建广告插播时间点 (POST) 或获取分配的广告插播时间点列表 (GET)。

如需使用直播的素材资源键,请使用以下命令:

POST admanagervideo.googleapis.com/v1/networks/{network_code}/assets/{asset_key}/adBreaks
GET admanagervideo.googleapis.com/v1/networks/{network_code}/assets/{asset_key}/adBreaks

如需使用直播的自定义素材资源键,请使用以下命令:

POST admanagervideo.googleapis.com/v1/networks/{network_code}/customAssets/{custom_asset_key}/adBreaks
GET admanagervideo.googleapis.com/v1/networks/{network_code}/customAssets/{custom_asset_key}/adBreaks

如需使用内容来源 ID 和 Content ID 方法,请使用:

POST admanagervideo.googleapis.com/v1/networks/{network_code}/sources/{content_source_id}/content/{content_id}/adBreaks
GET admanagervideo.googleapis.com/v1/networks/{network_code}/sources/{content_source_id}/content/{content_id}/adBreaks

对于所有参数:

  • network_code 代表您的 Google Ad Manager 广告资源网的广告资源网代码。
  • asset_key 表示直播详情页面中显示的资产键。
  • custom_asset_key 代表直播的自定义素材资源键。
  • content_source_id 表示 Google Ad Manager 中内容来源的 ID。
  • content_id 表示 Google Ad Manager 中某项内容的 ID。

注意:指定的 content_source_id/content_id 对必须与 Google Ad Manager 中的直播相关联。

请求正文 - 仅用于创建广告插播时间点 (POST)

对象

expectedDuration

必填 此广告插播时段的时长,采用 Google 的标准时长格式(xx.xxxs,其中 xx.xxx 表示秒数)

customParams

可选 这些键值对会加入到此广告插播时间点的广告请求中,以便在 AM360 中执行自定义条件定位,以

=

并通过

&

.
示例:

key=value&key2=value2,value3


如需详细了解定位,请参阅为视频流提供定位参数

podTemplateName

可选 广告连播模板名称

scte35CueOut

可选 scte35 cue out 中采用 Base-64 编码的数据。可以包含

splice_insert()

time_signal()

命令。
示例:

  • time_signal():

    /DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==

  • splice_insert():

    /DAvAAAAAAAA///wFAVIAACPf+/+c2nALv4AUsz1AAAAAAAKAAhDVUVJAAABNWLbowo=

示例请求

创建广告插播时间点
POST admanagervideo.googleapis.com/v1/networks/.../sources/.../content/.../adBreaks
Content-Type: application/json
Authorization: Bearer …
{
    "expectedDuration": "30s",
    "scte35CueOut": "/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==",
    "customParams": "param1=value1&param2=value2",
    "podTemplateName": "podtemplate"
}
响应正文

响应正文包含在 adBreak 对象中发送的所有参数,以及一个额外的 name 字段,其中包含所创建广告插播的 Google 通用标准 ID。系统会以以下格式返回此字段:

networks/{network_code}/assets/{asset_key}/adBreaks/{ad_break_id}
示例响应
HTTP/1.1 200 OK
{
  "name": "networks/.../assets/.../adBreaks/1",
  "expectedDuration": "30s",
  "scte35CueOut": "/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==",
  "customParams": "param1=value1&param2=value2",
  "podTemplateName": "podtemplate"
}
列出分配的广告插播时间点
GET admanagervideo.googleapis.com/v1/networks/.../sources/.../content/.../adBreaks
Content-Type: application/json
Authorization: Bearer …
响应正文

响应正文包含广告插播时间点,其中为分配给串流的每个广告插播时间点添加了 breakState 字段。breakState 字段支持以下值:

 // Ad break decisioning has started.
BREAK_STATE_DECISIONED

// Break has started to be delivered to end users.
BREAK_STATE_COMPLETE
示例响应
HTTP/1.1 200 OK
{
  "name": "networks/.../assets/.../adBreaks/1",
  "expectedDuration": "30s",
  "breakState": "BREAK_STATE_COMPLETE"
}