Konfigurowanie z DAI w trybie Full Service

Wybierz platformę: HTML5 Android iOS tvOS Cast Roku

Ten przewodnik pokazuje, jak odtworzyć strumień DAI za pomocą pakietu IMA CAF DAI SDK. Jeśli chcesz zobaczyć lub prześledzić gotową przykładową integrację, pobierz przykład.

Zanim skorzystasz z tego przewodnika, zapoznaj się z protokołem odbiornika internetowego Chromecast Application Framework. W tym przewodniku zakładamy, że znasz podstawowe pojęcia związane z odbiornikiem CAF, takie jak przechwytywacze wiadomości i obiekty mediaInformation, a także że potrafisz używać narzędzia Cast Command and Control do emulowania nadawcy CAF.

Aby korzystać z IMA DAI, musisz mieć konto Ad Managera 360. Jeśli masz konto Ad Managera, skontaktuj się z menedżerem konta, aby uzyskać więcej informacji. Informacje o rejestracji w usłudze Ad Manager znajdziesz w Centrum pomocy Ad Managera.

Informacje o integracji z innymi platformami lub o korzystaniu z pakietów SDK IMA po stronie klienta znajdziesz w artykule Pakiety SDK Interactive Media Ads.

Omówienie dynamicznego wstawiania reklam w CAF

Implementacja DAI za pomocą pakietu IMA CAF DAI SDK obejmuje 2 główne komponenty, które opisujemy w tym przewodniku:

  • StreamRequest: obiekt, który definiuje żądanie strumienia do serwerów reklamowych Google. Żądania strumienia występują w 2 głównych odmianach:

    • LiveStreamRequest: określa klucz zasobu oraz inne opcjonalne parametry.
    • VODStreamRequest: określa identyfikator źródła treści, identyfikator filmu oraz inne opcjonalne parametry.
    • Oba typy żądań mogą opcjonalnie zawierać klucz interfejsu API potrzebny do uzyskania dostępu do określonych strumieni oraz kod sieci Google Ad Managera, który umożliwia pakietowi IMA SDK obsługę identyfikatorów reklam zgodnie z ustawieniami Google Ad Managera.
  • StreamManager: obiekt, który obsługuje komunikację między strumieniem wideo a pakietem IMA DAI SDK, np. uruchamia pingi śledzące i przekazuje zdarzenia strumienia do wydawcy.

Wymagania wstępne

Konfigurowanie obiektów MediaInfo nadawcy

Najpierw skonfiguruj obiekt MediaInfo aplikacji nadawcy, aby zawierał te pola:

contentId Unikalny identyfikator tego elementu multimedialnego.
contentUrl Adres URL strumienia zastępczego, który ma zostać wczytany, jeśli żądanie DAI StreamRequest nie powiedzie się z jakiegokolwiek powodu.
streamType W przypadku transmisji na żywo ta wartość powinna być ustawiona na `LIVE`. W przypadku transmisji VOD ta wartość powinna być ustawiona na `BUFFERED`.
customData assetKey Tylko transmisje na żywo. Identyfikuje transmisję na żywo, która ma zostać wczytana.
contentSourceId Tylko strumienie VOD. Identyfikuje kanał multimedialny zawierający żądany strumień.
videoId Tylko strumienie VOD. Identyfikuje żądany strumień w określonym pliku danych multimedialnych.
networkCode (Opcjonalnie) Kod sieci Google Ad Managera.
ApiKey Opcjonalny klucz interfejsu API, który może być wymagany do pobrania adresu URL strumienia z pakietu IMA DAI SDK.
senderCanSkip Wartość logiczna, która informuje odbiorcę, czy urządzenie wysyłające może wyświetlać przycisk pominięcia, co umożliwia obsługę reklam możliwych do pominięcia.

Aby skonfigurować te wartości w narzędziu do dowodzenia i kontroli przesyłania, kliknij kartę Load Media (Wczytaj multimedia) i ustaw niestandardowy typ żądania wczytania na LOAD. Następnie zastąp dane JSON w obszarze tekstowym jednym z tych obiektów JSON:

NA ŻYWO

{
  "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"
}

VOD

{
  "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"
}

Ten niestandardowy obiekt żądania wczytania można wysłać do odbiornika, aby przetestować kolejne kroki.

Tworzenie podstawowego odbiornika CAF

Postępując zgodnie z przewodnikiem po podstawowym odbiorniku CAF SDK, utwórz podstawowy odbiornik internetowy.

Kod odbiornika powinien wyglądać tak:

<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>

Importowanie pakietu IMA DAI SDK i pobieranie menedżera odtwarzacza

Dodaj tag skryptu, aby zaimportować pakiet IMA DAI SDK dla CAF do odbiornika internetowego, zaraz po skrypcie wczytującym CAF. Pakiet CAF DAI SDK jest zawsze aktualny, więc nie trzeba ustawiać konkretnej wersji. Następnie w tagu skryptu, który następuje po nim, zapisz kontekst odbiornika i menedżera odtwarzacza jako stałe przed uruchomieniem odbiornika.

<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>

Inicjowanie menedżera strumieni IMA

Zainicjuj menedżera strumieni w pakiecie SDK CAF DAI.

<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>

Tworzenie przechwytywacza wiadomości o wczytywaniu

Pakiet CAF DAI SDK używa przechwytywacza wiadomości wczytywania CAF do wysyłania żądań strumienia i zastępowania adresu URL treści ostatecznym strumieniem DAI. Przechwytywacz wiadomości wywołuje funkcję streamManager.requestStream(), która obsługuje ustawianie przerw na reklamę, wysyłanie żądania strumienia i zastępowanie istniejącego elementu contentURL.

Może być tylko jeden obiekt przechwytujący komunikaty o wczytywaniu, więc jeśli Twoja aplikacja wymaga użycia takiego obiektu, musisz uwzględnić wszystkie funkcje niestandardowe w tym samym wywołaniu zwrotnym.

<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>

Tworzenie żądania strumienia

Aby dokończyć integrację DAI z CAF, musisz utworzyć żądanie strumienia, korzystając z danych zawartych w obiekcie mediaInfo od nadawcy.

<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>

Możesz teraz wysyłać żądania strumieni DAI i odtwarzać je za pomocą pakietu SDK CAF DAI od Google. Aby dowiedzieć się więcej o zaawansowanych funkcjach pakietu SDK, zapoznaj się z innymi przewodnikami lub pobierz przykładowe aplikacje odbiornika.