本指南介绍了如何配置清单操纵器,以使用广告连播细分方法请求广告或平板电视细分。
选择一种流式传输协议:
前提条件
在继续操作之前,您必须为插播广告组的重定向设置直播活动,并设置动态广告插播 (DAI) 类型和编码配置文件。如需设置直播活动,请选择以下方法之一:
- Ad Manager 界面: 为 DAI 设置直播。
- Ad Manager API:使用客户端库调用
LiveStreamEventService.createLiveStreamEvents
方法。将LiveStreamEvent.dynamicAdInsertionType
参数设置为POD_SERVING_REDIRECT
。
设置直播活动后,通过调用 DaiEncodingProfileService.getDaiEncodingProfilesByStatement
方法,从 Ad Manager 界面或 API 中检索活动的编码配置文件。
检索内容流
当用户选择直播活动时,客户端应用会向 Google Ad Manager 发出直播请求。在流式响应中,应用会提取 Google DAI 会话 ID 和元数据,以包含在流清单请求中。
以下示例将 Google DAI 会话 ID 传递给清单操纵器:
https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY
在处理视频内容播放请求时,存储请求中的 Google DAI 会话 ID 和 CUSTOM_ASSET_KEY,以便为广告拼接做好准备。
识别广告插播时间点片段并插入不连续性
在处理每个变体清单时,请在您的信息流中识别 EXT-X-CUE-IN
和 EXT-X-CUE-OUT
标记,它们分别表示广告插播的开始和结束。
将 EXT-X-CUE-IN
和 EXT-X-CUE-OUT
标记替换为 EXT-X-DISCONTINUITY
元素,以便客户端视频播放器在内容和广告之间切换。
以下示例清单替换了 EXT-X-CUE-IN
和 EXT-X-CUE-OUT
标记:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
以下示例展示了一个替换清单:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
Google DAI 广告片段未加密。如果您的内容已加密,请在每个广告插播时段的第一个广告片段之前插入 EXT-X-KEY:METHOD=NONE
元素,以移除加密。在广告插播时间点结束时,通过插入适当的 EXT-X-KEY
重新添加加密。
跟踪即将到来的广告插播时段的开始时间、时长和索引。
生成基于哈希的消息认证码 (HMAC) 令牌
使用分段重定向 Pod 服务发出的每个分段请求都必须包含用于身份验证的 HMAC 签名令牌。
每个广告插播时段计算一次此令牌,并在所有视频流会话中共享该令牌。
收集令牌参数
如需填充令牌正文,请从当前广告插播时间点收集以下信息:
令牌参数 | ||
---|---|---|
custom_asset_key
|
必需 | Google Ad Manager 中的自定义直播素材资源键。 |
cust_params
|
可选 | 自定义定位参数。请参阅 cust_params 。
|
exp
|
必需 | 当前令牌的到期时间戳(以秒为单位)。 |
network_code
|
必需 | Ad Manager 360 广告资源网代码。 |
pod_id
|
必需 | 广告插播的标识符。一个从 1 开始的整数。对于每个广告插播时间点,此标识符都会递增 1。
此值对于当前活动中观看同一广告插播的所有用户必须相同。 |
pd
|
必需,但启用了无时长广告插播的活动除外。 | 广告插播时段的时长(以毫秒为单位)。称为 ad_pod_duration 。
|
scte35
|
可选 | 采用 Base64 编码的 SCTE-35 信号。Google DAI 始终会将信号复制到创建的广告插播时间,即使信号不正确也是如此。
如果时间戳不正确,您会在响应的 X-Ad-Manager-Dai-Warning HTTP 标头中收到一条消息,但信号仍会继续创建广告插播时间。如需详细了解 DAI 如何使用 SCTE-35 信号,请参阅支持的广告标记。
|
创建令牌字符串
如需创建令牌字符串,请按字母顺序列出每个参数,格式为 NAME=VALUE
,并使用 ~
波浪号分隔每个名称-值对。
对于未使用的可选参数,请使用空字符串作为值,或完全移除该参数。
以下示例展示了如何设置令牌字符串的格式:
custom_asset_key=CUSTOM_ASSET_STRING~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=AD_POD_INDEX~scte35=SCTE35_MESSAGE
生成 HMAC 签名
HMAC 签名是令牌字符串的 SHA-256 哈希(采用十六进制格式)。密钥是与 Google Ad Manager 中的直播活动相关联的 HMAC 身份验证密钥。
签名令牌字符串
生成 HMAC 签名后,请以以下格式将签名附加到令牌字符串:
~hmac=HMAC_SIGNATURE
对令牌字符串进行编码
如需将令牌作为网址参数传递,请对网址进行编码以确保安全。
以下示例会生成一个已签名且已编码的 HMAC 令牌,其中未使用的可选参数为空字符串:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=
Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F
HMAC signature:
86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88
Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=~hmac=86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88
URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~cust_params%3D~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~scte35%3D~hmac%3D86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88
以下示例会生成一个已签名且已编码的 HMAC 令牌,其中不包含未使用的可选参数:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g3~exp=1489680000~network_code=6062~pd=180000~pod_id=5
Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F
HMAC signature:
6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9
Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~hmac=6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9
URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~hmac%3D6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9
构建广告细分网址
将 EXT-X-DISCONTINUITY
标记之间的每个内容段替换为指向广告插播时段段方法的一个网址。
以下示例组装了一个广告插播时段片段。请注意,广告片段使用从零开始的索引:
https://dai.google.com/linear/pods/v1/seg/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=AD_SEGMENT_DURATION&pd=AD_BREAK_DURATION&stream_id=SESSION_ID&auth-token=HMAC
以下示例将广告插播时段片段插入到清单中:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=5000&so=0&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/1.ts?sd=5000&so=5000&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/2.ts?sd=5000&so=10000&pd=15000&stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4
可选:安排广告插播时间
为了提高填充率,请发送广告插播提前通知 (EABN),其中包含广告连播时长、自定义定位参数和 SCTE-35 信号数据。如需了解详情,请参阅发送提前插播广告通知。