为 CAF DAI SDK 编写发送者应用

与之前 Chromecast 和 DAI 之间的集成不同,CAF DAI SDK 主要侧重于维持投射应用框架设定的标准和预期。因此,不要求对发送者应用进行大量自定义管理 IMA 与发送者应用之间的双向通信。这些通信现在通过集成的 CAF 广告插播功能进行管理,而无需自定义消息系统在发送者应用和接收者之间进行通信。

根据您的发件人,您可能仍需向发件人添加一些有限的代码,以便完全启用 CAF 广告插播支持(例如为网站发件人添加对可跳过广告的支持)。

除了支持 CAF 广告插播外,您现在还需要将 DAI 视频流数据添加到从发送者发送到接收方的 CAF MediaInfo 对象中。您可以选择以多种不同的方式发送此数据,例如,您可以对接收者的 contentSourceID 进行硬编码,而仅使用 MediaInfo 对象发送 videoID,或者向接收者发送任意标识符,并从中查询在线数据库以获取实际的 DAI 参数。

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

contentId 此媒体项的唯一标识符
contentUrl 在 DAI StreamRequest 因任何原因而失败时要加载的后备视频流网址
streamType 对于直播,此值应设为“LIVE”。对于 VOD 视频流,此值应设为“BUFFERED”
customData assetKey 仅限直播。标识要加载的直播
contentSourceId 仅限 VOD 视频流。用于标识包含所请求数据流的媒体 Feed。
videoId 仅限 VOD 视频流。标识指定的媒体 Feed 中请求的视频流。
ApiKey 可选的 IMA 密钥,用于从 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": "2528370",
      "videoId": "tears-of-steel",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}