Pubblico
Questo tutorial è progettato per consentirti di iniziare a esplorare e sviluppare applicazioni con l'API Video Intelligence. È progettato per le persone che hanno familiarità con la programmazione di base, anche se non hai molte conoscenze di programmazione, dovresti essere in grado di seguirlo. Dopo aver seguito questo tutorial, dovresti essere in grado di utilizzare la documentazione di riferimento per creare le tue applicazioni di base.
Questo tutorial descrive un'applicazione API Video Intelligence utilizzando il codice Python. Lo scopo qui non è spiegare le librerie client di Python, ma spiegare come effettuare chiamate all'API Video Intelligence. Le applicazioni in Java e in Node.js sono sostanzialmente simili.
Se stai cercando un esempio di solo codice o un esempio in un'altra lingua, consulta la guida illustrativa complementare.
Prerequisiti
Questo tutorial ha diversi prerequisiti:
- Hai configurato un progetto API Video Intelligence nella console Google Cloud.
- Hai configurato l'ambiente utilizzando un account di servizio e le Credenziali predefinite dell'applicazione.
- Hai familiarità con la programmazione di Python.
- Configura l'ambiente di sviluppo Python. Ti consigliamo di installare sul sistema la versione più recente di Python,
pip
evirtualenv
. Per istruzioni, consulta la Guida alla configurazione dell'ambiente di sviluppo in Python per Google Cloud Platform. - Devi aver installato la libreria client di Google Cloud.
Aggiungere annotazioni a un video utilizzando il rilevamento del cambio di inquadratura
Questo tutorial illustra un'applicazione di base con API Video, utilizzando una richiesta SHOT_CHANGE_DETECTION
. Una richiesta SHOT_CHANGE_DETECTION
fornisce i risultati dell'annotazione:
- Elenco di tutte le riprese che si verificano nel video
- Per ogni ripresa, indica l'ora di inizio e di fine
Per prima cosa, mostreremo l'intero codice. Tieni presente che abbiamo rimosso la maggior parte dei commenti da questo codice per mostrarti quanto è breve. Forniremo ulteriori commenti man mano che esamineremo il codice.
Questa semplice applicazione esegue le seguenti attività:
- Importa le librerie necessarie per eseguire l'applicazione.
- Recupera come argomento un file video archiviato nell'URI Cloud Storage e lo passa alla funzione
main()
. - Recupera le credenziali per eseguire il servizio API Video Intelligence.
- Crea una richiesta di annotazione video da inviare al servizio video.
- Invia la richiesta e restituisce un'operazione a lunga esecuzione.
- Crea un loop dell'operazione a lunga esecuzione fino a quando il video non viene elaborato e restituisce i valori disponibili.
- Analizza la risposta per il servizio e mostra la risposta all'utente.
Esamineremo questi passaggi in maggiore dettaglio di seguito.
Importa librerie
Importiamo argparse
per consentire all'applicazione di accettare nomi file di input come argomenti.
Per utilizzare l'API Video Intelligence, importiamo anche la libreria google.cloud.videointelligence
, che contiene la directory delle chiamate API e delle costanti di enumerazione.
esegui l'applicazione
In questo caso analizziamo l'argomento passato per l'URI Google Cloud Storage del nome file video e lo passiamo alla funzione main()
.
Autenticazione nell'API
Prima di comunicare con il servizio API Video Intelligence, devi autenticare il servizio utilizzando le credenziali acquisite in precedenza. All'interno di un'applicazione, il modo più semplice per ottenere le credenziali è utilizzare le Credenziali predefinite dell'applicazione (ADC).
Per impostazione predefinita, ADC tenterà di ottenere le credenziali dal file di ambiente GOOGLE_APPLICATION_CREDENTIALS
, che deve essere impostato in modo da puntare al file di chiavi JSON dell'account di servizio. Devi aver configurato l'account di servizio e l'ambiente per l'utilizzo di ADC nella Guida rapida. Per ulteriori informazioni, consulta Configurazione di un account di servizio.
Crea la richiesta
Ora che il nostro servizio API Video Intelligence è pronto, possiamo creare una richiesta per quel servizio. Le richieste all'API Video Intelligence vengono fornite come oggetti JSON. Per informazioni complete sulla struttura specifica di una richiesta di questo tipo, consulta il riferimento dell'API Video Intelligence.
Questo snippet di codice esegue le seguenti attività:
- Crea il codice JSON per una richiesta POST al metodo
annotate_video()
. - Inserisci nella richiesta il percorso Google Cloud Storage del nome file video trasmesso.
- Indica che il metodo
annotate
deve eseguire unSHOT_CHANGE_DETECTION
.
Costruire l'operazione a lunga esecuzione
Quando eseguiamo per la prima volta una richiesta sull'API Video Intelligence, non otteniamo un risultato immediato, ma otteniamo un nome dell'operazione, memorizzato all'interno del campo name
della risposta, che possiamo utilizzare per verificare i risultati in un secondo momento.
Passare il nome di quell'operazione (che è una stringa numerica) al metodo Operations Service operations
dell'API Video Intelligence restituisce lo stato attuale dell'operazione. Di seguito è riportato un esempio di risposta:
{ "response":{ "@type":"type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse" }, "name":"us-west1.17159971042783089144", "metadata":{ "annotationProgress":[ { "inputUri":"/video/gbikes_dinosaur.mp4", "updateTime":"2017-01-27T19:45:54.297807Z", "startTime":"2017-01-27T19:45:54.275023Z" } ], "@type":"type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress" } }
Tieni presente che il campo response
in questo momento contiene solo un campo @type
, che indica il tipo di risposta. Quando i risultati sono effettivamente disponibili, il campo di risposta conterrà i risultati di quel tipo.
Controlla l'operazione
Utilizzando la richiesta di operazione esistente per l'operazione esistente, creiamo un loop while
per controllare periodicamente lo stato di quell'operazione. Una volta che l'operazione ha indicato che l'operazione è done
, esci dal loop e possiamo analizzare la risposta.
Analizza la risposta
Una volta completata l'operazione, la risposta conterrà
una AnnotateVideoResponse,
che consiste in un elenco di annotationResults
, uno per ogni video inviato nella richiesta.
Poiché abbiamo inviato un solo video nella richiesta, prendiamo il primo
shotAnnotations
del risultato. Esaminiamo tutti
i "segmenti" del video.
Esegui la nostra applicazione
Per eseguire la nostra applicazione, è sufficiente passare l'URI Cloud Storage di un video:
$ python shotchange.py gs://cloud-samples-data/video/gbikes_dinosaur.mp4 operationId=us-west1.12468772851081463748 Operation us-west1.12468772851081463748 started: 2017-01-30T01:53:45.981043Z Processing video for shot change annotations: Finished processing. Shot 0: 0.0 to 5.166666 Shot 1: 5.233333 to 10.066666 Shot 2: 10.1 to 28.133333 Shot 3: 28.166666 to 42.766666
Complimenti! Hai eseguito un'attività di annotazione utilizzando l'API Video Intelligence.