設定 DAI 專用的 IMA SDK

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

選取您感興趣的 DAI 解決方案

廣告連播放送 DAI

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

本指南說明如何使用 IMA DAI SDK 和影片播放器,播放 DAI 廣告連播放送串流,包括直播和隨選影片串流。如要查看或追蹤完成的範例整合,請下載 Pod Serving 範例

IMA DAI 廣告連播放送總覽

必要條件

設定 Pod Serving 變數

Pod 放送所需的所有變更,都會在 SampleAdsWrapper.java 中完成。首先,請更新常數變數。

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

  • STREAM_URL僅用於直播 - 透過廣告連播放送,由資訊清單操控器或第三方合作夥伴提供的影片串流網址。您必須先插入 IMA DAI SDK 提供的串流 ID,才能提出要求。在本例中,串流網址包含預留位置 "[[STREAMID]]",系統會在發出要求前,將其替換為串流 ID。

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

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

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

Android DAI BasicExample 旨在播放各種不同的串流類型,但針對 Pod Serving,系統只會設定播放單一串流。將範例的變數區段變更為下列內容:

/** This class implements IMA to add pod ad-serving support to SampleVideoPlayer */
@SuppressLint("UnsafeOptInUsageError")
/* @SuppressLint is needed for new media3 APIs. */
public class SampleAdsWrapper
    implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Set up the pod serving variables.
  private static final String NETWORK_CODE = "";
  private static final String CUSTOM_ASSET_KEY = "";
  private static final String API_KEY = "";
  private static final String STREAM_URL = "";
  private static final StreamFormat STREAM_FORMAT = StreamFormat.HLS;

建立直播或隨選影片廣告連播串流請求,啟用廣告連播放送功能

直播 Pod 放送

移除用於在建構各種串流類型之間切換的方法 buildStreamRequest()。接著,修改 requestAndPlayAds() 以呼叫 ImaSdkFactory.createPodStreamRequest(),建立 Live Pod Serving 廣告請求。

// Live pod stream request.
request = sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);

VOD 串流廣告連播放送

移除用於在建構各種串流類型之間切換的方法 buildStreamRequest()。接著,修改 requestAndPlayAds() 以呼叫 ImaSdkFactory.createPodVodStreamRequest(),建立 VOD Pod Serving 廣告請求。

// VOD pod stream request.
request = sdkFactory.createPodVodStreamRequest(NETWORK_CODE);

建立串流要求例項後,請使用 AdsLoader.requestStream() 要求串流:

request.setFormat(STREAM_FORMAT);
adsLoader.requestStream(request);

編輯及設定串流網址

直播 Pod 放送

呼叫 StreamManager.getStreamId() 方法來取得串流 ID。這項資訊必須插入 STEAM_URL,取代 "[[STREAMID]]"。完成這項變更後,請使用 videoPlayer.setStreamUrl() 方法設定新的串流網址,然後呼叫 videoPlayer.play() 方法開始播放串流。

// Play the live pod stream.
streamID = streamManager.getStreamId();
String liveStreamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);
// Call videoPlayer.play() here, because IMA doesn't call the VideoStreamPlayer.loadUrl()
// function for livestreams.
videoPlayer.setStreamUrl(liveStreamUrl);
videoPlayer.play();

VOD 串流廣告連播放送

  1. 呼叫 StreamManager.getStreamId() 方法來取得串流 ID。
  2. 向影片技術合作夥伴 (VTP) 索取串流網址。
  3. 從 VTP 收到網址後,請使用該網址呼叫 StreamManager.loadThirdPartyStream() 方法來載入串流,以及 VTP 傳回的任何字幕。
// Play the VOD pod stream.
streamID = streamManager.getStreamId();
String vodStreamUrl = "";
// Refer to your Video Tech Partner (VTP) or video stitching guide to fetch the stream URL
// and the subtitles for a the ad stitched VOD stream.

// In the following commented out code, 'vtpInterface' is a place holder
// for your own video technology partner (VTP) API calls.
// vodStreamUrl = vtpInterface.requestStreamURL(streamID);
List<Map<String, String>> subtitles = new ArrayList<>();
streamManager.loadThirdPartyStream(vodStreamUrl, subtitles);

對於隨選影片連播放送要求,IMA 會在串流載入時呼叫 VideoStreamPlayer.loadUrl() 回呼。如要開始播放串流,請將 videoPlayer.setStreamUrl()videoPlayer.play() 呼叫新增至 VideoStreamPlayer.loadUrl() 回呼:

private VideoStreamPlayer createVideoStreamPlayer() {
  return new VideoStreamPlayer() {
    @Override
    public void loadUrl(String url, List<HashMap<String, String>> subtitles) {
      // IMA doesn't make calls to VideoStreamPlayer.loadUrl() for pod serving live streams.
      // The following code is for VOD streams.
      videoPlayer.setStreamUrl(url);
      videoPlayer.play();
    }

清理 IMA DAI 資產

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

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