Как настроить показ пакетов с динамической вставкой объявлений

Выберите платформу: HTML5 Android iOS tvOS Cast Roku

IMA SDK позволяет легко интегрировать мультимедийные объявления на сайты и в приложения. IMA SDK может запрашивать объявления с любого сервера, совместимого с VAST, и управлять воспроизведением рекламы в ваших приложениях. С помощью IMA DAI SDK приложения отправляют запрос на показ рекламы и видеоконтента (видео по запросу или прямых трансляций). Затем SDK возвращает комбинированный видеопоток, поэтому вам не нужно управлять переключением между рекламой и контентом в приложении.

В этом руководстве рассказывается, как воспроизводить поток с динамической вставкой пакетов объявлений, используя IMA DAI SDK с видеопроигрывателем для воспроизведения прямых трансляций и видео по запросу. Чтобы посмотреть или использовать готовый пример интеграции, скачайте пример пакета объявлений.

Общие сведения о показе пакетов с динамической вставкой объявлений в IMA DAI

  • StreamRequest – объект, определяющий запрос потока к рекламным серверам Google. Чтобы включить показ пакетов, необходимо создать объект с помощью ImaSdkFactory.createPodStreamRequest() или ImaSdkFactory.createPodVodStreamRequest(). Для этих методов требуется код сети, а для createPodStreamRequest – также специальный ключ объекта и необязательный ключ API. Оба содержат другие необязательные параметры.

  • StreamManager – объект, который обеспечивает обмен данными между видеопотоком и IMA DAI SDK, например отправляет запросы ping для отслеживания и пересылает события потока издателю.

Требования

Как настроить переменные для показа пакетов

Все изменения, необходимые для показа пакетов, выполняются в файле 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 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;

Как создать запрос на показ пакета объявлений в прямой трансляции или видео по запросу

Показ пакетов для трансляций

Удалите метод buildStreamRequest(), который использовался для переключения между созданием потоков разных типов. Затем измените requestAndPlayAds(), чтобы вызвать ImaSdkFactory.createPodStreamRequest() и создать запрос объявления для показа пакета во время трансляции.

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

Показ пакетов в видеопотоке по запросу

Удалите метод buildStreamRequest(), который использовался для переключения между созданием потоков разных типов. Затем измените requestAndPlayAds(), чтобы вызвать ImaSdkFactory.createPodVodStreamRequest() и создать запрос объявления для пакетного показа в видео по запросу.

// VOD pod stream request.
request = sdkFactory.createPodVodStreamRequest(NETWORK_CODE);

После создания экземпляра запроса потока запросите поток с помощью AdsLoader.requestStream():

request.setFormat(STREAM_FORMAT);
adsLoader.requestStream(request);

Как изменить и настроить URL трансляции

Показ пакетов для трансляций

Вызовите метод StreamManager.getStreamId(), чтобы получить идентификатор потока. Его нужно вставить в STEAM_URL вместо "[[STREAMID]]". После этого задайте новый URL трансляции с помощью метода videoPlayer.setStreamUrl() и вызовите метод 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();

Показ пакетов в видеопотоке по запросу

  1. Вызовите метод StreamManager.getStreamId(), чтобы получить идентификатор потока.
  2. Запросите URL потока у своего партнера по видеотехнологиям.
  3. Получив URL от поставщика, вызовите метод StreamManager.loadThirdPartyStream() с этим URL, чтобы загрузить поток и субтитры, возвращенные поставщиком.
// 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);

Для запросов пакетов видео по запросу 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, мы рекомендуем удалить все ресурсы, которые использовались во время сеанса пакетной передачи. Вызовите StreamManager.destroy(), чтобы остановить воспроизведение потока, прекратить отслеживание рекламы и освободить все загруженные объекты потока.

Другие примеры использования Android SDK можно найти на GitHub.