为 CAF DAI SDK 编写发送者应用

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

您可能仍需要向发送方添加一些有限的代码,以便完全启用 CAF 广告插播时间点支持,例如为网络发送方添加对可跳过式广告的支持,具体取决于您的发件人。

除了支持 CAF 广告插播时间点之外,现在只需将 DAI 流数据添加到从发送方发送到接收方的 CAF MediaInfo 对象中。您可以选择以多种不同的方式发送此数据,例如,您可以对接收器上的 contentSourceID 进行硬编码,并且仅发送 videoID 与 MediaInfo 对象;或者,您可以向接收器发送任意标识符,并从该处查询在线数据库以获取实际的 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"
}