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

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 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;

ライブまたは VOD Pod ストリーム リクエストを作成して Pod Serving を有効にする

ライブ配信 Pod サービング

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

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

VOD ストリームの Pod Serving

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

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

ライブ配信 Pod サービング

StreamManager.getStreamId() メソッドを呼び出してストリーム ID を取得します。これは、"[[STREAMID]]" に置き換えて STEAM_URL に挿入する必要があります。この変更を行った後、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() コールバックを呼び出します。ストリーミング再生を開始するには、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 のサンプルをご覧ください。