IMA SDK упрощают интеграцию мультимедийной рекламы на ваши веб-сайты и приложения. IMA SDK могут запрашивать рекламу с любого рекламного сервера , совместимого с VAST, и управлять воспроизведением рекламы в ваших приложениях. С помощью SDK IMA DAI приложения отправляют потоковый запрос на рекламу и видеоконтент — либо VOD, либо контент в реальном времени. Затем SDK возвращает объединенный видеопоток, так что вам не придется управлять переключением между рекламой и видеоконтентом в вашем приложении.
Выберите решение DAI, которое вас интересует
Модуль, обслуживающий DAI
IMA SDK упрощают интеграцию мультимедийной рекламы на ваши веб-сайты и приложения. IMA SDK могут запрашивать рекламу с любого рекламного сервера , совместимого с VAST, и управлять воспроизведением рекламы в ваших приложениях. С помощью SDK IMA DAI приложения отправляют потоковый запрос на рекламу и видеоконтент — либо VOD, либо контент в реальном времени. Затем SDK возвращает объединенный видеопоток, так что вам не придется управлять переключением между рекламой и видеоконтентом в вашем приложении.
В этом руководстве показано, как воспроизводить поток DAI Pod Serving с помощью IMA DAI SDK с видеопроигрывателем для воспроизведения потоков в реальном времени и VOD. Чтобы просмотреть или проследить за завершенным примером интеграции, загрузите пример обслуживания модулей .
Обзор обслуживания модулей IMA DAI
StreamRequest
: объект, определяющий запрос потока к рекламным серверам Google. Должен быть создан с помощьюImaSdkFactory.createPodStreamRequest()
илиImaSdkFactory.createPodVodStreamRequest()
чтобы включить обслуживание модулей. Для этих методов требуется сетевой код , а дляcreatePodStreamRequest
также требуется пользовательский ключ актива и дополнительный ключ API . Оба включают другие необязательные параметры.StreamManager
: объект, который обрабатывает связь между видеопотоком и IMA DAI SDK, например отправляет запросы отслеживания и пересылает события потока издателю.
Предварительные условия
Приложение Android, уже настроенное с помощью IMA DAI SDK, для воспроизведения видеопотоков с рекламой DAI. Если у вас еще нет такого приложения, мы рекомендуем использовать Android DAI BasicExample в качестве отправной точки. BasicExample имеет базу кода, указанную в этом руководстве.
Для вашего приложения важно отправлять события ID3 с помощью
VideoStreamPlayerCallback.onUserTextReceived()
чтобы IMA DAI работал. См. этот пример фрагмента кода полного обслуживания DAI .
Настройте переменные обслуживания подов
Все изменения, необходимые для обслуживания модулей, выполняются в SampleAdsWrapper.java . Первым шагом является обновление постоянных переменных.
Вот константы запроса потока рекламного модуля, которые нужно добавить:
STREAM_URL
: используется только для прямых трансляций — URL-адрес видеопотока, предоставленный вашим манипулятором манифеста или сторонним партнером, использующим Pod Serving. Прежде чем делать запрос, вам потребуется ввести идентификатор потока, предоставленный IMA DAI SDK. В этом случае URL-адрес потока включает заполнитель"[[STREAMID]]"
, который заменяется идентификатором потока перед выполнением запроса.NETWORK_CODE
: код сети вашего аккаунта Менеджера рекламы 360.CUSTOM_ASSET_KEY
: используется только для прямых трансляций . Пользовательский ключ актива, который идентифицирует событие обслуживания модулей в Менеджере рекламы 360. Он может быть создан вашим манипулятором манифеста или сторонним партнером по обслуживанию модулей.API_KEY
: используется только для прямых трансляций — дополнительный ключ API, который может потребоваться для получения идентификатора потока из IMA DAI SDK.
Android DAI BasicExample предназначен для воспроизведения различных типов потоков, но для обслуживания модулей он настроен только на воспроизведение одного потока. Измените раздел переменных примера так, чтобы он соответствовал следующему:
/** 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 {
...
Создайте запрос на поток модулей в реальном времени или по запросу, чтобы включить обслуживание модулей.
Обслуживание модулей в прямом эфире
Удалите метод 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. Наконец, запросите поток, используя 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()
чтобы получить идентификатор потока. Затем его необходимо вставить в STEAM_URL
, заменив "[[STREAMID]]"
. После внесения этого изменения новый URL-адрес потока можно установить с помощью videoPlayer.setStreamUrl()
.
@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()
чтобы получить идентификатор потока. Затем запросите URL-адрес потока у своего партнера по видеотехнологиям (VTP). Затем вызовите 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
После успешного завершения запроса и отображения рекламы в потоке обслуживания модулей с помощью IMA DAI SDK мы предлагаем вам очистить все ресурсы после завершения сеанса обслуживания модулей. Вызовите StreamManager.destroy()
чтобы остановить воспроизведение потока, остановить отслеживание всей рекламы и освободить все загруженные ресурсы потока.
Другие примеры использования Android SDK см. в примерах на GitHub .