使用 Google DAI 平台时,您可能想要为 直播中下一个即将开始的直播/线性广告插播时间点。广告插播提前 借助 Notification (EABN) API,您可以使用 键值对,可提供可扩展性,以便在大批量发生时进行广告决策 。
对 EABN API 进行的调用必须包含目标资产键和预期 时长时长必须与实际广告的时长一致 。如果发送的预期时长短于 提供的广告插播时间点, 广告填充不足时的广告插播时间点填充类型 (默认为空白可选广告)。如果 发送的时长预计超过提供的广告插播时间点,您的广告插播时间点可能会 结束。
除了这些必填字段之外,您还可以 参数,要应用的广告连播模板的名称,或 SCTE35 Cue Out 数据(如果 可用。
前提条件
创建服务账号
如需访问 EABN API,您需要拥有 Google 服务账号。
- 如果您有 Google Cloud 账号,则可以使用 IAM 模块来创建 服务账号。如需了解详情,请参阅创建和管理服务账号。
- 如果您没有 Google Cloud 账号,可以创建一个服务账号
进入 Google API 控制台,
按照以下步骤操作:
<ph type="x-smartling-placeholder">
- </ph>
- 创建新项目或选择现有项目。
- 在凭据页面中,点击管理服务账号。
- 在服务账号页面中,点击创建服务账号。
- 在创建服务账号页面中,输入账号详细信息。然后 点击创建。
成功创建服务账号后,复制账号的 JSON 密钥,该密钥将用于身份验证。
启用 EABN API
创建服务账号后,请让您的客户经理启用 该账号的 EABN API。
启用 DAI API
为您的服务账号启用 EABN API 后,再启用 DAI API 针对该账号:
在 Google API 库中, 搜索“DAI API”
选择并启用 DAI API。
使用 EABN API
您可以使用 JSON/REST 请求调用 EABN API。
身份验证
要对 EABN API 进行经过身份验证的调用,您需要生成 OAuth2 服务
使用服务账号中的 JSON 密钥和范围的 JSON 密钥提供账号凭据
https://www.googleapis.com/auth/video-ads
。如需了解详情,请参阅
针对“服务器到服务器”应用使用 OAuth 2.0。
必须将生成的身份验证令牌作为每个 的 Auth 标头 对 EABN API 的调用。
发送广告插播提前通知
要发送广告插播提前通知,请使用以下命令发送 POST 请求 网址和请求正文:
POST dai.googleapis.com/v1/adBreaks
请求正文
对象 | ||
---|---|---|
adBreak |
必填 | adBreak 属性的封装容器对象 |
assetKey |
必填 | LiveStreamEvent 的唯一标识符,
已创建广告插播时间点 |
expectedDuration |
必填 | 此广告插播时间点的时长(使用 Google 的标准时长格式) (xx.xxxs,其中 xx.xxx 表示秒数) |
scte35CueOut |
可选 | scte35 cue out 中采用 Base-64 编码的数据。可包含
splice_insert() 或 time_signal() 命令。
示例: <ph type="x-smartling-placeholder">
|
custParams |
可选 | 自定义的这一插播时间点的广告请求中包含的键值对
AM360 中的条件定位,用 = 分隔,用
& 。示例: key=value&key2=value2,value3 有关定位的详情,请参阅 供应定位 参数。 |
ptpln |
可选 | 广告连播模板名称 |
响应标头
HTTP/1.1 200 OK
响应正文
响应正文包含 adBreak
对象中发送的所有参数,
还有一个额外的 daiBreakId
字段,其中包含内部 DAI
视频流中创建的广告插播时间点的标识符。
示例
请求
POST /v1/adBreaks HTTP/1.1
Content-Type: application/json
{
"adBreak": {
"assetKey": "asset1",
"expectedDuration": "30s",
"scte35CueOut": "/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==",
"custParams": "param1=value1¶m2=value2",
"ptpln": "podtemplate"
}
}
响应
HTTP/1.1 200 OK
{
"assetKey": "asset1",
"expectedDuration": "30s",
"custParams": "param1=value1¶m2=value2",
"scte35CueOut": "/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==",
"ptpln": "podtemplate",
"daiBreakId": 1
}
实现示例 (Python)
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from absl import app
from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account
SERVICE_ACCOUNT_KEY_FILE = "~/eabn_key.json"
ASSET_KEY = "asset1"
SCOPES = ['https://www.googleapis.com/auth/video-ads']
EABN_API_URL = 'https://dai.googleapis.com/v1/adBreaks'
def main():
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_KEY_FILE, scopes=SCOPES)
authed_session = AuthorizedSession(credentials)
data = {
'assetKey': ASSET_KEY,
'expectedDuration': '120s',
'custParams': 'param1=value1¶m2=value2',
'scte35CueOut': '/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==',
}
r = authed_session.post(EABN_API_URL, json={'adBreak': data})
print(r.status_code)
print(r.headers)
print(r.text)
if __name__ == '__main__':
app.run(main)