在 Android 上使用 IMA DAI SDK

播放使用 Google Cloud Video Stitcher API 注册的 VOD 串流

本指南演示了如何使用适用于 Android 的 IMA DAI SDK 请求和播放 Google Cloud VOD 流式传输会话

本指南是对使用入门 指南

有关与其他平台集成或使用 IMA 客户端 SDK,请参阅互动式媒体广告 SDK

设置 Google Cloud 项目

输入以下变量,以便在 IMA SDK 中使用:

位置
Google Cloud 区域 创建 VOD 配置的位置: LOCATION
项目编号
使用 Video Stitcher API 的 Google Cloud 项目编号: PROJECT_NUMBER
OAuth 令牌

具有视频拼接器用户的服务账号的短期有效 OAuth 令牌 角色:

OAUTH_TOKEN

详细了解 创建短期有效的 OAuth 令牌。 只要 OAuth 令牌未过期,就可以在多个请求中重复使用。

广告资源网代码

用于请求广告的 Ad Manager 广告资源网代码:NETWORK_CODE

VOD 配置 ID

VOD 视频流的 VOD 配置 ID: VOD_CONFIG_ID

如需详细了解如何创建 VOD 配置 ID,请参阅云拼接、创建 VOD 配置指南

设置基本示例

转到 IMA Android DAI GitHub 版本 页面并下载 基本示例此示例是一个 Android 应用,您可以在 Android Studio 中打开它以进行测试。

如需使用非 Cloud Video Stitcher VOD 串流进行测试,请将 SampleAdsWrapper.java 中的 CONTENT_TYPE 常量设置为 ContentType.VOD_HLSContentType.VOD_DASH,以加载相应串流的 CMS ID 和视频 ID。然后,在 SampleVideoPlayer.java 中,将 currentlyPlayingStreamType 设置为 CONTENT_TYPE_HLSCONTENT_TYPE_DASH,以正确处理所选直播类型的元数据。

如果一切正常,点击视频播放器上的“播放”按钮即可开始播放短片“钢铁之泪”,其中包含前贴片广告插播。

请求 VOD 视频流

如需将示例直播替换为您的广告拼接的 VOD 视频流,请使用 sdkFactory.createVideoStitcherVodStreamRequest() 创建与 Google Ad Manager 的广告会话您可以使用 Google Ads 经理界面查找生成的 DAI 会话,以进行监控和调试。

sdkFactory.createVideoStitcherVodStreamRequest() 适用于 IMA DAI SDK v3.30.0 或更高版本。

使用sdkFactory.createVideoStitcherVodStreamRequest()vodConfigId 参数搭配使用,需要使用 IMA DAI SDK 3.33.0 或更高版本。

现有示例中,有一些用于请求视频点播的条件语句 还是直播为了使其与 Google Cloud Video Stitcher API 搭配使用,您需要添加一个新路径,以返回使用 sdkFactory.createVideoStitcherVodStreamRequest() 创建的 StreamRequest

示例如下:

videoplayerapp/SampleAdsWrapper.java

...
private enum ContentType {
  LIVE_HLS,
  LIVE_DASH,
// Add a VOD HLS Google Cloud type. DASH streams are also supported.
  VOD_HLS_GOOGLE_CLOUD,
  VOD_DASH_GOOGLE_CLOUD,
  VOD_HLS,
  VOD_DASH,
}

// Set CONTENT_TYPE to the associated enum for the
// stream type you would like to test.
private static final ContentType CONTENT_TYPE =
    ContentType.VOD_HLS_GOOGLE_CLOUD;
...

@Nullable
  private StreamRequest buildStreamRequest() {
    StreamRequest request;
    switch (CONTENT_TYPE) {
      ...
      case VOD_HLS_GOOGLE_CLOUD:
      case VOD_DASH_GOOGLE_CLOUD:
        // VOD HLS or DASH stream generated by the
        // Google Cloud Video Stitcher API.
        request = sdkFactory.createVideoStitcherVodStreamRequest(
          "NETWORK_CODE",
          "LOCATION",
          "PROJECT_NUMBER",
          "OAUTH_TOKEN",
          "VOD_CONFIG_ID"
        );
        if (CONTENT_TYPE == ContentType.VOD_HLS_GOOGLE_CLOUD) {
          request.setFormat(StreamFormat.HLS);
        } else {
          request.setFormat(StreamFormat.DASH);
        }
        return request;
    }
    // Content type not selected.
    return null;
  }
  ...

请重新加载应用,以便请求并播放您的自定义 VOD 视频流。

(可选)添加在线播放会话选项

通过添加会话选项来覆盖默认设置,自定义你的直播请求 使用 Cloud Video Stitcher API 配置 StreamRequest.setVideoStitcherSessionOptions()。 如果您提供的选项无法识别,Cloud Video Stitcher API 将返回 HTTP 400 错误。请查阅 问题排查指南 以获取帮助。

例如,您可以使用以下代码段替换清单选项,该代码段会请求两个串流清单,其中呈现方式的排序方式为从最低比特率到最高比特率。

public void requestAndPlayAds() {
  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  StreamRequest streamRequest = buildStreamRequest();

  // The following session options are examples. Use session options
  // that are compatible with your video stream.
  Map<String, Object> sessionOptions = Map.of(
    "manifestOptions", Map.of(
      "includeRenditions", List.of(
        Map.of(
          "bitrateBps", 3000, "codecs",
          "hvc1.1.4.L126.B0, mp4a.40.2"),
        Map.of(
          "bitrateBps", 2000,
          "codecs", "avc1.64001f, mp4a.40.2")
      ),
      "bitrateOrder", "ascending"
    )
  );

  /* sessionOptions JSON structure.
   * {
   *  "manifestOptions": {
   *    "includeRenditions": [
   *      {"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
   *      {"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
   *    ],
   *    "bitrateOrder": "ascending"
   *  }
   * };
   */

  streamRequest.setVideoStitcherSessionOptions(sessionOptions);
  adsLoader.requestStream(streamRequest);
}

清理

现在您已成功托管了 VOD 视频流 以及使用 IMA DAI SDK 进行请求 因此请务必清理 资源。

按照 VOD 清理 移除任何不需要的资源和资产的指南。