Настройка IMA SDK для DAI

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

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

Выберите интересующее вас решение DAI.

Подача капсул DAI

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

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

Обзор системы подачи напитков в капсулах IMA DAI

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

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

Предварительные требования

  • Приложение для Android, уже настроенное с использованием SDK IMA DAI, воспроизводит видеопотоки с рекламой DAI. Если у вас еще нет подобного приложения, мы рекомендуем использовать Android DAI BasicExample в качестве отправной точки. В BasicExample содержится кодовая база, на которую ссылается это руководство.

  • Для корректной работы IMA DAI важно, чтобы ваше приложение отправляло события ID3 с помощью VideoStreamPlayerCallback.onUserTextReceived() . См. этот полный пример кода DAI .

Настройте переменные для запуска пода.

Все необходимые изменения для запуска Pod-сервера вносятся в файл SampleAdsWrapper.java . Первым шагом является обновление константных переменных.

Вот константы запроса потока рекламных блоков, которые необходимо добавить:

  • STREAM_URL : Используется только для прямых трансляций — URL видеопотока, предоставляемый вашим манипулятором манифеста или сторонним партнером, использующим Pod Serving. Перед отправкой запроса необходимо указать идентификатор потока, предоставленный SDK IMA DAI. В этом случае URL потока содержит заполнитель "[[STREAMID]]" , который заменяется идентификатором потока перед отправкой запроса.

  • NETWORK_CODE : Сетевой код для вашей учетной записи Ad Manager 360.

  • CUSTOM_ASSET_KEY : Используется только для прямых трансляций — пользовательский ключ ресурса, идентифицирующий событие Pod Serving в Ad Manager 360. Он может быть создан вашим инструментом манифеста или сторонним партнером по Pod Serving.

  • API_KEY : Используется только для прямых трансляций — необязательный ключ API, который может потребоваться для получения идентификатора потока из SDK IMA DAI.

Пример Android DAI BasicExample предназначен для воспроизведения различных типов потоков, но для Pod Serving он настроен на воспроизведение только одного потока. Измените раздел переменных примера в соответствии со следующим:

/** 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;

Создайте запрос на потоковую трансляцию в прямом эфире или по запросу, чтобы включить функцию Pod Serving.

Прямая трансляция, подкасты

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

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

VOD-стриминг Под-сервис

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

// 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();

VOD-стриминг Под-сервис

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

Для запросов VOD Pod Serving 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

После успешного завершения запроса и показа рекламы в потоке Pod Serving с использованием IMA DAI SDK мы рекомендуем очистить все ресурсы после завершения сессии Pod Serving. Вызовите StreamManager.destroy() , чтобы остановить воспроизведение потока, прекратить отслеживание рекламы и освободить все загруженные ресурсы потока.

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