在 Android 上使用 IMA DAI SDK

播放通过 Google Cloud Video Stitcher API 注册的直播

本指南将演示如何使用 IMA DAI SDK Android 可请求和播放 通过 Google Cloud 视频拼接器注册的事件的 API 以及如何 在播放过程中插入广告插播时间点。

本指南是对使用入门 指南

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

设置 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
自定义素材资源键
创建 直播活动配置 视频拼接器 API: CUSTOM_ASSET_KEY

下载基本示例

下载并运行 IMA Android DAI 基本示例。点击 视频播放器上的播放按钮来开始播放短片“ “钢”,包含每 30 秒的广告插播时间点。

申请直播

要将选段直播替换为您的直播,您需要使用 ImaSdkFactory.createVideoStitcherLiveStreamRequest() 创建与 Google Ad Manager 的广告会话您可以使用 Google Ads 用于找到生成的 DAI 的管理工具界面 会话进行监控和 调试目的。

现有示例中,有一些用于请求视频点播的条件语句 还是直播为了使其与 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;
  }
...

请重新加载应用,以便请求并播放你的自定义直播。

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

通过添加会话选项来覆盖默认设置,自定义你的直播请求 使用 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);
}

插入广告插播时间点

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

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

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

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

清理

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

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