Interfejs Dynamic Ad Insertion API dla transmisji na żywo

Interfejs Google DAI API umożliwia implementowanie strumieni z funkcją DAI w środowiskach, w których implementacja pakietu IMA SDK nie jest obsługiwana. Zalecamy dalsze korzystanie z IMA SDK na platformach, które obsługują pakiet IMA SDK.

Interfejsu DAI API zalecamy na tych platformach:

  • Samsung Smart TV (Tizen)
  • LG TV
  • HbbTV
  • Xbox (aplikacje JavaScript)
  • KaiOS

Obsługuje on podstawowe funkcje pakietu IMA DAI SDK. Jeśli masz pytania dotyczące zgodności lub obsługiwanych funkcji, skontaktuj się ze swoim opiekunem klienta w Google.

Implementowanie interfejsu DAI API w transmisjach NA ŻYWO

Interfejs DAI API obsługuje strumienie linearne (LIVE) korzystające zarówno z protokołów HLS, jak i DASH. Kroki opisane w tym przewodniku dotyczą obu protokołów.

Aby zintegrować z aplikacją interfejs API na potrzeby transmisji na żywo:

1. Wysyłanie prośby o przesłanie strumienia

Aby wysłać żądanie transmisji na żywo do interfejsu DAI API, wykonaj wywołanie POST do punktu końcowego strumienia. Odpowiedź JSON zawiera plik manifestu strumienia oraz powiązane punkty końcowe i wartości interfejsu DAI API.

Przykładowy tekst żądania

https://dai.google.com/linear/v1/dash/event/0ndl1dJcRmKDUPxTRjvdog/stream

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

Przykładowa treść odpowiedzi

{
"stream_id":"c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL",
"stream_manifest":"https://dai.google.com/linear/dash/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/manifest.mpd",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/",
"metadata_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session",
"polling_frequency":10
}

Odpowiedź dotycząca błędu

W przypadku błędów zwracane są standardowe kody błędów HTTP bez treści odpowiedzi JSON.

Przeanalizuj odpowiedź JSON i zapisz te wartości:

stream_id
Ta wartość może służyć do identyfikowania zwróconego strumienia.
stream_manifest
Ten URL jest przekazywany do odtwarzacza w celu odtworzenia strumienia.
media_verification_url
Ten URL to podstawowy punkt końcowy do śledzenia zdarzeń odtwarzania.
metadata_url
Ten URL służy do wyszukiwania okresowych informacji o nadchodzących zdarzeniach transmisji.
session_update_url
Ten adres URL służy do aktualizowania parametrów żądania strumienia wysyłanych w trakcie początkowego żądania strumienia. Pamiętaj, że parametry tego żądania zastępują wszystkie parametry ustawione dla wcześniejszego strumienia.
polling_frequency
Częstotliwość (w sekundach) wysyłana do zaktualizowanych metadanych AdBreak za pomocą interfejsu DAI API.

2. Ankieta dotycząca nowych metadanych przerwy na reklamę

Ustaw licznik czasu do przeprowadzenia ankiety pod kątem nowych metadanych przerwy na reklamę z częstotliwością odpytywania z użyciem adresu URL metadanych. Jeśli nie podasz go w odpowiedzi strumienia, domyślny zalecany interwał to 10 sekund.

Przykładowy tekst żądania

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata

Przykładowa treść odpowiedzi

{
   "tags":{
      "google_0492266569":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"firstquartile"
      },
      "google_1560331148":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"thirdquartile"
      },
      "google_1877686714378797835":{
         "ad":"0000229836_slate",
         "ad_break_id":"0000229836",
         "type":"progress"
      },
      "google_1vRyQBYPw_7Gg3MrZ6S5EjmV9aLje-YpW8QHed1DSlU":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"progress"
      },
      "google_2032765498":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"midpoint"
      },......
      "google_5646900623":{
         "ad":"0000229837_ad1",
         "ad_break_id":"0000229837",
         "type":"complete"
      }
   },
   "ads":{
      "0000229834_ad1":{
         "ad_break_id":"0000229834",
         "position":1,
         "duration":15.01,
         "title":"truman-e2e-creativeset4",
         "description":"truman-e2e-creativeset4 ad",
         "ad_system":"GDFP",
         "ad_id":"39066884",
         "creative_id":"58092079124",
         "clickthrough_url":"https://pubads.g.doubleclick.net/pcs/click?xai=AKAO...\u0026adurl=http://google.com",
         "universal_ad_id":{
            "id_value":"58092079124",
            "id_registry":"GDFP"
         }
      },
      "0000229834_slate":{
         "ad_break_id":"0000229834",
         "position":-1,
         "duration":14.974977777,
         "slate":true
      },...
   },
   "ad_breaks":{
      "0000229834":{
         "type":"mid",
         "duration":15.01,
         "expected_duration":29.984977776999997,
         "ads":1
      },....
   }
}

3. Odsłuchiwanie zdarzeń ID3 i śledzenie zdarzeń odtwarzania

Aby sprawdzić, czy w strumieniu wideo wystąpiły określone zdarzenia, wykonaj te czynności dotyczące obsługi zdarzeń ID3:

  1. Zdarzenia multimedialne możesz zapisywać w kolejce, zapisując każdy identyfikator multimediów wraz z sygnaturą czasową (jeśli zostaną wyświetlone przez odtwarzacz).
  2. Przy każdej aktualizacji z odtwarzacza lub z ustawioną częstotliwością (zalecaną 500 ms) sprawdź kolejkę zdarzeń multimedialnych pod kątem ostatnio odtwarzanych zdarzeń, porównując sygnatury czasowe zdarzeń z suwakiem odtwarzania.
  3. W przypadku zdarzeń multimedialnych, w których przypadku masz pewność, że zostały odtworzone, możesz wyszukać identyfikator multimediów w zapisanych tagach przerw na reklamę. Pamiętaj, że przechowywane tagi zawierają tylko prefiks identyfikatora mediów, więc dokładne dopasowanie nie jest możliwe.
  4. Zdarzenia „postępu” pozwalają śledzić, czy użytkownik znajduje się w przerwie na reklamę. Nie wysyłaj tych zdarzeń do punktu końcowego weryfikacji multimediów. W przypadku innych typów zdarzeń dołącz identyfikator mediów do punktu końcowego weryfikacji multimediów i wyślij żądanie GET o śledzenie odtwarzania.
  5. Usuń zdarzenie multimediów z kolejki.

Przykładowy tekst żądania

https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/

Przykładowe odpowiedzi

Accepted for asynchronous verification - HTTP/1.1 202 Accepted
Successful empty response - HTTP/1.1 204 No Content
Media verification not found - HTTP/1.1 404 Not Found
Media verification sent by someone else - HTTP/1.1 409 Conflict

Zdarzenia śledzenia możesz zweryfikować w Monitorze aktywności w strumieniu.

4. Zaktualizuj parametry sesji transmisji na żywo

Warto dostosować parametry sesji po utworzeniu strumienia. Aby to zrobić, wyślij żądanie na adres URL aktualizacji sesji.

Przykładowy tekst żądania

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

Przykładowa treść odpowiedzi

Successful response would be to look for - HTTP/1.1 200

Ograniczenia

Jeśli używasz interfejsu API w komponencie WebView, kierowanie podlega tym ograniczeniom:

  • Klient użytkownika: parametr klienta użytkownika jest przekazywany jako wartość specyficzna dla przeglądarki, a nie jako bazowa platforma.
  • rdid, idtype, is_lat: identyfikator urządzenia nie jest prawidłowo przekazywany, co ogranicza możliwości tych funkcji:
    • ograniczenia liczby wyświetleń,
    • sekwencyjna rotacja reklam;
    • Segmentacja odbiorców i kierowanie reklam

Sprawdzone metody

Pamiętaj, że punkt końcowy metadanych dla indeksów transmisji na żywo opiera się na prefiksie odpowiedniego tagu ID3. Zaprojektowano to z myślą o zapobieganiu wykorzystywaniu punktu końcowego metadanych do natychmiastowego pingowania wszystkich węzłów weryfikacyjnych.

Dodatkowe zasoby