開始使用 IMA DAI SDK

您可以使用 IMA SDK 輕鬆將多媒體廣告整合至網站和應用程式。IMA SDK 可向任何 符合 VAST 規定的廣告伺服器要求廣告,並管理應用程式中的廣告播放作業。透過 IMA DAI SDK,應用程式會針對廣告和內容影片 (隨選影片或直播內容) 提出串流要求。接著,SDK 會傳回合併的影片串流,因此您不必在應用程式中管理廣告和內容影片之間的切換。

選取感興趣的動態廣告解決方案

DAI 廣告連播放送

您可以使用 IMA SDK 輕鬆將多媒體廣告整合至網站和應用程式。IMA SDK 可向任何 符合 VAST 規定的廣告伺服器要求廣告,並管理應用程式中的廣告播放作業。透過 IMA DAI SDK,應用程式會針對廣告和內容影片 (隨選影片或直播內容) 提出串流要求。接著,SDK 會傳回合併的影片串流,因此您不必在應用程式中管理廣告和內容影片之間的切換。

本指南將說明如何使用 IMA DAI SDK 搭配影片播放器,播放直播和 VOD 串流。如要查看或瞭解完成的範例整合作業,請下載Pod 服務範例

IMA DAI 廣告連播放送功能總覽

必要條件

設定 Pod 放送變數

您需要在 SampleAdsWrapper.java 中完成 Pod 放送所需的所有變更。第一步是更新常數變數。

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

  • STREAM_URL僅用於直播 - 使用廣告連播放送的資訊清單操作者或第三方合作夥伴提供的影片串流網址。您必須先插入 IMA DAI SDK 提供的串流 ID,才能提出要求。在這種情況下,串流網址會包含預留位置 "[[STREAMID]]",系統會在提出要求前將其替換成串流 ID。

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

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

  • 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 {

...

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

直播 Pod 放送

移除用於切換建構各種串流類型的 buildStreamRequest() 方法。接著,變更 requestAndPlayAds() 以呼叫 ImaSdkFactory.createPodStreamRequest(),建立 Live Pod Serving 廣告要求。最後,請使用 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 串流 Pod 放送

移除用於切換建構各種串流類型的 buildStreamRequest() 方法。接著,變更 requestAndPlayAds() 以呼叫 ImaSdkFactory.createPodVodStreamRequest(),建立 VOD Pod 服務廣告要求。最後,請使用 AdsLoader.requestStream() 要求串流。

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

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

編輯並設定串流網址

直播 Pod 放送

呼叫 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 串流 Pod 放送

呼叫 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);
}

啟用 Pod 服務後,IMA 就不會呼叫 VideoStreamPlayer.loadUrl(),因此您可以從中移除對 videoPlayer.setStreamUrl()videoPlayer.play() 的任何呼叫。

清理 IMA DAI 素材資源

使用 IMA DAI SDK 在 Pod 放送串流中成功完成廣告請求和顯示作業後,建議您在 Pod 放送工作階段結束後清理所有資源。呼叫 StreamManager.destroy() 即可停止串流播放、停止所有廣告追蹤,並釋放所有已載入的串流資產。

如要查看其他 Android SDK 使用範例,請參閱 GitHub 上的範例