開始使用 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 會傳回合併的影片串流,因此您不必在應用程式中切換廣告和內容影片。

本指南說明如何使用 IMA DAI SDK 搭配簡易的影片播放器,播放直播和 VOD 串流內容,以播放 DAI 廣告連播放送串流。如要查看或按照已完成的整合範例操作,請下載 Pod 提供範例

IMA DAI 廣告連播放送總覽

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

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

先備知識

設定廣告連播放送變數

進行廣告連播放送所需的所有變更,都在 SampleAdsWrapper.java 中進行。第一步是更新常數變數。

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

  • STREAM_URL僅適用於直播 - 由資訊清單操縱器或第三方合作夥伴使用 Pod 放送功能提供的影片串流網址。在發出請求之前,您應該先插入 IMA DAI SDK 提供的串流 ID。在這種情況下,在提出要求之前,串流網址包含會替換為串流 ID 的預留位置 "[[STREAMID]]"

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

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

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

Android DAI BasicExample 的設計是用來播放各種不同的串流類型,但以廣告連播放送時,設為只播放單一串流。將範例的變數區段改為以下內容:

/** 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 {

...

建立直播或隨選廣告連播串流要求以啟用廣告連播放送

直播活動廣告連播放送

移除先前用於在建構各種串流類型之間切換的方法 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 DAI SDK 請求及顯示廣告的廣告連播放送串流中。如要查看使用 Android SDK 的其他範例,請參閱 GitHub 上的範例