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

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

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

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

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

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

Информацию об интеграции с другими платформами или об использовании клиентских 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 Media и установите тип запроса на пользовательскую загрузку 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

Добавьте тег скрипта для импорта IMA DAI SDK для CAF в ваш веб-приемник, сразу после загрузки CAF скриптом. 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();

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