Interfejs Google DAI Pod Serving API umożliwia wstawianie reklam po stronie serwera przez Google Ads, zachowując kontrolę nad własnymi filmami.
Z tego przewodnika dowiesz się, jak korzystać z interfejsu Pod Serving API i osiągnąć o podobnej funkcjonalności dostępne w pakiecie IMA DAI SDK. Aby uzyskać szczegółowe informacje na temat: obsługiwane funkcje, skontaktuj się ze swoim opiekunem klienta w Google.
Interfejs Pod Serving API obsługuje strumienie wyświetlania podów w formacie HLS lub MPEG-DASH. protokoły streamingowe. Ten przewodnik skupia się na transmisjach HLS i wyróżnia najważniejsze różnic między HLS a MPEG-DASH w konkretnych krokach.
Aby zintegrować interfejs Pod Serving API z aplikacją na potrzeby strumieni VOD, wykonaj następujące kroki:
Wysyłanie żądania rejestracji strumienia do DAI pod Serving API
Wyślij żądanie POST do punktu końcowego rejestracji strumienia. Otrzymujesz z kolei Odpowiedź JSON zawierająca identyfikator strumienia, który ma zostać wysłany do manipulowania plikiem manifestu serwera i powiązanych punktów końcowych interfejsu Pod Serving API.
punkt końcowy API
POST: /ssai/pods/api/v1/network/{network_code}/custom_asset/{custom_asset}/stream
Host: dai.google.com
Content-Type: application/x-www-form-urlencoded
Parametry ścieżki
{network_code} |
Twój kod sieci w usłudze Google Ad Manager 360 |
{custom_asset} |
Niestandardowy identyfikator powiązany z tym zdarzeniem w usłudze Google Ad Manager. |
Parametry treści zakodowane w formie
Opcjonalny zestaw kodowanych wartości parametry kierowania .
Plik JSON odpowiedzi
media_verification_url |
Podstawowy adres URL do pingowania zdarzeń śledzenia odtwarzania. Pełna weryfikacja mediów Adres URL powstaje, dołączając do niego identyfikator zdarzenia reklamowego. |
metadata_url |
Adres URL żądania metadanych bloków reklamowych. |
stream_id |
Ciąg tekstowy służący do identyfikacji bieżącej sesji strumienia. |
valid_for |
Czas pozostały do wygaśnięcia bieżącej sesji strumieniowania (w języku angielskim)
Format dhms (dni, godziny, minuty, sekundy). Przykład:
2h0m0.000s oznacza czas trwania wynoszący 2 godziny.
|
valid_until |
Godzina wygaśnięcia bieżącej sesji transmisji podana w formacie ISO 8601
ciąg daty i godziny w funkcji yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm
.
|
Przykładowe żądanie (cURL)
curl -X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "cust_params=\"section%3Dsports%26page%3Dgolf%2Ctennis\"" \
https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/ext-doc-ps-redirect-hls/stream
Przykładowa odpowiedź
{
"stream_id":"9fe8fe4f-f12e-4fed-b509-0ca269bb1668:TUL",
"media_verification_url":"https://dai.google.com/.../media/",
"metadata_url":"https://dai.google.com/.../metadata",
"session_update_url":"https://dai.google.com/.../session",
"polling_frequency":10
}
W przypadku błędów zwracane są standardowe kody błędów HTTP bez odpowiedzi JSON. .
Przeanalizuj odpowiedź JSON i zapisz odpowiednie wartości.
Zażądaj pliku manifestu strumienia za pomocą manipulatora pliku manifestu
Każdy manipulator manifestu ma różne formaty żądań i odpowiedzi. Kontakt z dostawcą manipulatora, aby poznać jego wymagania. Jeśli podczas implementowania własnego manipulatora manifestu, przeczytaj manipulator manifestu , aby poznać dla tego komponentu.
Zwykle musisz przekazać identyfikator strumienia, który został zwrócony przez powyższego punktu końcowego rejestracji do manipulatora pliku manifestu, aby został on skompilowany plików manifestu w konkretnych sesjach. O ile nie podano inaczej w pliku manifestu manipulatorem, odpowiedzią na żądanie pliku manifestu będzie strumień wideo zawierający treści i reklam.
Przykładowe żądanie (cURL)
curl https://{manifest_manipulator}/video/1331997/stream/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/vod_manifest.m3u8
Przykładowa odpowiedź (HLS)
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="abcd1234_ subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
abcd1234_video-1080p.m3u8
Odtwórz transmisję
Wczytaj plik manifestu otrzymany z serwera manipulacji manifestu do pliku odtwarzacza wideo i rozpocznij odtwarzanie.
Ankieta dotycząca nowych metadanych przerwy na reklamę
Aplikacja odpowiada za pobieranie metadanych każdej przerwy na reklamę, więc
wie, które wyświetlenia muszą zostać wywołane. W tym celu skonfiguruj
minutnik na regularne sondowanie interfejsów DAI API metadata_url
pod kątem nowej reklamy
i informacjami o nich. Interwał sondowania jest określony w polling_frequency
w odpowiedzi na rejestrację strumienia.
W zamian otrzymujesz obiekt JSON zawierający te parametry:
tags |
Zestaw par klucz-wartość zawierających wszystkie zdarzenia reklamowe widoczne w
. Klucze to pierwsze 17 znaków zdarzenia reklamowego
Identyfikator widoczny w metadanych ograniczonych czasowo strumienia lub w przypadku zdarzeń
typu progress , czyli pełny identyfikator zdarzenia reklamowego.
Każda wartość jest obiektem zawierającym te parametry:
|
||||||||||||||||||
ads |
Zestaw par klucz-wartość opisujących wszystkie reklamy wyświetlane w strumieniu.
Klucze to identyfikatory reklam pasujące do wartości w obiekcie tags
wymienionych powyżej. Każda wartość jest obiektem zawierającym te parametry:
|
||||||||||||||||||
ad_breaks |
Zestaw par klucz-wartość opisujących wszystkie przerwy na reklamy pojawiające się w strumieniu.
Klucze to identyfikatory przerw na reklamę, które pasują do wartości w tabeli tags .
i ads obiektów wymienionych powyżej. Każda wartość jest obiektem
z następującymi parametrami:
|
Przechowuj te wartości po każdej ankiecie, aby powiązać zdarzenia metadanych czasowych w obrębie w Twoim strumieniu wideo.
Przykładowe żądanie (cURL)
curl https://dai.google.com/.../metadata
Przykładowa odpowiedź
{
"tags":{
"google_5555555555":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"firstquartile"
},
"google_1234567890123456789":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"progress"
},
...
},
"ads":{
"0000229834_ad1":{
"ad_break_id":"0000229834",
"position":1,
"duration":15,
"clickthrough_url":"https://.../",
...
},
...
},
"ad_breaks":{
"0000229834":{
"type":"mid",
"duration":15,
"ads":1
},
...
}
}
Nasłuchuj zdarzeń reklamowych
Nasłuchiwanie metadanych czasowych za pomocą wywołanych zdarzeń reklamy w strumieniu audio/wideo. odtwarzacza wideo.
W przypadku strumieni MPEG-TS metadane są wyświetlane w postaci tagów ID3 v2.3 wewnątrz zakresu. Każdy
tag metadanych ma identyfikator TXXX
, a wartość rozpoczyna się ciągiem google_
a po niej ciąg znaków. Ta wartość to identyfikator zdarzenia reklamowego.
Element XXX
w obiekcie TXXX
nie jest symbolem zastępczym. Ciąg TXXX
jest identyfikatorem tagu ID3.
zarezerwowane dla „tekstu definiowanego przez użytkownika”.
Przykładowy tag ID3
TXXXgoogle_1234567890123456789
W przypadku strumieni MP4 są one wysyłane jako zdarzenia emsg w paśmie, które emulują ID3 v2.3
. Każde odpowiednie pole wiadomości e-mail ma wartość scheme_id_uri
równą
https://aomedia.org/emsg/ID3
lub
https://developer.apple.com/streaming/emsg-id3
i wartość message_data
rozpoczyna się od ID3TXXXgoogle_
. Wartość message_data
, bez prefiksu
Prefiks ID3TXXX
to identyfikator zdarzenia reklamowego.
Przykładowe e-maile
Struktura danych może się różnić w zależności od biblioteki odtwarzacza.
Jeśli identyfikator zdarzenia reklamowego to google_1234567890123456789
, odpowiedź wygląda tak
to:
{
"scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
"presentation_time": 27554,
"timescale": 1000,
"message_data": "ID3TXXXgoogle_1234567890123456789",
...
}
Niektóre biblioteki odtwarzaczy multimediów automatycznie wyświetlają zdarzenia emsg, które emulują identyfikator 3 jako natywne tagi ID3. W tym przypadku strumienie MP4 mają identyczne tagi ID3. jako MPEG_TS.
Zaktualizuj interfejs użytkownika odtwarzacza wideo klienta
Każdy identyfikator zdarzenia reklamowego można dopasować do klucza w obiekcie tags
z kroku 4.
Dopasowywanie tych wartości przebiega dwuetapowo:
Sprawdź, czy w obiekcie
tags
znajduje się klucz zgodny z pełnym identyfikatorem zdarzenia reklamowego. Jeśli znajdzie dopasowanie, pobierz typ zdarzenia i powiązane z nimad
orazad_break
obiektów. Powinny one być typuprogress
.Jeśli nie znajdzie dopasowania do pełnego identyfikatora zdarzenia reklamowego, sprawdź
tags
dla klucza pasującego do pierwszych 17 znaków identyfikatora zdarzenia reklamy. Pobierz typ zdarzenia i powiązane z nim obiektyad
iad_break
. Powinno to pobrać wszystkie zdarzenia o typach innych niżprogress
.Wykorzystaj je, aby zaktualizować interfejs odtwarzacza. Na przykład, gdy otrzymasz zdarzenie
start
lub pierwszeprogress
, ukryj przewijanie przez gracza i wyświetl nakładkę z opisem bieżącej pozycji reklamy w reklamie przerwa, na przykład „Reklama 1 z 3”.
Przykładowe identyfikatory zdarzeń reklamowych
google_1234567890123456789 // Progress event ID
google_5555555555123456789 // First Quartile event ID
Przykładowy obiekt tagów
{
"google_5555555555":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"firstquartile"
},
"google_1234567890123456789":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"progress"
},
...
}
Wysyłaj pingi dotyczące weryfikacji multimediów
Ping dotyczący weryfikacji mediów musi być wysyłany do Ad Managera za każdym razem, gdy zdarzenie związane z reklamą
o typie innym niż progress
.
Aby wygenerować pełny URL do weryfikacji multimediów zdarzenia reklamowego, dołącz pełny adres URL
identyfikator zdarzenia reklamowego na wartość media_verification_url
z rejestracji strumienia
.
Utwórz żądanie GET z pełnym adresem URL. Jeśli prośba o weryfikację to
powodzenie, odpowiedź HTTP z kodem stanu 202
.
W przeciwnym razie zobaczysz kod błędu HTTP 404
.
Przykładowe żądanie (cURL)
curl https://{...}/media/google_5555555555123456789
Przykładowa odpowiedź o powodzeniu
HTTP/1.1 202 Accepted