为 CAF DAI SDK 编写发送方应用

与之前 Chromecast 和 DAI 之间的集成不同,CAF DAI SDK 非常注重维护 Cast 应用框架设定的标准和预期。因此,您无需对发送方应用进行大量自定义,即可管理 IMA 与发送方应用之间的双向通信。这些通信现在通过集成的 CAF 广告插播功能进行管理,而无需自定义消息系统在发送方应用和接收方之间进行通信。

根据发送方的不同,您可能仍需向发送方添加一些有限的代码,才能完全启用 CAF 广告插播支持,例如向 Web 发送方添加对可跳过广告的支持

现在,除了支持 CAF 广告插播之外,还需要在从发送方发送到接收方的 CAF MediaInfo 对象中包含 DAI 流数据。您可以通过多种不同的方式选择发送此数据,例如,您可以对接收器上的 contentSourceID 进行硬编码,并仅通过 MediaInfo 对象发送 videoID;也可以向接收器发送任意标识符,然后从接收器查询在线数据库以获取实际的 DAI 参数。

不过,为简单起见,所有示例都将假定您为 MediaInfo 对象遵循以下简单结构和命名惯例:

contentId 相应媒体内容的唯一标识符
contentUrl 如果 DAI StreamRequest 因任何原因失败,则加载的后备直播网址
streamType 对于直播,此值应设置为“LIVE”。对于 VOD 流,此值应设置为“BUFFERED”
customData assetKey 仅限直播。标识要加载的直播
contentSourceId 仅限 VOD 视频流。标识包含所请求的媒体流的媒体 Feed。
videoId 仅限 VOD 视频流。用于标识指定媒体 Feed 中的所请求的视频流。
ApiKey 一个可选的 API 密钥,可能需要该密钥才能从 IMA DAI SDK 中检索视频流网址。
senderCanSkip 一个布尔值,用于让接收方知道发送设备是否能够显示“跳过”按钮,从而支持可跳过式广告

直播示例

{
  "media": {
    "contentId": "bbb",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
    "streamType": "LIVE",
    "customData": {
      "assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

VOD 视频流示例

{
  "media": {
    "contentId": "tos",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
    "streamType": "BUFFERED",
    "customData": {
      "contentSourceId": "2548831",
      "videoId": "tears-of-steel",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}