借助 Google DAI API,您可以在环境中实现已启用 Google DAI 的视频流 不支持实施 IMA SDK 的国家/地区。因此,我们建议您 在支持 IMA SDK 的平台上使用 IMA。
我们建议在以下平台上使用 DAI API:
- 三星智能电视 (Tizen)
- LG 电视
- HbbTV
- Xbox(JavaScript 应用)
- KaiOS
该 API 支持 IMA DAI SDK 提供的基本功能。对于 有关兼容性或受支持功能的具体问题,请联系 您的 Google 客户经理
为直播实现 DAI API
DAI API 支持使用 HLS 和 DASH 协议的线性(直播)视频流。 本指南中介绍的步骤适用于这两种协议。
如需将该 API 集成到您的应用以进行直播,请完成以下操作 步骤:
1. 请求数据流
如需通过 DAI API 请求直播,请对该直播进行 POST 调用 端点。JSON 响应包含数据流清单以及 DAI API 端点和值。
请求正文示例
https://dai.google.com/linear/v1/dash/event/0ndl1dJcRmKDUPxTRjvdog/stream
{
key1 : "value1",
stream_parameter1 : "value2"
}
响应正文示例
{
"stream_id":"c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL",
"stream_manifest":"https://dai.google.com/linear/dash/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/manifest.mpd",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/",
"metadata_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session",
"polling_frequency":10
}
错误响应
如果发生错误,系统将返回标准 HTTP 错误代码,而不提供 JSON 响应 正文。
解析 JSON 响应并存储以下值:
- stream_id
- 此值可用于识别返回的数据流。
- stream_manifest
- 系统会将此网址传递到您的媒体播放器,以便播放视频流。
- media_verification_url
- 此网址是用于跟踪播放事件的基础端点。
- metadata_url
- 此网址用于轮询与即将进行的直播有关的定期信息 事件。
- session_update_url
- 此网址用于更新在初始设置期间发送的视频流请求参数 视频流请求请注意,此请求的参数会替换 。
- polling_frequency
- 从 DAI API。
2. 关于新增 AdBreak 元数据的投票
设置一个计时器,使用 元数据网址。如果在视频流响应中未指定,则使用默认建议值 间隔设置为 10 秒。
请求正文示例
https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata
响应正文示例
{
"tags":{
"google_0492266569":{
"ad":"0000229836_ad1",
"ad_break_id":"0000229836",
"type":"firstquartile"
},
"google_1560331148":{
"ad":"0000229836_ad1",
"ad_break_id":"0000229836",
"type":"thirdquartile"
},
"google_1877686714378797835":{
"ad":"0000229836_slate",
"ad_break_id":"0000229836",
"type":"progress"
},
"google_1vRyQBYPw_7Gg3MrZ6S5EjmV9aLje-YpW8QHed1DSlU":{
"ad":"0000229835_ad1",
"ad_break_id":"0000229835",
"type":"progress"
},
"google_2032765498":{
"ad":"0000229835_ad1",
"ad_break_id":"0000229835",
"type":"midpoint"
},......
"google_5646900623":{
"ad":"0000229837_ad1",
"ad_break_id":"0000229837",
"type":"complete"
}
},
"ads":{
"0000229834_ad1":{
"ad_break_id":"0000229834",
"position":1,
"duration":15.01,
"title":"truman-e2e-creativeset4",
"description":"truman-e2e-creativeset4 ad",
"ad_system":"GDFP",
"ad_id":"39066884",
"creative_id":"58092079124",
"clickthrough_url":"https://pubads.g.doubleclick.net/pcs/click?xai=AKAO...\u0026adurl=http://google.com",
"universal_ad_id":{
"id_value":"58092079124",
"id_registry":"GDFP"
}
},
"0000229834_slate":{
"ad_break_id":"0000229834",
"position":-1,
"duration":14.974977777,
"slate":true
},...
},
"ad_breaks":{
"0000229834":{
"type":"mid",
"duration":15.01,
"expected_duration":29.984977776999997,
"ads":1
},....
}
}
3. 监听 ID3 事件并跟踪播放事件
要验证视频流中是否发生了特定事件,请按以下说明操作 处理 ID3 事件的步骤:
- 将媒体事件存储在队列中,同时保存每个媒体 ID 及其 时间戳(如果播放器显示)。
- 每次从播放器进行更新时,或以固定频率更新时(推荐 500 毫秒),检查媒体事件队列中最近播放的事件,方法是 将事件时间戳与进度条指针进行比较。
- 对于您确认已播放的媒体事件,请在列表中查找 存储的广告插播时间点代码中的媒体 ID。请注意,存储的代码 仅包含媒体 ID 前缀,因此无法进行完全匹配。
- 使用“progress”事件来跟踪用户是否在广告插播时间点内。 请勿将这些事件发送到媒体验证端点。其他活动 请将媒体 ID 附加到媒体验证端点,并执行 GET 请求跟踪播放。
- 从队列中移除媒体事件。
请求正文示例
https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/
示例回复
Accepted for asynchronous verification - HTTP/1.1 202 Accepted
Successful empty response - HTTP/1.1 204 No Content
Media verification not found - HTTP/1.1 404 Not Found
Media verification sent by someone else - HTTP/1.1 409 Conflict
您可以在信息流活动中验证跟踪事件 监控。
4. 更新直播会话参数
你可能需要在直播结束后调整会话参数 创建。为此,请向会话更新网址发出请求。
请求正文示例
https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session
{
key1 : "value1",
stream_parameter1 : "value2"
}
响应正文示例
Successful response would be to look for - HTTP/1.1 200
限制
如果在 WebView 中使用该 API,在 改为:
最佳做法
请注意,直播索引的元数据端点基于 对应的 ID3 代码的前缀。这是特意设计的,旨在防止使用 元数据端点,用于立即对所有验证节点执行 ping 操作。