Prima di iniziare
Questa guida illustra solo le istruzioni di riproduzione, in assenza del SDK IMA DAI.
Assicurati di aver già completato i passaggi descritti in Integrare Google Ad Manager (GAM) con i live streaming in precedenza.
Se l'SDK IMA non è disponibile per la piattaforma scelta, la tua applicazione dovrà chiamare le API richieste e attivare le impressioni degli annunci.
A questo scopo, avrai bisogno delle seguenti informazioni:
Località |
La
Regione Google Cloud
dove è stata creata la configurazione live:
LOCATION
|
Numero progetto |
Il numero del progetto Google Cloud che utilizza l'API Video Stitcher:
PROJECT_NUMBER
|
Token OAuth |
Il token OAuth a breve durata di un account di servizio con il ruolo utente Video Stitcher:
OAUTH_TOKEN Scopri di più sulla creazione di token OAuth a vita breve. |
Codice di rete |
Il codice di rete Ad Manager per richiedere annunci:
NETWORK_CODE
|
ID configurazione dal vivo |
L'ID configurazione live specificato durante la creazione dell'evento in live streaming:
LIVE_CONFIG_ID
|
Chiave asset personalizzata |
La chiave asset personalizzata di Ad Manager generata durante il processo di
creare una configurazione per un evento in live streaming
con l'API Video Stitcher:
CUSTOM_ASSET_KEY
|
Inviare una richiesta di registrazione dello stream ad Ad Manager
Invia una richiesta POST all'endpoint di registrazione dello stream. In cambio, ricevi una risposta JSON contenente l'ID stream da inviare all'API Video stitching.
endpoint API
POST: /ssai/pods/api/v1/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream
Host: dai.google.com
Content-Type: application/x-www-form-urlencoded
Parametri del percorso
NETWORK_CODE |
Il tuo codice di rete Google Ad Manager 360:
NETWORK_CODE
|
CUSTOM_ASSET_KEY |
L'identificatore personalizzato associato a questo evento in Google Ad Manager:
CUSTOM_ASSET_KEY
|
Parametri del corpo codificati in base al modulo
Un insieme facoltativo di codifica nel modulo parametri di targeting .
JSON della risposta
media_verification_url |
L'URL di base per eseguire il ping degli eventi di monitoraggio della riproduzione. Un URL completo per la verifica dei contenuti media viene formato aggiungendo un ID evento annuncio a questo URL di base.
MEDIA_VERIFICATION_URL
|
metadata_url |
L'URL per richiedere i metadati dei pod di annunci.
METADATA_URL
|
polling_frequency |
la frequenza consigliata in millisecondi per eseguire il polling di "metadata_url".
POLLING_FREQUENCY
|
stream_id |
La stringa utilizzata per identificare la sessione di streaming corrente.
STREAM_ID
|
valid_for |
Il tempo rimanente fino alla scadenza della sessione di streaming corrente, in formato dhms (giorni, ore, minuti, secondi). Ad esempio,
2h0m0.000s rappresenta una durata di 2 ore.
|
valid_until |
L'ora in cui scade la sessione di streaming corrente, indicata come ISO 8601
stringa data/ora in yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm
formato.
|
Richiesta di esempio (cURL)
curl -X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "cust_params=\"section%3Dsports%26page%3Dgolf%2Ctennis\"" \
https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/ext-doc-ps-redirect-hls/stream
Esempio di risposta
{
"stream_id":"9fe8fe4f-f12e-4fed-b509-0ca269bb1668:TUL",
"media_verification_url":"https://dai.google.com/.../media/",
"metadata_url":"https://dai.google.com/.../metadata",
"session_update_url":"https://dai.google.com/.../session",
"polling_frequency":10
}
In caso di errori, vengono restituiti codici di errore HTTP standard senza risposta JSON del testo.
Analizza la risposta JSON e memorizza i valori pertinenti.
Generare l'URI di riproduzione della sessione
Invia una richiesta POST all'endpoint /livesessions
dell'API Video Stitcher per creare una nuova sessione dal vivo. In cambio, ricevi una risposta in formato JSON contenente
il manifest dello stream da caricare nel video player.
endpoint API
POST: /v1/projects/PROJECT_NUMBER/locations/LOCATION/liveSessions
Host: videostitcher.googleapis.com
Authorization: Bearer OAUTH_TOKEN
Content-Type: application/json
Parametri del percorso
PROJECT_NUMBER |
Il numero del progetto Google Cloud che utilizza l'API Video Stitcher:
PROJECT_NUMBER
|
LOCATION |
La
Regione Google Cloud
dove è stata creata la configurazione live:
LOCATION
|
Parametro dell'intestazione di autorizzazione
OAUTH_TOKEN |
Token OAuth di breve durata di un account di servizio con l'utente dello stitching video
ruolo:
OAUTH_TOKEN |
Parametri del corpo con codifica JSON
liveConfig |
Una stringa contenente il numero di progetto.
location e l'ID configurazione live
seguente formato:
projects/PROJECT_NUMBER/locations/LOCATION/liveConfigs/LIVE_CONFIG_ID
|
adTracking |
Imposta "CLIENT" per attivare il monitoraggio lato client. |
gamSettings |
Un oggetto contenente l'ID stream con i seguenti elementi
formato:
{"streamId":"STREAM_ID"}
|
JSON risposta
name |
Il nome della sessione live, contenente l'ID sessione. |
playUri |
L'URI del manifest dello stream cucito da caricare nel video player per la riproduzione.
PLAY_URI
|
liveConfig |
La stessa stringa liveConfig inviata all'API nella richiesta
del testo.
|
gamSettings |
Lo stesso oggetto gamSettings inviato all'API nella tua richiesta
del testo.
|
Richiesta di esempio (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/liveSessions
request.json
{
"liveConfig": "projects/PROJECT_NUMBER/locations/LOCATION/liveConfigs/LIVE_CONFIG_ID",
"adTracking": "CLIENT",
"gamSettings": {
"streamId": "STREAM_ID"
}
}
Esempio di risposta
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/liveSessions/SESSION_ID",
"playUri": PLAY_URI,
"liveConfig": "projects/PROJECT_NUMBER/locations/LOCATION/liveConfigs/LIVE_CONFIG_ID"
"gamSettings": {
"streamId": STREAM_ID
}
}
Dopo aver ricevuto la risposta, puoi riprodurre il live streaming con lo stitching di annunci
fa riferimento all'URI di riproduzione della sessione dal campo playUri
della
.
L'API Video Stitcher genera un ID sessione univoco per
per ogni richiesta, che può essere recuperata dall'ultima sezione del campo name
dell'oggetto risposta.
Una sessione inattiva scade dopo 5 minuti. Una sessione è considerata inattiva se non sono stati eseguiti recuperi del manifest in un determinato periodo di tempo.
Sondaggio per i nuovi metadati dell'interruzione pubblicitaria
L'applicazione è responsabile del recupero dei metadati per ogni interruzione pubblicitaria, quindi
individua le impressioni da attivare. Per farlo, imposta un timer per eseguire regolarmente il polling delle API DAI metadata_url
per rilevare nuove informazioni sugli annunci. L'intervallo per il polling è specificato nel criterio polling_frequency
nella risposta della registrazione dello stream.
Riceverai in cambio un oggetto JSON contenente i seguenti parametri:
tags |
Una serie di coppie chiave/valore che descrivono gli eventi multimediali degli annunci che si verificano.
all'interno dello stream. Ogni chiave è costituita dai primi 17 caratteri di un ID elemento multimediale dell'annuncio che verrà visualizzato nei metadati ID3 dello stream o, nel caso degli eventi "progress", dall'intero ID elemento multimediale dell'annuncio. Ogni valore è un
oggetto con le seguenti proprietà:
|
ads |
Un insieme di coppie chiave-valore che descrivono gli annunci da mostrare all'interno dello stream. Ogni chiave è un ID annuncio. Ogni valore è un oggetto con le seguenti caratteristiche
proprietà:
|
ad_breaks |
Una serie di coppie chiave-valore che descrivono le interruzioni pubblicitarie che si verificheranno.
all'interno dello stream. Ogni chiave è un ID interruzione pubblicitaria. Ogni valore è un
oggetto con le seguenti proprietà:
|
Archivia questi valori dopo ogni sondaggio per associare eventi di metadati a tempo all'interno di nel tuo stream video.
Richiesta di esempio (cURL)
curl https://dai.google.com/.../metadata/
Risposta di esempio
{
"tags":{
"google_0492266569":{
"ad":"0000229836_ad1",
"ad_break_id":"0000229836",
"type":"firstquartile"
},
"google_1560331148":{
"ad":"0000229836_ad1",
"ad_break_id":"0000229836",
"type":"thirdquartile"
},
"google_1877686714378797835":{
"ad":"0000229836_slate",
"ad_break_id":"0000229836",
"type":"progress"
},
"google_1vRyQBYPw_7Gg3MrZ6S5EjmV9aLje-YpW8QHed1DSlU":{
"ad":"0000229835_ad1",
"ad_break_id":"0000229835",
"type":"progress"
},
"google_2032765498":{
"ad":"0000229835_ad1",
"ad_break_id":"0000229835",
"type":"midpoint"
},
...
"google_5646900623":{
"ad":"0000229837_ad1",
"ad_break_id":"0000229837",
"type":"complete"
}
},
"ads":{
"0000229834_ad1":{
"ad_break_id":"0000229834",
"position":1,
"duration":15.01,
"title":"truman-e2e-creativeset4",
"description":"truman-e2e-creativeset4 ad",
"ad_system":"GDFP",
"ad_id":"39066884",
"creative_id":"58092079124",
"clickthrough_url":"https://pubads.g.doubleclick.net/...",
"universal_ad_id":{
"id_value":"58092079124",
"id_registry":"GDFP"
}
},
"0000229834_slate":{
"ad_break_id":"0000229834",
"position":-1,
"duration":14.974977777,
"slate":true
},
...
},
"ad_breaks":{
"0000229834":{
"type":"mid",
"duration":15.01,
"expected_duration":29.984977776999997,
"ads":1
},
...
}
}
Ascolta gli eventi ID3 e monitora gli eventi di riproduzione
Per verificare che siano avvenuti eventi specifici in uno stream video, segui questi passaggi per gestire gli eventi ID3:
- Archivia gli eventi multimediali in una coda, salvando ogni ID multimediale insieme al relativo , se mostrato dal player.
- Ad ogni aggiornamento dal player o con una frequenza impostata (500 ms l'opzione consigliata), controlla la coda degli eventi multimediali per verificare se sono presenti eventi riprodotti di recente confrontando i timestamp degli eventi con la testina di riproduzione.
- Per gli eventi multimediali di cui confermi la riproduzione, controlla il tipo cercando l'ID media nei tag di interruzione pubblicitaria archiviati. Ricorda che i tag di interruzione pubblicitaria contiene solo una versione troncata dell'ID elemento multimediale, limitata le prime 10 cifre dopo il prefisso google_, quindi non c'è una corrispondenza diretta. tra gli ID verifica contenuti multimediali ID3 e le chiavi nell'oggetto tag. Questo serve per impedire l'invio di ping di verifica degli eventi prima dell'arrivo dell'evento ID3. Per generare l'URL di verifica dei contenuti completo di un evento annuncio, aggiungere l'ID evento annuncio completo al valore media_verification_url della risposta alla creazione dello stream.
- Utilizzare "avanzamento" per tenere traccia della presenza di un utente durante un'interruzione pubblicitaria. Non inviare questi eventi all'endpoint di verifica dei contenuti multimediali per evitare un codice di errore HTTP. Per altri tipi di eventi, aggiungi l'ID elemento multimediale all'elemento multimediale l'URL di verifica ed effettua una richiesta GET per tracciare la riproduzione.
- Rimuovi l'evento multimediale dalla coda.
endpoint API
GET: MEDIA_VERIFICATION_URLAD_MEDIA_ID
Host: dai.google.com
Parametri del percorso
MEDIA_VERIFICATION_URL |
Il valore restituito dall'endpoint di registrazione dello stream, in
Campo media_verification_url :
MEDIA_VERIFICATION_URL
|
AD_MEDIA_ID |
L'ID elemento multimediale dell'annuncio completo, come visualizzato nei metadati ID3 dello stream:
AD_MEDIA_ID
|
Valori di rendimento previsti
HTTP/1.1 204 No Content |
Risposta vuota riuscita. |
HTTP/1.1 404 Not Found |
L'ID verifica dei contenuti multimediali non è stato riconosciuto. |
HTTP/1.1 409 Conflict |
L'ID verifica dei contenuti multimediali è già stato inviato. |
Richiesta di esempio (cURL)
curl MEDIA_VERIFICATION_URLAD_MEDIA_ID
Esempio di risposta
HTTP/1.1 204 No Content
Limitazioni
Se utilizzi l'API all'interno delle visualizzazioni web, si applicano le seguenti limitazioni per quanto riguarda il targeting:
- UserAgent: il parametro user agent viene trasmesso come valore specifico del browser. anziché dalla piattaforma sottostante.
- rdid, idtype, is_lat: l'ID dispositivo non viene passato correttamente, il che limita la funzionalità delle seguenti funzionalità:
- Quota limite
- Rotazione degli annunci sequenziale
- Segmentazione e targeting per pubblico