Con Media CDN, puoi utilizzare l'ampia infrastruttura di registrazione di Google e la pubblicazione dei log a bassa latenza per associare i log per richiesta a un singolo evento di riproduzione. In questo modo puoi capire in che modo è stato fornito il traffico, ovvero la posizione del confine, le condizioni della rete, la selezione dell'origine e eventuali errori, per tutta la durata della riproduzione.
Per farlo:
- Ti consente di fornire un ID di riproduzione generato dal client in più richieste.
- Integrazione con Cloud Logging per eseguire query su riproduzioni e singole richieste.
- Eseguire esportazioni ed eseguire query con BigQuery o con la piattaforma che preferisci. L'analisi dei dati su larga scala ti consente di esaminare le latenze aggregate e i formati pubblicati durante l'intera durata della riproduzione.
Se combinato con la registrazione quasi in tempo reale, il monitoraggio della riproduzione consente di correlare le sessioni di riproduzione e la qualità complessiva dell'esperienza in base alla località, allo stream o alla rete del client e di intervenire rapidamente sui problemi.
Trace una riproduzione
Per associare più richieste a una sessione di riproduzione rivolta agli utenti, devi generare un ID per la riproduzione nel client. Il monitoraggio della riproduzione funziona includendo il valore di un'intestazione o di un parametro di query in tutti i log delle richieste associati.
Player come Shaka, ExoPlayer e AVPlayer di Apple ti consentono di collegare gli eventi di inizio della riproduzione e di aggiungere parametri di ricerca e intestazioni HTTP alle richieste effettuate per l'origine media in streaming.
I parametri di intestazione e di query sono definiti come segue:
- Un'intestazione della richiesta HTTP:
Playback-Trace-ID
- Un parametro di query dell'URL:
playback-trace-id=
L'intestazione HTTP viene utilizzata al posto del parametro di query, se entrambi sono presenti in una richiesta.
- L'ID di riproduzione non deve essere inferiore a 12 byte (96 bit), non deve essere superiore a 32 byte (256 bit) e deve essere generato da una sorgente casuale.
- Gli ID di riproduzione più brevi di 12 byte non vengono registrati. Questo serve a evitare collisioni.
- Gli ID di riproduzione più lunghi di 32 byte vengono troncati ai primi 32 byte.
Gli ID di riproduzione devono essere univoci nell'arco di un periodo di 7 giorni. Al termine del periodo di 7 giorni, quando gli ID di riproduzione vengono riutilizzati o entrano in conflitto, ogni insieme di richieste viene trattato come una riproduzione separata.
Esempio: generare un ID di riproduzione in Shaka Player
Per usufruire del monitoraggio della riproduzione su larga scala, ogni riproduzione di video da parte dell'utente deve includere un ID riproduzione per tutte le richieste effettuate per i segmenti (e, facoltativamente, per i manifest). Per poter aggregare le statistiche, questo ID deve essere uguale per tutte le richieste all'interno di una riproduzione.
L'esempio seguente:
- Genera un ID di riproduzione al caricamento del video.
- Viene inviato solo per i recuperi dei segmenti, non per i manifest.
Se vuoi utilizzare un ID di riproduzione esistente, ad esempio uno fornito dal tuo sistema di gestione dei contenuti e dall'analisi lato client, compila playbackSessionId
con questo valore.
let playbackSessionId; player.addEventListener('loading', () => { const randomBuffer = crypto.getRandomValues(new Uint8Array(16)); playbackSessionId = shaka.util.Uint8ArrayUtils.toBase64(randomBuffer); }); player.getNetworkingEngine().registerRequestFilter((type, request) => { // Remove this "type" check if you want the header on every request. // Alternately, you can check the request.uris array to send the // header to some servers and not others. if (type == shaka.net.NetworkingEngine.RequestType.SEGMENT) { request.headers['CPN'] = playbackSessionId; } });