IMA SDK を使用すると、ウェブサイトやアプリにマルチメディア広告を簡単に統合できます。IMA SDK では、 VAST 準拠の広告サーバーに広告をリクエストして、アプリでの広告再生を管理できます。IMA DAI SDK を使用すると、アプリは広告とコンテンツ動画(VOD またはライブ コンテンツ)のストリーム リクエストを行います。これにより、SDK は結合された動画ストリームを返すため、アプリ内で広告とコンテンツ動画の切り替えを管理する必要はありません。
ご希望の DAI ソリューションを選択する
連続広告配信 DAI
IMA SDK を使用すると、ウェブサイトやアプリにマルチメディア広告を簡単に統合できます。IMA SDK では、 VAST 準拠の広告サーバーに広告をリクエストして、アプリでの広告再生を管理できます。IMA DAI SDK を使用すると、アプリは広告とコンテンツ動画(VOD またはライブ コンテンツ)のストリーム リクエストを行います。これにより、SDK は結合された動画ストリームを返すため、アプリ内で広告とコンテンツ動画の切り替えを管理する必要はありません。
このガイドでは、動画プレーヤーと IMA DAI SDK を使用して、ライブ ストリームや VOD ストリームを再生し、DAI Pod Serving ストリームを再生する方法について説明します。完全なサンプル統合を表示またはフォローするには、Pod Serving のサンプルをダウンロードしてください。
IMA DAI 連続配信広告の概要
StreamRequest
: Google の広告サーバーへのストリーム リクエストを定義するオブジェクト。Pod Serving を有効にするには、ImaSdkFactory.createPodStreamRequest()
またはImaSdkFactory.createPodVodStreamRequest()
を使用して作成する必要があります。これらのメソッドにはネットワーク コードが必要です。また、createPodStreamRequest
にはカスタム アセットキーと、オプションの API キーが必要です。どちらにも他のオプション パラメータが含まれています。StreamManager
: トラッキング ping の配信やパブリッシャーへのストリーム イベントの転送など、動画ストリームと IMA DAI SDK 間の通信を処理するオブジェクト。
前提条件
IMA DAI SDK がセットアップ済みの Android アプリで、DAI 広告を含む動画ストリームを再生しているこのようなアプリをまだお持ちでない場合は、出発点として 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 Serving パートナーによって作成できます。API_KEY
: ライブ配信でのみ使用 - IMA DAI SDK からストリーム ID を取得するために必要な API キー(省略可)。
Android DAI BasicExample は、さまざまなタイプのストリームを再生するように設計されていますが、Pod Serving では単一のストリームのみを再生するように設定されています。この例の variable セクションを次のように変更します。
/** 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 連続配信リクエストを作成して、連続配信を有効にする
ライブ ストリームの広告配信
さまざまなストリーム タイプの構築を切り替えるために使用されていた 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 ストリームの連続配信広告
さまざまなストリーム タイプの構築を切り替えるために使用されていた buildStreamRequest()
メソッドを削除します。次に、requestAndPlayAds()
を変更して ImaSdkFactory.createPodVodStreamRequest()
を呼び出し、VOD Pod Serving 広告リクエストを作成します。最後に、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 を編集して設定する
ライブ ストリームの広告配信
StreamManager.getStreamId()
を呼び出してストリーム ID を取得します。次に、これを STEAM_URL
に挿入し、"[[STREAMID]]"
と置き換えます。この変更を行った後、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 ストリームの連続配信広告
StreamManager.getStreamId()
を呼び出してストリーム ID を取得します。次に、動画技術パートナー(VTP)にストリーム URL をリクエストします。次に、StreamManager.loadThirdPartyStream()
を呼び出して、IMA によりストリーム URL と 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 Serving が有効になっている場合、IMA は VideoStreamPlayer.loadUrl()
を呼び出しないため、videoPlayer.setStreamUrl()
と videoPlayer.play()
の呼び出しを削除できます。
IMA DAI アセットのクリーンアップ
IMA DAI SDK を使って連続広告配信ストリームで広告のリクエストと表示を正常に終了したら、連続配信広告のセッションが終了したら、すべてのリソースをクリーンアップすることをおすすめします。StreamManager.destroy()
を呼び出してストリームの再生を停止し、すべての広告トラッキングを停止して、読み込まれたストリーム アセットをすべて解放します。
使用されている Android SDK の他の例については、GitHub のサンプルをご覧ください。