Benutzerdefinierte Integration verwenden

Hinweise

In diesem Dokument werden nur die Wiedergabeanleitungen ohne das IMA DAI SDK behandelt.

Stellen Sie sicher, dass Sie die Schritte in VOD-Assets in Google Ad Manager (GAM) einbinden .

Wenn das IMA SDK für die gewünschte Plattform nicht verfügbar ist, benötigen Sie Anwendung zum Aufrufen der erforderlichen APIs und zum Auslösen der Überprüfungen der Anzeigenmedien selbst.

Dazu benötigen Sie die folgenden Informationen:

Standort Die Google Cloud-Region , wo die Live-Konfiguration erstellt wurde:
LOCATION
Projektnummer Die Projektnummer des Google Cloud-Projekts, in dem die Video Stitcher API verwendet wird:
PROJECT_NUMBER
OAuth-Token Das kurzlebige OAuth-Token eines Dienstkontos mit der Rolle „Video Stitcher“:
OAUTH_TOKEN

Weitere Informationen zu kurzlebige OAuth-Tokens erstellen
Netzwerkcode Ad Manager-Netzwerkcode für die Anzeigenanfrage:
NETWORK_CODE
VOD-Konfigurations-ID Die VOD-Konfigurations-ID, die du beim Erstellen des VOD-Streams angegeben hast:
VOD_CONFIG_ID

Streamregistrierungsanfrage an Ad Manager senden

Stelle eine POST-Anfrage an den Endpunkt zur Streamregistrierung. Im Gegenzug erhalten Sie Eine JSON-Antwort mit der Stream-ID, die an die Manifestbearbeitung gesendet werden soll und zugehörige Pod Serving API-Endpunkte.

API-Endpunkt

POST: /ondemand/pods/api/v1/network/NETWORK_CODE/stream_registration
Host: dai.google.com
Content-Type: application/json

Pfadparameter

NETWORK_CODE Ihr Google Ad Manager 360-Netzwerkcode

JSON-codierte Textparameter

targeting_parameters
Eine Reihe optionaler JSON-codierter Targeting-Parameter an.

Antwort (JSON)

media_verification_url Die Basis-URL, an die Wiedergabe-Tracking-Ereignisse gesendet werden. Eine vollständige Medienüberprüfung URL wird gebildet, indem eine Anzeigenereignis-ID an diese Basis-URL angehängt wird. MEDIA_VERIFICATION_URL
metadata_url Die URL, unter der Metadaten für Anzeigen-Pods angefordert werden. METADATA_URL
stream_id Der String, mit dem die aktuelle Streamsitzung identifiziert wird. STREAM_ID
valid_for Die verbleibende Zeit bis zum Ablauf der aktuellen Stream-Sitzung im Format dhms (Tage, Stunden, Minuten, Sekunden). Beispiel: 2h0m0.000s steht für eine Dauer von 2 Stunden.
valid_until Die Zeit, zu der die aktuelle Stream-Sitzung abläuft, als ISO 8601-Datum/Uhrzeit-String im yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm-Format.

Beispielanfrage (cURL)

curl -X POST \
     -H "Content-Type: application/json" \
     -d '@request.json' \
  https://dai.google.com/ondemand/pods/api/v1/network/21775744923/stream_registration

request.json

{
  "targeting_parameters": {
    "cust_params": "sport%3Dfootball%26city%3Dnewyork"
  }
}

Beispielantwort

{
  "media_verification_url": "https://dai.google.com/.../media/",
  "metadata_url": "https://dai.google.com/.../metadata",
  "stream_id": "6e69425c-0ac5-43ef-b070-c5143ba68541:CHS",
  "valid_for": "8h0m0s",
  "valid_until": "2023-03-24T08:30:26.839717986-07:00"
}

Bei Fehlern werden Standard-HTTP-Fehlercodes ohne JSON-Antworttext zurückgegeben.

Parsen Sie die JSON-Antwort und speichern Sie die relevanten Werte.

Cloud Video Stitcher-VOD-Sitzung generieren

Stellen Sie eine POST-Anfrage an den Registrierungsendpunkt der VOD-Sitzung. Im Gegenzug eine JSON-Antwort erhalten, die den URI des Streammanifests und die Metadaten enthält, zu Werbeunterbrechungen, Anzeigen und Werbeereignissen.

API-Endpunkt

POST: /v1/projects/PROJECT_NUMBER/locations/LOCATION/vodSessions/
Host: videostitcher.googleapis.com
Authorization: Bearer OAUTH_TOKEN
Content-Type: application/json

Pfadparameter

PROJECT_NUMBER Ihre Google Cloud-Projektnummer.
LOCATION Ihre Google Cloud-Region.
NETWORK CODE Ihren Google Ad Manager 360-Netzwerkcode

JSON-codierte Textparameter

vodConfig Ein String mit deiner Projektnummer, deinem Speicherort und der VOD-Konfigurations-ID im folgenden Format:
projects/PROJECT_NUMBER/locations/LOCATION/vodConfigs/VOD_CONFIG_ID
adTracking Setzen Sie den Wert auf "CLIENT", um das clientseitige Tracking zu aktivieren.
gamSettings Ein Objekt, das den Netzwerkcode und stream id mit folgendem Format:
{
  "networkCode":"NETWORK_CODE",
  "streamId":"STREAM_ID"
}
      

Antwort (JSON)

name Der Name der VOD-Sitzung, der die Sitzungs-ID enthält.
playUri Der URI des zusammengefügten Stream-Manifests, das zur Wiedergabe in deinen Videoplayer geladen werden soll.
SESSION_PLAYBACK_URI
adTracking Derselbe adTracking-Wert, der in der Anfrage an die API gesendet wird Textkörper.
vodConfig Derselbe vodConfig-String, der in der Anfrage an die API gesendet wird Textkörper.
gamSettings Das gamSettings-Objekt, das im Anfragetext an die API gesendet wurde.

Beispielanfrage (cURL)

curl -X POST \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer OAUTH_TOKEN" \
     -d '@request.json' \
  https://videostitcher.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/vodSessions/

request.json

{
  "vod_config": "projects/PROJECT_NUMBER/locations/LOCATION/vodConfigs/VOD_CONFIG_ID",
  "ad_tracking": "CLIENT",
  "gam_settings": {
    "network_code": "NETWORK_CODE",
    "stream_id": "STREAM_ID"
  }
}

Beispielantwort

{
  "name": "projects/.../vodSessions/4a703a1f-5f48-4147-9738-c7d4c7b70e7f",
  "playUri": "https://videostitcher.googleapis.com/.../manifest.m3u8",
  "sourceUri": "https://storage.googleapis.com/.../hls.m3u8",
  "adTagUri": "https://pubads.g.doubleclick.net/gampad/ads?...",
  "vodConfig": "projects/...",
  "assetId":   "63b94af2767e17e5c975f8d7d2b15c0d0b0320a17c3d7ac8a3f6d4e0c165b9e5",
  "adTracking": "CLIENT",
  "gam_settings": {
    "network_code": "21775744923",
    "stream_id": "6e69425c-0ac5-43ef-b070-c5143ba68541:CHS"
  }
}

Nachdem die Antwort empfangen wurde, kannst du den mit Anzeigen zusammengefügten Livestream abspielen, indem du auf den URI aus dem Feld playUri des Antwortobjekts verweist.

Metadaten für Anzeigen-Pods von Ad Manager anfordern

Sende eine GET-Anfrage an die metadata_url, die du bei der Registrierung deines Streams in Ad Manager erhalten hast. Dieser Schritt muss erfolgen, nachdem Sie das Dokument Manifest aus Wiedergabe-URI angehängt.

Du erhältst ein JSON-Objekt, das die Werbeunterbrechungen, Anzeigen und Anzeigenereignisse des Streams beschreibt.

API-Endpunkt

GET: METADATA_URL
Host: dai.google.com

Antwort (JSON)

tags Eine Reihe von Schlüssel/Wert-Paaren, die Ereignisse für Anzeigenmedien beschreiben, die im Stream auftreten. Jeder Schlüssel besteht entweder aus den ersten 17 Zeichen einer Anzeigenmedium-ID, die in den ID3-Metadaten des Streams enthalten ist, oder, im Fall von Fortschrittsereignissen, aus der gesamten Anzeigenmedium-ID. Jeder Wert ist ein mit den folgenden Eigenschaften:
  • ad: Die ID der Anzeige, die das Ereignis „Anzeigenmedien“ enthält.
  • ad_break_id: Die ID der Werbeunterbrechung, die das Anzeigen-Medienereignis enthält.
  • type: Der Typ des Anzeigenmedienereignisses. Werte können einen der folgenden Werte haben:
    • start – Die Anzeige wurde gestartet
    • firstquartile – Die Anzeige ist zu 25 % fertig.
    • midpoint: Die Anzeige ist zu 50% fertig.
    • thirdquartile: Die Anzeige ist zu 75% fertig.
    • complete – Die Anzeige ist zu Ende.
    • progress – wird jede Sekunde ausgelöst, während eine Anzeige wiedergegeben wird.
ads Eine Reihe von Schlüssel/Wert-Paaren, die Anzeigen beschreiben, die im Stream erscheinen. Jeder Schlüssel ist eine Anzeigen-ID. Jeder Wert ist ein Objekt mit Eigenschaften:
  • ad_break_id: Die ID der Werbeunterbrechung, die das Anzeigen-Medienereignis enthält.
  • position: die Position der Anzeige innerhalb der Werbeunterbrechung. Die erste Anzeige in einer Werbeunterbrechung hat die Position 1.
  • duration: Dauer der Anzeige als Gleitkommazahl Sekunden.
  • title: Der Titel der Anzeige, wie im VAST-Dokument definiert.
  • description: die Beschreibung der Anzeige, wie in den den VAST-Code.
  • ad_system: das in der VAST-Definition definierte Anzeigensystem
  • ad_system: die Anzeigen-ID, wie im VAST-Dokument definiert.
  • ad_system: Die Creative-ID, wie im VAST-Dokument definiert.
  • clickthrough_url: Die URL, die geöffnet wird, wenn ein Nutzer mit der Anzeige interagiert.
  • universal_ad_id: ein Objekt, das das universelle Anzeigen-ID, wie in der VAST-Definition definiert.
ad_breaks Eine Reihe von Schlüssel/Wert-Paaren, die auftretende Werbeunterbrechungen beschreiben im Stream erscheinen können. Jeder Schlüssel ist eine Werbeunterbrechungs-ID. Jeder Wert ist ein Objekt mit den folgenden Properties:
  • type: Der Typ der Werbeunterbrechung. Folgende Werte sind zulässig:
    • pre: Stellt eine Pre-Roll-Anzeige dar.
    • mid: Stellt eine Mid-Roll-Anzeige dar.
    • post: Steht für eine Post-Roll-Anzeige.
  • duration: Die Dauer der Werbeunterbrechung in Gleitkommasekunden.
  • expected_duration: die erwartete Dauer der Anzeige wird in Gleitkommasekunden unterbrochen.
  • ads: Die Anzahl der in der Werbeunterbrechung enthaltenen Anzeigen.

Beispielanfrage (cURL)

curl METADATA_URL

Beispiel für eine JSON-Antwort

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

Speichere diese Werte, um sie mit getakteten Metadatenereignissen in deinem Videostream zu verknüpfen.

ID3-Ereignisse erfassen und Wiedergabeereignisse protokollieren

So überprüfen Sie, ob bestimmte Ereignisse in einem Videostream aufgetreten sind: Schritte zur Verarbeitung von ID3-Ereignissen:

  1. Speichere die Medienereignisse in einer Warteschlange und speichere jede Medien-ID zusammen mit ihrem Zeitstempel, sofern sie vom Player angezeigt wird.
  2. Prüfe bei jeder Aktualisierung durch den Player oder in einem festgelegten Intervall (500 ms empfohlen) die Warteschlange der Medienereignisse auf kürzlich wiedergegebene Ereignisse, indem du die Ereigniszeitstempel mit der Wiedergabeposition vergleichst.
  3. Bei Medienereignissen, deren Wiedergabe Sie bestätigen, können Sie den Typ prüfen, indem Sie Media-ID in den gespeicherten Tags für Werbeunterbrechungen Die Tags für Werbeunterbrechungen enthält nur eine verkürzte Version der Medien-ID, die auf das Attribut die ersten zehn Ziffern nach dem Präfix „google_“ stehen, sodass es keine direkte Übereinstimmung gibt. zwischen ID3-Medienüberprüfungs-IDs und -Schlüsseln im Tag-Objekt. Damit möchten wir Verhindern, dass vor dem ID3-Ereignis Pings zur Überprüfung von Ereignissen gesendet werden kommt. Wenn du die vollständige URL für die Mediaüberprüfung eines Anzeigenereignisses generieren möchtest, füge dem Wert „media_verification_url“ aus der Antwort auf die Streamerstellung die vollständige Anzeigenereignis-ID an.
  4. Mit „progress“-Ereignissen kannst du verfolgen, ob sich ein Nutzer in einer Werbeunterbrechung befindet. Senden Sie diese Ereignisse nicht an den Endpunkt der Medienüberprüfung, um HTTP-Anfragen zu vermeiden. Fehlercode angezeigt. Fügen Sie bei anderen Ereignistypen die Medien-ID an die URL für die Medienüberprüfung an und senden Sie einen GET-Aufruf, um die Wiedergabe zu erfassen.
  5. Entferne das Medienereignis aus der Warteschlange.

API-Endpunkt

GET: MEDIA_VERIFICATION_URLAD_MEDIA_ID
Host: dai.google.com

Pfadparameter

MEDIA_VERIFICATION_URL Der vom Streamregistrierungsendpunkt zurückgegebene Wert in der Feld media_verification_url:
MEDIA_VERIFICATION_URL
AD_MEDIA_ID Die vollständige ID des Anzeigenmediums, wie sie in den ID3-Metadaten des Streams angezeigt wird:
AD_MEDIA_ID

Erwartete Rückgabewerte

HTTP/1.1 204 No Content Erfolgreiche leere Antwort.
HTTP/1.1 404 Not Found Die Bestätigungs-ID für Medien wurde nicht erkannt.
HTTP/1.1 409 Conflict Die Media-Bestätigungs-ID wurde bereits gesendet.

Beispielanfrage (cURL)

curl MEDIA_VERIFICATION_URLAD_MEDIA_ID

Beispielantwort

HTTP/1.1 204 No Content

Beschränkungen

Bei Verwendung der API in WebViews gelten die folgenden Einschränkungen in Bezug auf Ausrichtung hinzufügen:

  • UserAgent: Der User-Agent-Parameter wird als browserspezifischer Wert übergeben. statt auf die zugrunde liegende Plattform.
  • rdid, idtype, is_lat: Die Geräte-ID wird nicht korrekt übergeben. schränkt die Funktionalität der folgenden Funktionen ein:
    • Frequency Capping
    • Sequenzielle Anzeigenrotation
    • Zielgruppensegmentierung und -ausrichtung