IMA DAI 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 サービングのサンプルをダウンロードします。

IMA DAI Pod Serving の概要

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

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

前提条件

  • DAI 広告付きの動画ストリームを再生するように IMA DAI SDK ですでに設定されている Android アプリ。このようなアプリをまだお持ちでない場合は、Android DAI BasicExample を開始点として使用することをおすすめします。BasicExample には、このガイドで参照されているコードベースが含まれています。

  • IMA DAI を機能させるには、アプリが VideoStreamPlayerCallback.onUserTextReceived() を使用して ID3 イベントを送信することが重要です。フルサービス DAI コード スニペットの例をご覧ください。

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 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 ストリーム リクエストを作成して Pod Serving を有効にする

ライブ配信 Pod サービング

さまざまなストリームタイプのビルドを切り替えるために使用されていたメソッド buildStreamRequest() を削除しました。次に、requestAndPlayAds() を変更して ImaSdkFactory.createPodStreamRequest() を呼び出し、ライブ Pod サービング広告リクエストを作成します。最後に、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 Serving

さまざまなストリームタイプのビルドを切り替えるために使用されていたメソッド 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);
}

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

ライブ配信 Pod サービング

StreamManager.getStreamId() を呼び出してストリーム ID を取得します。これを "[[STREAMID]]" に置き換えて STEAM_URL に挿入する必要があります。この変更を行った後、videoPlayer.setStreamUrl() を使用して新しいストリーム URL を設定できます。

@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 Serving

StreamManager.getStreamId() を呼び出してストリーム ID を取得します。次に、動画技術パートナー(VTP)にストリーミング URL をリクエストします。次に、StreamManager.loadThirdPartyStream() を呼び出して、IMA が TVP から返されたストリーム URL と字幕を読み込むようにします。

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

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