在 Android 上使用 IMA DAI SDK

播放使用 Google Cloud Video Stitcher API 註冊的 VOD 串流

本指南將示範如何使用 Android 版 IMA DAI SDK 來要求及播放 Google Cloud VOD 串流工作階段

本指南將 IMA DAI 的入門指南中的基本範例做進一步說明。

如要瞭解如何整合其他平台,或使用 IMA 用戶端 SDK,請參閱「互動式媒體廣告 SDK」。

如要查看或瞭解完整的整合範例,請下載 Cloud 影片併接工具範例

設定 Google Cloud 專案

輸入下列變數,以便在 IMA SDK 中使用:

位置
建立 VOD 設定的 Google Cloud 區域LOCATION
專案編號
使用 Video Stitcher API 的 Google Cloud 專案編號: PROJECT_NUMBER
OAuth 權杖

服務帳戶的短期 OAuth 權杖,具有 Video Stitcher 使用者角色:

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,以便正確處理所選串流類型的中繼資料。

如果一切運作正常,點按影片播放器的播放按鈕即可開始播放短片「Tears of Steel」,並顯示前置廣告。

要求 VOD 串流

如要將樣本串流取代為拼接廣告的 VOD 串流,請使用 sdkFactory.createVideoStitcherVodStreamRequest() 透過 Google Ad Manager 建立廣告工作階段。您可以使用 Google Ad Manager UI 找出產生的動態廣告插播廣告工作階段,以便監控及偵錯。

sdkFactory.createVideoStitcherVodStreamRequest() 適用於 IMA DAI SDK 3.30.0 以上版本。

如要搭配 vodConfigId 參數使用 sdkFactory.createVideoStitcherVodStreamRequest(),您必須使用 IMA DAI SDK 3.33.0 以上版本。

在現有範例中,有用於要求 VOD 串流或直播的條件式陳述式。如要讓它與 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 串流。

(選用) 新增串流工作階段選項

使用 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 代管 VOD 串流,並使用 Android 版 IMA DAI SDK 進行要求,因此請務必清理所有放送資源。

請按照VOD 清理指南移除所有不必要的資源和素材資源。