借助 Google DAI API,您可以在环境中实现已启用 Google DAI 的视频流 不支持实施 IMA SDK 的国家/地区。因此,我们建议您 在支持 IMA SDK 的平台上使用 IMA。
我们建议在以下平台上使用 DAI API:
- 三星智能电视 (Tizen)
- LG 电视
- HbbTV
- Xbox(JavaScript 应用)
- KaiOS
该 API 支持 IMA DAI SDK 提供的基本功能。对于 有关兼容性或受支持功能的问题,请与您的 Google 联系 客户经理。
为 VOD 视频流实现 DAI API
DAI API 支持使用 HLS 和 DASH 协议的 VOD 视频流。具体步骤 同时适用于这两种协议。
要将该 API 集成到您的 VOD 视频流应用中,请完成 操作步骤:
对数据流端点进行 POST 调用来请求数据流:
请求正文示例:
https://dai.google.com/ondemand/v1/dash/content/2559737/vid/tos-dash/stream { key1 : "value1", stream_parameter1 : "value2" }
响应正文示例:
{ "stream_id":"d32f8920-612a-4d46-8bc7-d73fd6c17c85", "total_duration":636.458, "content_duration":596.458, "valid_for":"8h0m0s", "valid_until":"2020-06-04T20:39:41.274707306-07:00", "stream_manifest":"https://dai.google.com/ondemand/dash/content/2559737/vid/tos-dash/ATL/streams/d32f8920-612a-4d46-8bc7-d73fd6c17c85/manifest.mpd", "media_verification_url":"https://dai.google.com/view/p/service/vod/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/loc/ATL/network/124319096/content/2559737/vid/tos-dash/media/", "ad_breaks":[ { "type":"pre", "start":0, "duration":10, "ads":[ { "seq":1, "duration":10, "title":"External NCA1C1L1 Preroll", "description":"External NCA1C1L1 Preroll ad", "clickthrough_url":"https://dai.google.com/ondemand/v1/dash/content/2474148/vid/bbb-clear/location/ATL/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/videoclick/5489259204425938365", "events":[ { "time":0.1, "type":"start" }, { "time":2.5, "type":"firstquartile" }, { "time":4.75, "type":"midpoint" }, { "time":7.5, "type":"thirdquartile" }, { "time":9, "type":"complete" } ] } ] }, { "type":"mid", "start":45, "duration":10, "ads":[ {.... } ] } ] }, { "type":"post", "start":626.458, "duration":10, "ads":[...] } ] }
错误响应
如果发生错误,系统会返回标准 HTTP 错误代码,不含 JSON 响应正文。
解析 JSON 响应并存储以下值:
stream_id
stream_manifest
media_verification_url
ad_breaks
如需执行媒体验证,请监听 ID3 事件:
- 将媒体事件存储在队列中,同时保存每个媒体 ID 及其 时间戳(如果播放器显示)。
- 每次从播放器进行更新时,或以固定频率更新时(推荐 500 毫秒),检查媒体事件队列中最近播放的事件,方法是 将事件时间戳与进度条指针进行比较。
- 对于您确认已播放的媒体事件,按以下方式跟踪播放: 将媒体 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
您可以在信息流活动中验证跟踪事件 监控。
可选:使用数据流创建响应中的
ad_breaks
数据进行查看 并指明触发了哪类事件从队列中移除媒体事件。
限制
如果在 WebView 中使用该 API,在 改为:
最佳做法
在 VOD 中,将 ID3 标记映射到相应的事件类型是一项繁琐的工作。使用
在 JSON 中返回 ad_breaks
信息以直接查找事件,例如
会带来很多好处