Prima di iniziare
Questa guida illustra solo le istruzioni di riproduzione in assenza dell'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.
Per farlo, ti serviranno le seguenti informazioni:
Località |
La
regione Google Cloud
in cui è stata creata la configurazione attiva:
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 rete |
Il codice di rete Ad Manager per la richiesta di 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 dell'asset personalizzato Ad Manager generata durante la procedura di
creazione di 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 di stitching video.
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 codice di rete di 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 parametri di targeting codificati in forma .
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 dell'URL "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 di scadenza della sessione di streaming corrente, come stringa data/ora ISO 8601 nel formato yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm .
|
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
Risposta di esempio
{
"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 testo della risposta JSON.
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 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
in cui è stata creata la configurazione attiva:
LOCATION
|
Parametro dell'intestazione di autorizzazione
OAUTH_TOKEN |
Il token OAuth a breve durata di un account di servizio con il ruolo utente Video Stitcher:
OAUTH_TOKEN |
Parametri del corpo con codifica JSON
liveConfig |
Una stringa contenente il numero del progetto,
la località e l'ID configurazione dal vivo nel
seguente formato:
projects/PROJECT_NUMBER/locations/LOCATION/liveConfigs/LIVE_CONFIG_ID
|
adTracking |
Imposta su "CLIENT" per attivare il monitoraggio lato client. |
gamSettings |
Un oggetto contenente l'ID stream nel seguente
formato:
{"streamId":"STREAM_ID"}
|
JSON della risposta
name |
Il nome della sessione live, contenente l'ID sessione. |
playUri |
L'URI del manifest dello stream unito da caricare nel video player per la riproduzione.
PLAY_URI
|
liveConfig |
La stessa stringa liveConfig inviata all'API nel corpo della richiesta.
|
gamSettings |
Lo stesso oggetto gamSettings inviato all'API nel corpo della richiesta.
|
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"
}
}
Risposta di esempio
{
"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
}
}
Una volta ricevuta la risposta, puoi riprodurre il live streaming con annunci uniti facendo riferimento all'URI di riproduzione della sessione nel campo playUri
dell'oggetto risposta.
L'API Video Stitcher genera un ID sessione univoco per ogni richiesta, che può essere recuperato dall'ultima sezione del campo name
dell'oggetto di 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.
Effettuare una ricerca di nuovi metadati relativi all'interruzione pubblicitaria
L'applicazione è responsabile del recupero dei metadati per ogni interruzione pubblicitaria, pertanto conosce 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 campo polling_frequency
nella risposta di registrazione dello stream.
In cambio, ricevi un oggetto JSON contenente i seguenti parametri:
tags |
Un insieme di coppie chiave-valore che descrivono gli eventi relativi ai media degli annunci che si verificheranno
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 proprietà:
|
ad_breaks |
Un insieme di coppie chiave-valore che descrivono le interruzioni pubblicitarie che si verificano
all'interno dello stream. Ogni chiave è un ID interruzione pubblicitaria. Ogni valore è un
oggetto con le seguenti proprietà:
|
Memorizza questi valori dopo ogni sondaggio per associare gli eventi dei metadati con temporizzazione all'interno del 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:
- Memorizza gli eventi multimediali in una coda, salvando ogni ID media insieme al relativo timestamp, se visualizzato dal player.
- A ogni aggiornamento della data e dell'ora dal player o a una frequenza impostata (consigliata 500 ms), controlla la coda di eventi multimediali per gli eventi riprodotti di recente confrontando i timestamp degli eventi con il cursore di riproduzione.
- Per gli eventi multimediali di cui confermi la riproduzione, controlla il tipo cercando l'ID media nei tag di interruzione pubblicitaria archiviati. Tieni presente che l'oggetto tag interruzione annunci contiene solo una versione troncata dell'ID media, limitata alle prime 10 cifre dopo il prefisso google_, pertanto non esiste una corrispondenza diretta tra le chiavi e gli ID di verifica dei contenuti multimediali ID3 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 completo di verifica dei contenuti multimediali di un evento annuncio, aggiungere l'ID evento annuncio completo al valore media_verification_url della risposta alla creazione dello stream.
- Utilizza gli eventi "progress" per monitorare se un utente si trova all'interno di 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 media all'URL media verification e invia una richiesta GET per monitorare 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 nel
media_verification_url campo:
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
Risposta di esempio
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 passato come valore specifico del browser anziché della piattaforma di base.
- rdid, idtype, is_lat: l'ID dispositivo non viene passato correttamente, il che limita la funzionalità delle seguenti funzionalità:
- Quota limite
- Rotazione sequenziale degli annunci
- Segmentazione e targeting per pubblico