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

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

Полный комплекс услуг DAI

В этом руководстве показано, как воспроизвести поток DAI с помощью IMA CAF DAI SDK. Если вы хотите просмотреть или использовать готовый пример интеграции, скачайте его .

Перед использованием этого руководства обязательно ознакомьтесь с протоколом веб-приёмника Chromecast Application Framework . Данное руководство предполагает базовый уровень знаний о приёмниках CAF, таких как перехватчики сообщений и объекты mediaInformation , а также умение использовать инструмент Cast Command and Control для эмуляции отправителя CAF.

Для использования IMA DAI вам потребуется аккаунт Менеджера рекламы 360. Если у вас есть аккаунт Менеджера рекламы, обратитесь к своему менеджеру для получения дополнительной информации. Информацию о регистрации в Менеджере рекламы можно найти в Справочном центре Менеджера рекламы .

Информацию об интеграции с другими платформами или об использовании клиентских SDK IMA см. в разделе Interactive Media Ads SDKs .

Обзор CAF DAI

Реализация DAI с использованием IMA CAF DAI SDK включает два основных компонента, как показано в этом руководстве:

  • StreamRequest : объект, определяющий потоковый запрос к рекламным серверам Google. Потоковые запросы бывают двух основных типов:

    • LiveStreamRequest : указывает ключ актива , а также другие необязательные параметры.
    • VODStreamRequest : указывает идентификатор источника контента , идентификатор видео , а также другие необязательные параметры.
    • Оба типа запросов могут опционально включать ключ API, необходимый для доступа к указанным потокам, и сетевой код Google Ad Manager для IMA SDK для обработки идентификаторов объявлений, указанных в настройках Google Ad Manager.
  • StreamManager : объект, который обрабатывает связь между видеопотоком и IMA DAI SDK, например, отправляет пинги отслеживания и пересылает события потока издателю.

Предпосылки

  • Учетная запись Cast Developer Console с зарегистрированным тестовым устройством.
  • Размещенное приложение веб-приемника , зарегистрированное в консоли разработчика Cast и которое можно изменить для размещения кода, предоставленного этим руководством.
  • Отправляющее приложение, настроенное на использование вашего веб-приёмника. В этом примере в качестве отправителя используется инструмент Cast Command and Control .

Настройте объекты MediaInfo отправителя

Сначала настройте объект MediaInfo вашего приложения-отправителя, включив в него следующие поля:

contentId Уникальный идентификатор этого медиа-элемента
contentUrl Резервный URL-адрес потока для загрузки, если запрос DAI StreamRequest по какой-либо причине не удается выполнить.
streamType Для прямых трансляций это значение должно быть «LIVE». Для потоков VOD это значение должно быть «BUFFERED».
customData assetKey Только для прямых трансляций. Определяет прямую трансляцию для загрузки.
contentSourceId Только для потоков VOD. Определяет медиаканал, содержащий запрошенный поток.
videoId Только для потоков VOD. Идентифицирует запрошенный поток в указанном медиаканале.
networkCode (Необязательно) Ваш сетевой код Google Ad Manager.
ApiKey Дополнительный ключ API, который может потребоваться для получения URL-адреса потока из IMA DAI SDK.
senderCanSkip Логическое значение, позволяющее получателю узнать, может ли отправляющее устройство отображать кнопку пропуска, что позволяет поддерживать пропускаемую рекламу.

Чтобы настроить эти значения в инструменте управления трансляцией, перейдите на вкладку «Загрузить медиа» и выберите тип запроса на загрузку LOAD . Затем замените JSON-данные в текстовой области одним из следующих JSON-объектов:

ЖИТЬ

{
  "media": {
    "contentId": "bbb",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
    "streamType": "LIVE",
    "customData": {
      "assetKey": "c-rArva4ShKVIAkNfy6HUQ",
      "networkCode": "21775744923",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

ВИДЕО ПО ЗАПРОСУ

{
  "media": {
    "contentId": "tos",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
    "streamType": "BUFFERED",
    "customData": {
      "contentSourceId": "2548831",
      "videoId": "tears-of-steel",
      "networkCode": "21775744923",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

Этот пользовательский объект запроса на нагрузку можно отправить получателю для проверки следующих шагов.

Создайте базовый приемник CAF

Следуя руководству по базовому приемнику CAF SDK, создайте базовый веб-приемник.

Код вашего приемника должен выглядеть так:

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
  </script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    cast.framework.CastReceiverContext.getInstance().start();
  </script>
</body>
</html>

Импортируйте IMA DAI SDK и получите Player Manager

Добавьте тег script для импорта IMA DAI SDK для CAF в веб-приёмник сразу после скрипта, загружающего CAF. CAF DAI SDK постоянно обновляется, поэтому нет необходимости указывать конкретную версию. Затем в следующем теге script сохраните контекст приёмника и менеджер проигрывателей как константы перед запуском приёмника.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();

    castContext.start();
  </script>
</body>
</html>

Инициализируйте менеджер потоков IMA

Инициализируйте менеджер потоков CAF DAI SDK.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    castContext.start();
  </script>
</body>
</html>

Создать перехватчик сообщений о загрузке

CAF DAI SDK использует перехватчик сообщений о загрузке CAF для выполнения запросов потока и замены URL-адреса контента на конечный поток DAI. Перехватчик сообщений вызывает метод streamManager.requestStream() , который управляет установкой рекламных пауз, запросом потока и заменой существующего contentURL .

Перехватчик сообщений о загрузке может быть только один, поэтому, если вашему приложению требуется использование перехватчика, вам необходимо включить любые пользовательские функции в тот же обратный вызов.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => null;

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                this.broadcast('Stream request successful.');
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

Создайте запрос потока

Чтобы завершить интеграцию CAF DAI, вам необходимо создать запрос потока, используя данные, которые были включены в объект mediaInfo от отправителя.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imaRequestData.networkCode) {
        streamRequest.networkCode = imaRequestData.networkCode;
      }
      if (streamRequest && imaRequestData.ApiKey) {
        streamRequest.ApiKey = imaRequestData.ApiKey;
      }
      if (streamRequest && imaRequestData.senderCanSkip) {
        streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
      }
      return streamRequest;
    };

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

Теперь вы можете запрашивать и воспроизводить потоки DAI с помощью CAF DAI SDK от Google. Чтобы узнать о более расширенных функциях SDK, ознакомьтесь с другими руководствами или загрузите наши примеры приложений-приёмников .