In dieser Anleitung wird beschrieben, wie Sie Werbeunterbrechungen mit der Methode „Anzeigen-Pod Timing Metadata“ (ATM) einfügen, um die genaue Zeit und Dauer für Werbeunterbrechungen, einschließlich Pre-Roll-Anzeigen, abzurufen.
Wenn Sie Pre-Roll-Anzeigen einfügen und die Rückkehr zum Content nach Mid-Roll-Werbeunterbrechungen verwalten möchten, empfehlen wir, die folgenden APIs aufzurufen:
- Ad pod Timing Metadata (ATM) API: Abfrage der Ergebnisse von Entscheidungen zu Anzeigen-Pods, einschließlich der Dauer von Anzeigen und Slates.
- Endpunkt für Anzeigensegmente : Anfordern von Anzeigen- oder Slate-Segmenten mit der Option, die aktuelle Werbeunterbrechung zu beenden .
Optional empfehlen wir für Livestream-Ereignisse mit hoher Parallelität, die Early Ad Break Notification (EABN) API aufzurufen, um Anzeigenentscheidungen vor Beginn der Werbeunterbrechung zu planen.
Vorbereitung
Für den Einstieg benötigen Sie ein Livestream-Ereignis, das für den Typ der dynamischen Anzeigenbereitstellung Pod serving redirect eingerichtet ist. Sie haben folgende Möglichkeiten:
- Ad Manager-UI: Richten Sie einen Livestream für die dynamische Anzeigenbereitstellung ein.
- Ad Manager API: Verwenden Sie eine Clientbibliothek (verfügbare
Optionen), um die
LiveStreamEventService.createLiveStreamEventsMethode aufzurufen. Legen Sie denLiveStreamEvent.dynamicAdInsertionTypeParameter aufPOD_SERVING_REDIRECTfest.
Contentstream abrufen
Wenn ein Nutzer ein Livestream-Ereignis 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 Stream-Manifestanfrage 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 Wiedergabeanfrage für Videocontent die Google DAI-Sitzungs ID und CUSTOM_ASSET_KEY aus der Anfrage, um die Anzeigenzusammenführung vorzubereiten.
Metadaten für die Zeitplanung von Anzeigen-Pods abrufen
So rufen Sie die Zeitplanung für Anzeigen-Pods ab:
- Generieren Sie ein HMAC-Token.
- Rufen Sie die ATM API mit dem HMAC-Token auf.
Zeitplanungsmetadaten für Pre-Roll-Anzeigen anfordern
Prüfen Sie die Pre-Roll-Einstellungen für Ihr Livestream-Ereignis mit den folgenden Optionen:
Wenn Sie die Ergebnisse der Entscheidungen zu 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"
Zeitplanungsmetadaten für Mid-Roll-Anzeigen anfordern
So rufen Sie Anzeigen-Pod-Metadaten für Mid-Rolls ab:
- Analysieren Sie das Livestream-Manifest, um die Anzeigenmarker zu finden, die die Zeit und Dauer für jede Mid-Roll-Werbeunterbrechung enthalten.
- 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 der Werbeunterbrechung 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 Erfolg 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 wird beschrieben, wie Sie das Livestream-Manifest ändern und die Anzeigensegmente hinzufügen.
Segmente für Werbeunterbrechungen identifizieren und Unterbrechungen einfügen
Identifizieren Sie beim Verarbeiten der einzelnen Manifestvarianten die 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 Elemente EXT-X-DISCONTINUITY, damit der Client-Videoplayer zwischen Content und Anzeigen wechseln kann.
Im folgenden Beispiel werden die Tags EXT-X-CUE-IN und EXT-X-CUE-OUT im Manifest 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:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#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/6.mp4
#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 Ihr Content verschlüsselt ist, entfernen Sie die Verschlüsselung, indem Sie vor dem ersten Anzeigensegment jeder Werbeunterbrechung das Element EXT-X-KEY:METHOD=NONE einfügen. Fügen Sie am Ende der Werbeunterbrechung die Verschlüsselung wieder hinzu, indem Sie ein entsprechendes EXT-X-KEY einfügen.
Notieren Sie sich die Startzeit, Dauer und den Index der bevorstehenden Werbeunterbrechung.
URLs für Anzeigensegmente erstellen
Ersetzen Sie die Contentsegmente zwischen den Tags EXT-X-DISCONTINUITY durch URLs für die einzelnen Anzeigensegmente. Wie viele Anzeigensegmente eingefügt werden sollen, können Sie anhand von ads.segment_durations.values in der JSON-Antwort der ATM API bestimmen.
Wenn Sie einen Anzeigen-Pod vorzeitig beenden möchten, wenn ein EXT-X-CUE-IN-Tag erkannt wird, fügen Sie den Parameter d= in die URL des letzten Anzeigensegments ein. Dieser Parameter verkürzt das Segment, um die Zeitachse des Client-Videoplayers nicht zu beeinträchtigen.
Im folgenden Beispiel wird eine URL für ein Pre-Roll-Anzeigensegment 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 URL für ein Mid-Roll-Anzeigensegment 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 Anzeigensegmente in das Manifest eingefügt:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
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.00,
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.00,
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:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4
Slate-Segmente erstellen
Fügen Sie Slate-Segmente ein, um die Lücke zwischen Anzeige und Content zu füllen.
Verwenden Sie das Array slates.segment_durations.values aus der JSON-Antwort der ATM API, um die Dauer der einzelnen Slate-Segmente zu bestimmen. Wiederholen Sie die Sequenz der Segmentdauern nach Bedarf, um die gesamte Werbeunterbrechung zu füllen.
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
slate/0 im Beispiel steht für die Iterationsnummer des Slates. Anhand der Kompatibilität und der Caching-Funktionen Ihres Client-Videoplayers können Sie festlegen, ob Sie bei 0 beginnen und diese Zahl für jede Wiederholung des Slates erhöhen oder sie für alle Iterationen bei 0 belassen.
Rückkehr zum Content verwalten
Nachdem Sie alle Segmente aus dem Anzeigen-Pod eingefügt haben, wählen Sie eine der folgenden Methoden aus, um zum Contentstream zurückzukehren:
| Methode | Beschreibung | Auswirkungen auf den Client-Videoplayer |
|---|---|---|
| Mit Slate-Segmenten füllen | Fügt die Slate-Segmente ein und wiederholt den Slate. Füllt die Dauer und fügt zwischen den einzelnen Slate-Wiederholungen EXT-X-DISCONTINUITY-Elemente ein. |
Keine Auswirkungen. Der Videoplayer kehrt ohne geänderte Zeitachse zum Content zurück. |
| Mit einem einzelnen Slate-Segment neu ausrichten | Fügt ein einzelnes Slate-Segment ein. Verwendet den Parameter d=, um die Dauer bis zum Beginn des Contents zu füllen. |
Keine Auswirkungen. Der Videoplayer kehrt ohne geänderte Zeitachse zum Content zurück. |
| Sofortige Rückkehr | Contentsegmente einfügen. | Die Zeitachse des Videoplayers wird geändert. Ihr Client-Videoplayer muss die geänderte Zeitachse verarbeiten. |
Optional: Werbeunterbrechung planen
Um Ihre Ausführungsrate zu verbessern, senden Sie eine EABN mit der Dauer des Anzeigen-Pods, benutzerdefinierten Targetingparametern und SCTE-35-Signaldaten. Weitere Informationen finden Sie unter Early Ad Break Notifications senden.