Anzeigen mit Timing-Metadaten für Anzeigenblöcke einfügen

In dieser Anleitung wird beschrieben, wie Sie mit der Methode „Ad pod Timing Metadata“ (ATM) Anzeigen-Pods einfügen, um die genaue Zeit und Dauer von Werbeunterbrechungen, einschließlich Pre-Roll-Anzeigen, abzurufen.

Wenn Sie Pre-Roll-Anzeigen einfügen und die Rückkehr zum Inhalt nach Mid-Roll-Werbeunterbrechungen verwalten möchten, empfehlen wir, die folgenden APIs aufzurufen:

Bei Livestream-Ereignissen mit hoher Parallelität empfehlen wir optional, die Early Ad Break Notification (EABN) API aufzurufen, um Anzeigenentscheidungen vor Beginn der Werbeunterbrechung zu planen.

Vorbereitung

Zuerst benötigen Sie ein Livestream-Ereignis, das für die dynamische Anzeigenbereitstellung (DAI) vom Typ Pod-Auslieferungs-Weiterleitung eingerichtet ist. Sie haben folgende Möglichkeiten:

Contentstream abrufen

Wenn ein Nutzer ein Livestream-Event auswählt, sendet die Client-App eine Streamanfrage an Google Ad Manager. In der Streamantwort extrahiert die App die Google DAI-Sitzungs-ID und die Metadaten, die in die Streammanifestanfrage aufgenommen werden sollen.

Im folgenden Beispiel wird eine Google DAI-Sitzungs-ID an einen Manifest-Manipulator übergeben:

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

Speichern Sie beim Verarbeiten der Anfrage zur Wiedergabe von Videoinhalten die Google DAI-Sitzungs-ID und CUSTOM_ASSET_KEY aus der Anfrage, um die Anzeigenzusammenführung vorzubereiten.

Timing-Metadaten für Anzeigen-Pods abrufen

So rufen Sie das Timing von Anzeigen-Pods ab:

  1. HMAC-Token generieren
  2. Rufen Sie die ATM API mit dem HMAC-Token auf.

Timing-Metadaten für Pre-Roll-Anzeigen anfordern

Prüfen Sie die Einstellungen für Pre-Rolls für Ihr Livestream-Event mit den folgenden Optionen:

Wenn Sie die Ergebnisse der Entscheidung über Pre-Roll-Anzeigen abrufen möchten, senden Sie eine Anfrage an die ATM API.

Im folgenden Beispiel wird eine ATM-Anfrage für Pre-Roll-Anzeigen gestellt:

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"

Timing-Metadaten für Mid-Roll-Anzeigen anfordern

So rufen Sie Metadaten für Anzeigen-Pods für Mid-Rolls ab:

  1. Das Livestream-Manifest wird geparst, um die Anzeigenmarkierungen zu finden, die die Zeitangaben und die Dauer der einzelnen Mid-Roll-Werbeunterbrechungen enthalten.
  2. Rufen Sie den ATM API-Endpunkt auf, um die genaue Dauer des Anzeigen-Pods und des Slates anzufordern. Die API gibt ein JSON-Objekt mit den Entscheidungsergebnissen des Ad-Pods zurück.

Im folgenden Beispiel wird eine ATM-Anfrage für Mid-Roll-Anzeigen gestellt:

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"

Bei erfolgreicher Ausführung wird eine Ausgabe ähnlich dem folgenden JSON-Objekt angezeigt:

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

Anzeigen in das Contentmanifest einfügen

In den folgenden Abschnitten erfahren Sie, wie Sie das Livestream-Manifest ändern und die Anzeigensegmente hinzufügen.

Segmente für Werbeunterbrechungen identifizieren und Diskontinuitäten einfügen

Suchen Sie beim Verarbeiten jedes Variantenmanifests nach den Tags EXT-X-CUE-IN und EXT-X-CUE-OUT in Ihrem Stream, die den Beginn und das Ende einer Werbeunterbrechung angeben.

Ersetzen Sie die Tags EXT-X-CUE-IN und EXT-X-CUE-OUT durch die EXT-X-DISCONTINUITY-Elemente, damit der Client-Videoplayer zwischen Inhalten und Anzeigen wechseln kann.

Im folgenden Beispielmanifest werden die Tags EXT-X-CUE-IN und EXT-X-CUE-OUT ersetzt:

#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.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

Das folgende Beispiel zeigt ein ersetzt Manifest:

#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.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

Anzeigensegmente für die dynamische Anzeigenbereitstellung von Google sind nicht verschlüsselt. Wenn Ihre Inhalte verschlüsselt sind, entfernen Sie die Verschlüsselung, indem Sie das EXT-X-KEY:METHOD=NONE-Element vor dem ersten Anzeigensegment jeder Werbeunterbrechung einfügen. Fügen Sie am Ende der Werbeunterbrechung die Verschlüsselung wieder hinzu, indem Sie ein entsprechendes EXT-X-KEY einfügen.

Behalten Sie die Startzeit, die Dauer und den Index der bevorstehenden Werbeunterbrechung im Blick.

URLs für Anzeigensegmente erstellen

Ersetzen Sie die Inhaltssegmente zwischen den EXT-X-DISCONTINUITY-Tags durch URLs für die einzelnen Anzeigensegmente. Um zu ermitteln, wie viele Werbesegmente eingefügt werden sollen, verwenden Sie den ads.segment_durations.values in der JSON-Antwort der ATM API.

Wenn Sie vor dem Ende des Anzeigen-Pods zum Content zurückkehren möchten, z. B. wenn ein EXT-X-CUE-IN-Tag erkannt wird, muss Ihr Manifest-Manipulator der URL des finalen Anzeigensegments den Parameter d= hinzufügen. Dieser Parameter verkürzt das Segment, um die Zeitachse des Videoplayers des Clients nicht zu beeinträchtigen.

Im folgenden Beispiel wird eine Pre-Roll-Anzeigensegment-URL im Manifest zusammengestellt. Anzeigensegmente verwenden einen nullbasierten Index:

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

Im folgenden Beispiel wird eine Mid-Roll-Anzeigensegment-URL im Manifest zusammengestellt:

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

Im folgenden Beispiel werden dem Manifest Werbesegmente hinzugefügt:

#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
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

Slate-Segmente erstellen

Um die Lücke zwischen Anzeige und Inhalt zu schließen, fügen Sie Slate-Segmente ein. Verwenden Sie das slates.segment_durations.values-Array aus der JSON-Antwort der ATM API, um die Dauer der einzelnen Slate-Segmente zu ermitteln. Wiederholen Sie die Sequenz der Segmentdauern nach Bedarf, um die gesamte Werbeunterbrechung zu füllen.

Wenn Sie vor dem Ende des Anzeigen-Pods zu Inhalten zurückkehren möchten, z. B. wenn ein EXT-X-CUE-IN-Tag erkannt wird, fügen Sie der URL des finalen Slate-Segments den Parameter d= hinzu. Dieser Parameter verkürzt das Segment, um die Zeitachse des Videoplayers des Clients nicht zu beeinträchtigen. Der Wert für die d=-Parameter muss eine Ganzzahl sein, die die Dauer in Millisekunden angibt, um die das Segment gekürzt werden soll.

Im folgenden Beispiel wird ein Slate-Segment zusammengestellt:

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

Die slate/0 im Beispiel steht für die Slate-Iterationsnummer. Anhand der Kompatibilität und der Caching-Funktion des Videoplayers Ihres Kunden können Sie festlegen, ob Sie mit 0 beginnen und diese Zahl für jede Schleife des Slates erhöhen oder sie für alle Iterationen bei 0 belassen.

Zurück zum Inhalt

Nachdem alle Segmente aus dem Anzeigen-Pod eingefügt wurden, muss der Manifest-Manipulator wieder zum Contentstream wechseln. Wählen Sie eine der folgenden Methoden aus, um zum Contentstream zurückzukehren. Für jede Methode ist ein abschließendes Segment zur Neuausrichtung erforderlich, damit die Stream-Zeitachse korrekt bleibt.

Fill and Re-align (Füllen und neu ausrichten): Fügen Sie die Slate-Segmente ein und wiederholen Sie die Slate. Geben Sie die Dauer an und fügen Sie zwischen den einzelnen Slate-Wiederholungen EXT-X-DISCONTINUITY-Elemente ein. Hängen Sie für das letzte Segment den Parameter d= in Millisekunden an, damit er mit dem Inhaltsstart übereinstimmt.

Sofortige Rückkehr: Fügen Sie mit dem Parameter d= ein einzelnes Segment für die Neuausrichtung ein und fahren Sie dann mit dem Inhalt fort.

Der Videoplayer wechselt zurück zum Inhalt, ohne dass sich die Zeitachse ändert.

Im folgenden Beispiel wird ein Übergang erstellt, indem der Rest der Werbeunterbrechungsdauer mit Slate-Segmenten gefüllt wird.

#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&d=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

Bei dieser Methode wird das Slate vom Manifest-Manipulator nach Bedarf wiederholt und der d=-URL-Parameter wird nur an das letzte Slate-Segment angehängt. Dieser Prozess stimmt genau mit dem geplanten Start der zugrunde liegenden Inhalte überein.

Im folgenden Beispiel wird gezeigt, wie Sie ein einzelnes Slate-Segment mit dem Parameter d= verwenden, um die Zeitachse des Players korrekt zu halten, wenn Sie die gesamte verbleibende Pause nicht mit wiederholten Slates füllen.

#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&d=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

Optional: Werbeunterbrechung planen

Um Ihre Ausführungsrate zu erhöhen, senden Sie eine Early Ad Break Notification (EABN) mit der Dauer des Anzeigen-Pods, benutzerdefinierten Targeting-Parametern und SCTE-35-Signaldaten. Weitere Informationen finden Sie unter Benachrichtigungen über bevorstehende Werbeunterbrechungen senden.