在 Android 上使用 IMA DAI SDK

播放使用 Google Cloud Video Stitcher API 注册的直播

本指南演示了如何使用适用于 Android 的 IMA DAI SDK 为使用 Google Cloud Video Stitcher API 注册的事件请求和播放直播,以及如何在播放期间插入广告插播时间点。

本指南对 IMA DAI 入门指南中的基本示例进行了扩展。

如需了解如何与其他平台集成或如何使用 IMA 客户端 SDK,请参阅互动式媒体广告 SDK

如果您想查看或跟随已完成的示例集成,请下载 Cloud 视频拼接器示例

设置 Google Cloud 项目

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

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

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

OAUTH_TOKEN

详细了解如何为服务账号创建短期有效的凭据。 只要 OAuth 令牌未过期,就可以在多个请求中重复使用。

广告资源网代码

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

直播配置 ID
您在创建直播活动时指定的实时配置 ID: LIVE_CONFIG_ID
自定义素材资源键
使用 Video Stitcher API 为直播活动创建配置过程中生成的 Ad Manager 自定义素材资源键:CUSTOM_ASSET_KEY

下载基本示例

下载并运行 IMA Android DAI 基本示例。点击视频播放器上的播放按钮,即可开始播放短片“钢铁之泪”,该短片每 30 秒就会插播一次广告。

申请直播

如需将选段直播替换为您的直播,您需要使用 ImaSdkFactory.createVideoStitcherLiveStreamRequest() 通过 Google Ad Manager 创建广告会话。您可以使用 Google Ads 经理界面查找生成的 DAI 会话,以进行监控和调试。

在现有示例中,有用于请求 VOD 流式传输或直播的条件语句。为了使其与 Google Cloud Video Stitcher API 配合使用,您需要添加一个新路径,以返回使用 ImaSdkFactory.createVideoStitcherLiveStreamRequest() 创建的 StreamRequest

示例如下:

videoplayerapp/SampleAdsWrapper.java

private sdkFactory ImaSdkFactory;
...
private enum ContentType {
  LIVE_HLS,
  LIVE_DASH,
// Add a Live HLS Google Cloud type.
  LIVE_HLS_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.LIVE_HLS_GOOGLE_CLOUD;
...

@Nullable
  private StreamRequest buildStreamRequest() {
    StreamRequest request;
    switch (CONTENT_TYPE) {
      ...
      case LIVE_HLS_GOOGLE_CLOUD:
        // Live HLS stream generated by the Google Cloud Video Stitcher API.
        request = sdkFactory.createVideoStitcherLiveStreamRequest(
          "NETWORK_CODE",
          "CUSTOM_ASSET_KEY",
          "LIVE_CONFIG_ID",
          "LOCATION",
          "PROJECT_NUMBER",
          "OAUTH_TOKEN"
        );
        request.setFormat(StreamFormat.HLS);
        return request;
    }
    // Content type not selected.
    return null;
  }
...

重新加载应用以请求和播放自定义直播。

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

使用 StreamRequest.setVideoStitcherSessionOptions() 添加会话选项以替换默认的 Cloud Video Stitcher API 配置,从而自定义串流请求。如果您提供的选项无法识别,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(
      "bitrateOrder", "ascending"
    )
  );

  /* sessionOptions JSON structure.
   * {
   *  "manifestOptions": {
   *    "bitrateOrder": "ascending"
   *  }
   * };
   */

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

插入广告插播时间点

Google Cloud Video Stitcher API 会为每个广告插播时间点插入从广告代码检索到的广告。清单中使用广告标记表示广告插播时间点。广告标记由直播编码器插入。

  • 如果您使用的是自己的直播,则需要插入广告标记。如需详细了解支持的 HLS 和 DASH 广告标记,请参阅广告标记文档

  • 如果您使用 Google Cloud Livestream API 创建了直播,请插入广告插播频道事件

广告会在插入广告插播时间点后立即播放。

清理

现在,您已成功使用 Google Cloud Video Stitcher API 托管了直播,并使用 Android 版 IMA DAI SDK 请求了该直播,请务必清理所有广告投放资源。

请按照直播清理指南移除所有不需要的资源和素材资源。