Wstawianie reklam z metadanymi czasu trwania bloku reklamowego

Z tego przewodnika dowiesz się, jak wstawiać przerwy na reklamę za pomocą metody Ad pod Timing Metadata (ATM), aby pobierać dokładny czas i czas trwania przerw na reklamę, w tym reklam przed filmem.

Aby wstawiać reklamy przed filmem i zarządzać powrotem do treści po przerwach na reklamy w trakcie filmu, zalecamy wywoływanie tych interfejsów API:

W przypadku transmisji na żywo o dużej liczbie jednoczesnych wyświetleń zalecamy wywoływanie interfejsu API Early Ad Break Notification (EABN), aby zaplanować decyzje dotyczące reklam przed rozpoczęciem przerwy na reklamę.

Wymagania wstępne

Na początek musisz skonfigurować zdarzenie transmisji na żywo dla typu dynamicznego wstawiania reklam (DAI) Wyświetlanie bloków reklamowych przekierowanie. Wybierz jedną z tych metod:

Pobieranie strumienia treści

Gdy użytkownik wybierze wydarzenie z transmisją na żywo, aplikacja kliencka wyśle do Google Ad Managera żądanie transmisji. W odpowiedzi strumieniowej aplikacja wyodrębnia identyfikator sesji Google DAI i metadane, aby uwzględnić je w żądaniu pliku manifestu strumienia.

W tym przykładzie identyfikator sesji Google DAI jest przekazywany do manipulatora pliku manifestu:

https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY

Podczas przetwarzania żądania odtworzenia treści wideo zapisz identyfikator sesji DAI w Google i CUSTOM_ASSET_KEY z żądania, aby przygotować się do łączenia reklam.

Pobieranie metadanych dotyczących czasu trwania bloku reklam

Aby pobrać czas trwania bloku reklamowego, wykonaj te czynności:

  1. Wygeneruj token HMAC.
  2. Wywołaj interfejs API bankomatu za pomocą tokena HMAC.

Wysyłanie prośby o metadane dotyczące czasu wyświetlania reklam przed filmem

Sprawdź ustawienia reklam przed filmem w przypadku wydarzenia na żywo, korzystając z tych opcji:

Aby pobrać wyniki decyzji dotyczącej reklamy przed filmem, wyślij żądanie do interfejsu ATM API.

Ten przykład wysyła żądanie ATM dotyczące reklam przed filmem:

curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=preroll&auth-token=your_signed_HMAC_token"

Wysyłanie prośby o metadane dotyczące czasu wyświetlania reklam w trakcie filmu

Aby pobrać metadane bloku reklamowego w przypadku reklam w trakcie filmu:

  1. Przeanalizuj manifest transmisji na żywo, aby znaleźć znaczniki reklam zawierające czas i czas trwania każdej przerwy na reklamę w trakcie filmu.
  2. Wywołaj punkt końcowy interfejsu ATM API, aby poprosić o dokładny czas trwania bloku reklamowego i slajdu. Interfejs API zwraca obiekt JSON z wynikami decyzji dotyczących bloku reklamowego.

W tym przykładzie wysyłamy żądanie ATM dotyczące reklam w trakcie filmu:

curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=AD_BREAK_ID&pd=AD_BREAK_DURATION&auth-token=your_signed_HMAC_token"

Jeśli operacja się powiedzie, zobaczysz dane wyjściowe podobne do tego obiektu JSON:

{
  "status": "final",
  "ads": [
    {
      "duration_ms": 5046,
      "variants": {
        "devrel1428000": {
          "segment_extension": "ts",
          "segment_durations": {
            "timescale": 1000,
            "values": [
              5045
            ]
          }
        },
        "devrel1928000": {
          "segment_extension": "ts",
          "segment_durations": {
            "timescale": 1000,
            "values": [
              5045
            ]
          }
        }
      }
    }
  ],
  "slate": {
    "duration_ms": 0,
    "variants": {
      "devrel1428000": {
        "segment_extension": "ts",
        "segment_durations": {
          "timescale": 1000,
          "values": [
            5005,
            ...
            5046
          ]
        }
      },
      "devrel1928000": {
        "segment_extension": "ts",
        "segment_durations": {
          "timescale": 1000,
          "values": [
            5005,
            ...
            5046
          ]
        }
      }
    }
  }
}

Wstawianie reklam do manifestu treści

W sekcjach poniżej znajdziesz instrukcje, jak zmodyfikować manifest transmisji na żywo i dodać segmenty reklam.

Określanie segmentów przerw na reklamy i wstawianie nieciągłości

Podczas przetwarzania każdego pliku manifestu odmiany zidentyfikuj w strumieniu tagi EXT-X-CUE-INEXT-X-CUE-OUT, które wskazują początek i koniec bloku reklamowego.

Zastąp tagi EXT-X-CUE-INEXT-X-CUE-OUT elementami EXT-X-DISCONTINUITY, aby odtwarzacz wideo klienta mógł przełączać się między treściami a reklamami.

W przykładzie poniżej tagi EXT-X-CUE-INEXT-X-CUE-OUT zostały zastąpione w pliku manifestu:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:17.450
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXTINF:2.450,
contentorigin.com/6.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts

Poniższy przykład przedstawia zastąpiony plik manifestu:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts

Segmenty reklam DAI w Google nie są szyfrowane. Jeśli Twoje treści są zaszyfrowane, usuń szyfrowanie, wstawiając element EXT-X-KEY:METHOD=NONE przed pierwszym segmentem reklamy w każdej przerwie na reklamę. Po zakończeniu przerwy na reklamę przywróć szyfrowanie, wstawiając odpowiedni tag EXT-X-KEY.

Śledź czas rozpoczęcia, czas trwania i indeks nadchodzącej przerwy na reklamę.

Tworzenie adresów URL segmentów reklam

Zastąp segmenty treści między tagami EXT-X-DISCONTINUITY adresami URL dla każdego segmentu reklamy. Aby określić, ile segmentów reklam należy wstawić, użyj wartości ads.segment_durations.values podanej w odpowiedzi JSON z interfejsu ATM API.

Aby wrócić do treści przed zakończeniem bloku reklamowego, np. po wykryciu tagu EXT-X-CUE-IN, manipulator manifestu musi dodać parametr sd= do adresu URL ostatniego segmentu reklamy. Ten parametr skraca segment, aby nie wpływać na oś czasu odtwarzacza wideo klienta.

W przykładzie poniżej pokazujemy, jak utworzyć adres URL segmentu reklamy przed filmem w manifeście. Pamiętaj, że segmenty reklam używają indeksu opartego na zerze:

https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/preroll/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID

W tym przykładzie pokazujemy, jak dodać do manifestu adres URL segmentu reklamy w trakcie filmu:

https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID

Poniższy przykład pokazuje, jak wstawić segmenty reklam do pliku manifestu:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/3.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts

Tworzenie segmentów planszy

Aby wypełnić lukę między reklamą a treścią, wstaw segmenty planszy. Użyj tablicy slates.segment_durations.values z odpowiedzi JSON interfejsu ATM API, aby określić czas trwania każdego segmentu bloku reklamowego. W razie potrzeby powtarzaj sekwencję czasów trwania segmentów, aby wypełnić całą przerwę na reklamy.

Aby wrócić do treści przed zakończeniem bloku reklam, np. po wykryciu tagu EXT-X-CUE-IN, dodaj parametr sd= do adresu URL końcowego segmentu slajdu. Ten parametr skraca segment, aby nie wpływać na oś czasu odtwarzacza wideo klienta. Wartość parametru sd= musi być liczbą całkowitą reprezentującą czas w milisekundach, o który należy skrócić segment.

W przykładzie poniżej pokazujemy, jak utworzyć segment slajdu:

https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID

Symbol slate/0 w przykładzie oznacza numer iteracji slajdu. Sprawdź zgodność i możliwości buforowania odtwarzacza wideo klienta, aby określić, czy zacząć od 0 i zwiększać tę liczbę w przypadku każdej pętli, czy też pozostawić ją na poziomie 0 we wszystkich iteracjach.

Zarządzanie powrotem do treści

Gdy manipulator pliku manifestu wstawi wszystkie segmenty z bloku reklamowego, musi wrócić do strumienia treści. Aby wrócić do strumienia treści, wybierz jedną z tych metod. Każda metoda wymaga końcowego segmentu ponownego wyrównania, aby zachować dokładność osi czasu strumienia.

Wypełnij i ponownie wyrównaj: wstaw segmenty tablicy i zapętl tablicę. Wypełnij czas trwania i wstaw elementy EXT-X-DISCONTINUITY między poszczególne iteracje tablicy. W przypadku ostatniego segmentu dołącz parametr sd= w milisekundach, aby dopasować go do początku treści.

Natychmiastowy powrót: wstaw pojedynczy segment tablicy ponownego wyrównania, używając parametru sd=, a następnie dodaj treść.

Odtwarzacz wraca do treści bez zmiany osi czasu.

W tym przykładzie przejście jest tworzone przez wypełnienie pozostałej części czasu trwania przerwy na reklamę segmentami planszy.

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts

W tej metodzie manipulator pliku manifestu odtwarza tablicę w pętli w razie potrzeby i dołącza parametr adresu URL sd= tylko do ostatniego segmentu tablicy. Ten proces jest dokładnie zgodny z zaplanowanym rozpoczęciem treści bazowych.

Poniższy przykład pokazuje, jak używać pojedynczego segmentu slate z parametrem sd=, aby zachować dokładność osi czasu odtwarzacza, gdy nie wypełniasz całego pozostałego bloku reklamowego zapętlonymi segmentami slate.

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts

Opcjonalnie: zaplanuj przerwę na reklamę

Aby zwiększyć współczynnik wypełnienia, wyślij powiadomienie o wczesnej przerwie na reklamę (EABN) z czasem trwania bloku reklamowego, parametrami kierowania niestandardowego i danymi sygnału SCTE-35. Więcej informacji znajdziesz w artykule Wysyłanie powiadomień o wcześniejszej przerwie na reklamy.