開始使用 IMA DAI SDK

使用 IMA SDK,您就能輕鬆地將多媒體廣告整合至網站和應用程式。IMA SDK 可以 向任何 符合 VAST 規定的廣告伺服器請求廣告,並管理應用程式中的廣告播放情形。透過 IMA DAI SDK,應用程式會針對 VOD 或直播內容,對廣告和內容影片發出串流請求。接著,SDK 會傳回合併的影片串流,這樣您無須管理應用程式內的廣告和內容影片切換作業。

選取感興趣的 DAI 解決方案

廣告連播放送 DAI

使用 IMA SDK,您就能輕鬆地將多媒體廣告整合至網站和應用程式。IMA SDK 可以 向任何 符合 VAST 規定的廣告伺服器請求廣告,並管理應用程式中的廣告播放情形。透過 IMA DAI SDK,應用程式會針對 VOD 或直播內容,對廣告和內容影片發出串流請求。接著,SDK 會傳回合併的影片串流,這樣您無須管理應用程式內的廣告和內容影片切換作業。

本指南說明如何播放 DAI 廣告連播放送串流,並說明如何使用 IMA Android DAI SDK 搭配簡單的影片播放器播放直播和 VOD 串流。如果您要查看或執行已完成的範例整合,請下載 pod 放送範例

IMA DAI 廣告連播放送總覽

  • StreamRequest:定義向 Google 廣告伺服器傳送串流要求的物件。必須使用 ImaSdkFactory.createPodStreamRequest()ImaSdkFactory.createPodVodStreamRequest() 建立,才能啟用 Pod 服務。這些方法需要網路代碼,而 createPodStreamRequest 也需要自訂資產金鑰和選用的 API 金鑰。兩者都包含其他選用參數。

  • StreamManager:這個物件會處理影片串流與 IMA DAI SDK 之間的通訊,例如觸發追蹤連線偵測 (ping),以及轉送串流事件給發布商。

必要條件

設定 Pod 放送變數

廣告連播放送作業需要的所有變更都可透過 SampleAdsWrapper.java 完成。第一步是更新常數變數。

以下是要新增的廣告連播串流請求常數:

  • STREAM_URL僅適用於直播 - 資訊清單操控器或使用 Pod 放送功能的第三方合作夥伴所提供的影片串流網址。在提出要求之前,您應該先插入 IMA DAI SDK 提供的串流 ID。在此例中,串流網址在提出要求之前,會包含一個預留位置 "[[STREAMID]]",而該預留位置會替換成串流 ID。

  • NETWORK_CODE:Ad Manager 360 帳戶的聯播網代碼。

  • CUSTOM_ASSET_KEY僅適用於直播 - 自訂素材資源鍵,可用來識別 Ad Manager 360 中的廣告連播放送事件。這可由資訊清單操控器或第三方 Pod 放送合作夥伴建立。

  • API_KEY僅適用於直播 - 選用 API 金鑰,可從 IMA DAI SDK 擷取串流 ID。

Android DAI 基本範例可用於播放各種不同的串流類型,但對於放送廣告連播,系統會將其設定為僅播放單一串流。將範例的變數部分變更為如下所示:

/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
        implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Podserving Stream Constants.
  private static final String STREAM_URL =
          "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/" +
          "master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample" +
          "&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000" +
          "&seg-host=dai.google.com&stream_id=[[STREAMID]]";
  private static final String NETWORK_CODE = "51636543";
  private static final String CUSTOM_ASSET_KEY = "google-sample";
  private static final String API_KEY = "";

  private static final String PLAYER_TYPE = "DAISamplePlayer";

  /** Log interface, so we can output the log commands to the UI or similar. */
  public interface Logger {

...

建立直播或 VOD 廣告連播串流要求,以便啟用廣告連播放送功能

直播廣告連播放送

移除先前用於在建構各種串流類型之間切換的方法 buildStreamRequest()。接著,將 requestAndPlayAds() 變更為呼叫 ImaSdkFactory.createPodStreamRequest(),以建立即時廣告連播放送廣告請求。最後,使用 AdsLoader.requestStream() 要求串流。

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

VOD 串流廣告連播放送

移除先前用於在建構各種串流類型之間切換的方法 buildStreamRequest()。接著,將 requestAndPlayAds() 變更為呼叫 ImaSdkFactory.createPodVodStreamRequest(),以建立 VOD 廣告連播放送廣告請求。最後,使用 AdsLoader.requestStream() 要求串流。

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

編輯及設定串流網址

直播廣告連播放送

呼叫 StreamManager.getStreamId() 取得串流 ID。這需要插入到 STEAM_URL 中,並取代 "[[STREAMID]]"。完成這項變更後,即可使用 videoPlayer.setStreamUrl() 設定新的串流網址。

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);

  streamManager.init();

  videoPlayer.setStreamUrl(streamUrl);
  videoPlayer.play();
}

VOD 串流廣告連播放送

呼叫 StreamManager.getStreamId() 取得串流 ID。接著,向影片技術合作夥伴 (VTP) 要求串流網址。接著呼叫 StreamManager.loadThirdPartyStream(),讓 IMA 載入串流網址和您的 TVP 傳回的任何字幕。

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  // 'vtpInterface' is a place holder for your own video technology partner
  // (VTP) API calls.
  String streamUrl = vtpInterface.requestStreamURL(streamID);

  streamManager.init();

  // Pass any subtitles returned by your VTP in this step as well.
  streamManager.loadThirdPartyStream(streamUrl, subtitles);
}

啟用廣告連播放送後,IMA 不會呼叫 VideoStreamPlayer.loadUrl(),因此您可以從中移除任何對 videoPlayer.setStreamUrl()videoPlayer.play() 的呼叫。

大功告成!您現在是透過 IMA Android DAI SDK,在廣告連播放送串流中請求及顯示廣告。如要查看其他正在使用 Android SDK 的範例,請參閱 GitHub 上的範例