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 サービングのサンプルをダウンロードしてください。
IMA DAI 連続配信広告の概要
StreamRequest
: Google の広告サーバーへのストリーム リクエストを定義するオブジェクト。Pod のサービス提供を有効にするには、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 コード スニペットの例をご覧ください。
連続配信広告の変数を設定する
連続配信広告の配信に必要なすべての変更は、SampleAdsWrapper.java で行われます。最初のステップは定数変数の更新です。
追加する連続配信広告のストリーム リクエスト定数は次のとおりです。
STREAM_URL
: ライブ配信でのみ使用 - 連続配信広告を使用してマニフェスト マニピュレータまたはパートナー事業者から提供される動画ストリーム URL。リクエストを行う前に、IMA DAI SDK によって提供されるストリーム ID を挿入する必要があります。この場合、ストリーム URL にはプレースホルダ"[[STREAMID]]"
が含まれます。このプレースホルダは、リクエストを行う前にストリーム ID に置き換えられます。NETWORK_CODE
: アド マネージャー 360 アカウントのネットワーク コード。CUSTOM_ASSET_KEY
: ライブ配信でのみ使用 - アド マネージャー 360 で連続配信広告の配信イベントを識別するカスタム アセットキーです。これは、マニフェスト マニピュレータまたはサードパーティの Pod 配信パートナーによって作成できます。API_KEY
: ライブ配信でのみ使用 - IMA DAI SDK からストリーム ID を取得するために必要な API キー(省略可)。
Android DAI BasicExample は、さまざまなタイプのストリームを再生するように設計されていますが、連続配信広告の場合は単一のストリームのみを再生するように設定されています。この例の 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()
を呼び出し、ライブ連続配信広告による広告リクエストを作成します。最後に、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 連続配信広告リクエストを作成します。最後に、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);
}
連続配信広告が有効になっている場合、IMA は VideoStreamPlayer.loadUrl()
を呼び出しないため、videoPlayer.setStreamUrl()
と videoPlayer.play()
の呼び出しは削除できます。
これで、これで、IMA DAI SDK を使って連続配信広告ストリームで広告をリクエストし、表示できるようになりました。使用されている Android SDK の他の例については、GitHub のサンプルをご覧ください。