Начало работы с IMA DAI SDK

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-адрес видеопотока, предоставленный вашим манипулятором манифеста или сторонним партнером, использующим обслуживание модулей. Прежде чем делать запрос, вам потребуется ввести идентификатор потока, предоставленный 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. Наконец, запросите поток, используя 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 SDK. Чтобы увидеть другие примеры использования Android SDK, посмотрите образцы на GitHub .