Inserire annunci con metadati di sincronizzazione dei pod di annunci

Questa guida descrive come inserire interruzioni pubblicitarie utilizzando il metodo dei metadati di temporizzazione del pod pubblicitario (ATM) per recuperare la tempistica e la durata precise delle interruzioni pubblicitarie, inclusi gli annunci pre-roll.

Per inserire annunci pre-roll e gestire il ritorno ai contenuti dopo le interruzioni pubblicitarie mid-roll, ti consigliamo di chiamare le seguenti API:

Se vuoi, per gli eventi di live streaming con un'elevata concorrenza, ti consigliamo di chiamare l'API Early Ad Break Notification (EABN) per pianificare le decisioni sugli annunci prima dell'inizio dell'interruzione pubblicitaria.

Prerequisiti

Per iniziare, devi configurare un evento in live streaming per il tipo di inserimento di annunci dinamici (DAI) reindirizzamento della pubblicazione di pod. Scegli uno dei seguenti metodi:

Recuperare lo stream di contenuti

Quando un utente seleziona un evento di live streaming, l'app client invia una richiesta di streaming a Google Ad Manager. Nella risposta del flusso, l'app estrae l'ID sessione Google DAI e i metadati da includere nella richiesta del manifest del flusso.

L'esempio seguente trasmette un ID sessione Google DAI a un manipolatore di manifest:

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

Durante l'elaborazione della richiesta di riproduzione dei contenuti video, memorizza l'ID sessione DAI di Google e CUSTOM_ASSET_KEY dalla richiesta per prepararti all'inserimento degli annunci.

Recuperare i metadati di sincronizzazione del pod di annunci

Per recuperare la tempistica del pod di annunci:

  1. Genera un token HMAC.
  2. Chiama l'API ATM con il token HMAC.

Richiedere i metadati di temporizzazione per gli annunci pre-roll

Verifica le impostazioni del pre-roll per il tuo evento live streaming utilizzando le seguenti opzioni:

Per recuperare i risultati della decisione relativa all'annuncio pre-roll, invia una richiesta all'API ATM.

L'esempio seguente invia una richiesta ATM per gli annunci pre-roll:

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"

Richiedere i metadati di temporizzazione per gli annunci mid-roll

Per recuperare i metadati del pod di annunci per i mid-roll:

  1. Analizza il manifest del live streaming per trovare i marcatori pubblicitari che contengono la tempistica e la durata di ogni interruzione pubblicitaria mid-roll.
  2. Chiama l'endpoint dell'API ATM per richiedere la durata esatta del pod di annunci e della schermata. L'API restituisce un oggetto JSON con i risultati della decisione del pod di annunci.

L'esempio seguente esegue una richiesta ATM per gli annunci mid-roll:

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"

In caso di esito positivo, viene visualizzato un output simile al seguente oggetto 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
          ]
        }
      }
    }
  }
}

Unire gli annunci nel manifest dei contenuti

Le sezioni seguenti illustrano come modificare il manifest del live streaming e aggiungere i segmenti pubblicitari.

Identificare i segmenti di interruzione pubblicitaria e inserire le discontinuità

Durante l'elaborazione di ogni manifest delle varianti, identifica i tag EXT-X-CUE-IN e EXT-X-CUE-OUT nel flusso, che indicano l'inizio e la fine di una pausa pubblicitaria.

Sostituisci i tag EXT-X-CUE-IN e EXT-X-CUE-OUT con gli elementi EXT-X-DISCONTINUITY per consentire al video player client di passare da contenuti e annunci.

Il seguente file manifest di esempio sostituisce i tag EXT-X-CUE-IN e EXT-X-CUE-OUT:

#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

L'esempio seguente mostra un manifest sostituito:

#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

I segmenti degli annunci DAI di Google non sono criptati. Se i tuoi contenuti sono criptati, rimuovi la criptografia inserendo l'elemento EXT-X-KEY:METHOD=NONE prima del primo segmento pubblicitario di ogni interruzione pubblicitaria. Al termine dell'interruzione pubblicitaria, aggiungi di nuovo la crittografia inserendo un EXT-X-KEY appropriato.

Tieni traccia dell'ora di inizio, della durata e dell'indice della prossima interruzione pubblicitaria.

Crea URL di segmenti pubblicitari

Sostituisci i segmenti di contenuti tra i tag EXT-X-DISCONTINUITY con gli URL per ogni segmento di annunci. Per determinare il numero di segmenti pubblicitari da inserire, utilizza ads.segment_durations.values fornito nella risposta JSON dell'API ATM.

Per tornare ai contenuti prima del completamento del pod di annunci, ad esempio quando viene rilevato un tag EXT-X-CUE-IN, il manipolatore del manifest deve aggiungere il parametro sd= all'URL del segmento annuncio finale. Questo parametro accorcia il segmento per evitare di influire sulla cronologia del video player del client.

L'esempio seguente assembla un URL di segmento pubblicitario pre-roll nel manifest. Tieni presente che i segmenti di annunci utilizzano un indice basato su zero:

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

L'esempio seguente assembla un URL del segmento pubblicitario mid-roll nel manifest:

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

L'esempio seguente inserisce segmenti pubblicitari nel 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
#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

Creare segmenti di slate

Per colmare il divario tra l'annuncio e i contenuti, inserisci segmenti di slate. Utilizza l'array slates.segment_durations.values della risposta JSON dell'API ATM per determinare la durata di ogni segmento della scheda. Ripeti la sequenza delle durate dei segmenti in base alle esigenze per riempire l'intera interruzione pubblicitaria.

Per tornare ai contenuti prima del completamento del pod di annunci, ad esempio quando viene rilevato un tag EXT-X-CUE-IN, aggiungi il parametro sd= all'URL del segmento finale della schermata. Questo parametro accorcia il segmento per evitare di influire sulla cronologia del video player del client. Il valore del parametro sd= deve essere un numero intero, che rappresenta la durata in millisecondi per accorciare il segmento.

L'esempio seguente assembla un segmento di slate:

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 nell'esempio rappresenta il numero di iterazione della scheda. Fai riferimento alla compatibilità e alla funzionalità di memorizzazione nella cache del video player del client per determinare se iniziare da 0 e incrementare questo numero per ogni ciclo della lavagna, o mantenerlo a 0 per tutte le iterazioni.

Gestire il ritorno ai contenuti

Dopo che il manipolatore del manifest ha inserito tutti i segmenti del pod pubblicitario, deve tornare al flusso di contenuti. Per tornare allo stream di contenuti, scegli uno dei seguenti metodi. Ogni metodo richiede un segmento di riallineamento finale per mantenere accurata la sequenza temporale dello stream.

Riempi e riallinea:inserisci i segmenti della lavagna e crea un loop. Compila la durata e inserisci gli elementi EXT-X-DISCONTINUITY tra ogni iterazione della scheda. Per l'ultimo segmento, aggiungi il parametro sd= in millisecondi in modo che corrisponda all'inizio dei contenuti.

Ritorno immediato:inserisci un singolo segmento di riallineamento utilizzando il parametro sd= e seguendo con i contenuti.

Il video player torna ai contenuti senza una timeline modificata.

L'esempio seguente crea una transizione riempiendo il resto della durata dell'interruzione pubblicitaria con segmenti di 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/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

Con questo metodo, il manipolatore del manifest esegue il loop della slide come necessario e aggiunge il parametro URL sd= solo all'ultimo segmento della slide. Questa procedura è perfettamente allineata all'inizio programmato dei contenuti sottostanti.

L'esempio seguente mostra come utilizzare un singolo segmento di slate con il parametro sd= per mantenere accurata la cronologia del player quando non riempi l'intera pausa rimanente con slate in loop.

#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

(Facoltativo) Pianificare un'interruzione pubblicitaria

Per migliorare il tasso di riempimento, invia una notifica di interruzione pubblicitaria anticipata (EABN) con la durata del pod pubblicitario, i parametri di targeting personalizzato e i dati dei segnali SCTE-35. Per maggiori dettagli, vedi Inviare notifiche di interruzione pubblicitaria anticipata.