DAI 用 IMA SDK を設定する

IMA SDK を使用すると、マルチメディア広告をウェブサイトやアプリに簡単に統合できます。IMA SDK は、 VAST 準拠のあらゆる広告サーバーから広告をリクエストし、アプリでの広告再生を管理できます。IMA DAI SDK を使用すると、アプリは広告とコンテンツ動画(VOD またはライブ コンテンツ)のストリーム リクエストを行います。SDK は結合された動画ストリームを返すため、アプリ内で広告とコンテンツの動画を切り替える必要はありません。

関心のある DAI ソリューションを選択する

Pod Serving DAI

IMA SDK を使用すると、マルチメディア広告をウェブサイトやアプリに簡単に統合できます。IMA SDK は、 VAST 準拠のあらゆる広告サーバーから広告をリクエストし、アプリでの広告再生を管理できます。IMA DAI SDK を使用すると、アプリは広告とコンテンツ動画(VOD またはライブ コンテンツ)のストリーム リクエストを行います。SDK は結合された動画ストリームを返すため、アプリ内で広告とコンテンツの動画を切り替える必要はありません。

このガイドでは、ライブ ストリームと VOD ストリームの再生に動画プレーヤーで IMA DAI SDK を使用して、DAI Pod Serving ストリームを再生する方法を説明します。完成したサンプル統合を表示またはフォローするには、Pod Serving の例をダウンロードします。

IMA DAI Pod Serving の概要

  • StreamRequest: Google の広告サーバーへのストリーム リクエストを定義するオブジェクト。Pod サービングを有効にするには、ImaSdkFactory.createPodStreamRequest() または ImaSdkFactory.createPodVodStreamRequest() を使用して作成する必要があります。これらのメソッドにはネットワーク コードが必要です。また、createPodStreamRequest にはカスタム アセットキーと、オプションの API キーも必要です。どちらにも、他のオプション パラメータが含まれています。

  • StreamManager: 動画ストリームと IMA DAI SDK 間の通信を処理するオブジェクト(トラッキング ピングの発行、ストリーム イベントのパブリッシャーへの転送など)。

前提条件

Pod Serving 変数を設定する

Pod Serving に必要な変更はすべて SampleAdsWrapper.java で行われます。最初の手順は、定数変数を更新することです。

追加する広告ポッド ストリーム リクエスト定数は次のとおりです。

  • STREAM_URL: ライブ配信でのみ使用 - マニフェスト マニピュレータまたは Pod Serving を使用するサードパーティ パートナーから提供された動画ストリーム URL。リクエストを行う前に、IMA DAI SDK から提供されたストリーム ID を挿入する必要があります。この場合、ストリーム URL にはプレースホルダ "[[STREAMID]]" が含まれます。リクエストを行う前に、このプレースホルダはストリーム ID に置き換えられます。

  • NETWORK_CODE: アド マネージャー 360 アカウントのネットワーク コード。

  • CUSTOM_ASSET_KEY: ライブ配信でのみ使用 - アド マネージャー 360 で Pod 配信イベントを識別するカスタム アセットキー。これは、マニフェスト マニピュレータまたは第三者の Pod Serving パートナーによって作成できます。

  • API_KEY: ライブ配信でのみ使用 - IMA DAI SDK からストリーム ID を取得するために必要となる場合がある、オプションの API キー。

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 Serving を有効にするためにライブまたは VOD Pod ストリーム リクエストを作成する

ライブ ストリーム Pod のサービング

さまざまなストリーム タイプの構築を切り替えるために使用されていたメソッド buildStreamRequest() を削除しました。次に、requestAndPlayAds() を変更して ImaSdkFactory.createPodStreamRequest() を呼び出し、Live Pod Serving 広告リクエストを作成します。

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

VOD ストリームの Pod Serving

さまざまなストリーム タイプの構築を切り替えるために使用されていたメソッド buildStreamRequest() を削除しました。次に、requestAndPlayAds() を変更して ImaSdkFactory.createPodVodStreamRequest() を呼び出し、VOD Pod サービング広告リクエストを作成します。

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

ストリーム リクエスト インスタンスを作成したら、AdsLoader.requestStream() を使用してストリームをリクエストします。

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

ストリーム URL を編集して設定する

ライブ ストリーム Pod のサービング

StreamManager.getStreamId() メソッドを呼び出して、ストリーム ID を取得します。これは STEAM_URL に挿入し、"[[STREAMID]]" を置き換える必要があります。この変更を行った後、videoPlayer.setStreamUrl() メソッドを使用して新しいストリーム URL を設定し、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 ストリームの Pod Serving

  1. StreamManager.getStreamId() メソッドを呼び出して、ストリーム ID を取得します。
  2. 動画技術パートナー(VTP)からストリーム URL をリクエストします。
  3. VTP から URL を受け取ったら、その URL を使用して 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);

VOD Pod 配信リクエストの場合、IMA はストリームの読み込みが完了すると VideoStreamPlayer.loadUrl() コールバックを呼び出します。ストリームの再生を開始するには、VideoStreamPlayer.loadUrl() コールバックに videoPlayer.setStreamUrl()videoPlayer.play() の呼び出しを追加します。

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 サービング ストリームで広告のリクエストと表示を正常に完了したら、Pod サービング セッションの完了後にリソースをクリーンアップすることをおすすめします。StreamManager.destroy() を呼び出して、ストリームの再生を停止し、すべての広告トラッキングを停止して、読み込まれたすべてのストリーム アセットを解放します。

Android SDK の使用例については、GitHub のサンプルをご覧ください。