Pubblico
Questo tutorial è progettato per consentirti di iniziare rapidamente a esplorare e sviluppare applicazioni con l'API Video Intelligence. È pensato per le persone che hanno familiarità con la programmazione di base, ma anche senza molta conoscenza della programmazione dovresti essere in grado di seguirlo. Dopo aver completato questo tutorial, dovresti essere in grado di utilizzare la documentazione di riferimento per creare le tue applicazioni di base.
Questo tutorial illustra un'applicazione dell'API Video Intelligence utilizzando il codice Python. Lo scopo non è spiegare le librerie client Python, ma spiegare come effettuare chiamate all'API Video Intelligence. Le applicazioni in Java e Node.js sono essenzialmente simili.
Se stai cercando un esempio solo di codice o un esempio in un'altra lingua, consulta la guida illustrativa complementare how-to guide.
Prerequisiti
Questo tutorial prevede diversi prerequisiti:
- Hai configurato un progetto dell'API Video Intelligence nella Google Cloud console.
- Hai configurato l'ambiente utilizzando un account di servizio e le Credenziali predefinite dell'applicazione.
- Hai una conoscenza di base della programmazione in Python.
- Configura l'ambiente di sviluppo Python. Ti consigliamo di installare sul sistema l'ultima versione di Python,
pipevirtualenv. Per le istruzioni, consulta la Guida alla configurazione dell'ambiente di sviluppo Python per Google Cloud Platform. - Hai installato la libreria client Google Cloud.
Annotare un video utilizzando il rilevamento del cambio di inquadratura
Questo tutorial illustra un'applicazione di base dell'API Video, utilizzando una richiesta SHOT_CHANGE_DETECTION. Una richiesta SHOT_CHANGE_DETECTION fornisce i risultati dell'annotazione:
- Elenco di tutte le inquadrature che si verificano all'interno del video
- Per ogni inquadratura, fornisci l'ora di inizio e di fine dell'inquadratura
Mostreremo prima 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 esaminiamo il codice.)
Questa semplice applicazione esegue le seguenti attività:
- Importa le librerie necessarie per eseguire l'applicazione.
- Accetta un file video archiviato nell'URI Cloud Storage come argomento e
lo passa alla funzione
main(). - Ottiene le credenziali per eseguire il servizio dell'API Video Intelligence.
- Crea una richiesta di annotazione video da inviare al servizio video.
- Invia la richiesta e restituisce un'operazione a lunga esecuzione.
- Esegue un loop sull'operazione a lunga esecuzione finché il video non viene elaborato e restituisce i valori disponibili.
- Analizza la risposta per il servizio e la mostra all'utente.
Esamineremo questi passaggi in dettaglio di seguito.
Importa le librerie
Importiamo argparse per consentire all'applicazione di accettare i nomi dei file di input come argomenti.
Per utilizzare l'API Video Intelligence, importiamo anche la libreria google.cloud.videointelligence, che contiene la directory delle nostre chiamate API e delle costanti di enumerazione.
Esegui l'applicazione
Qui analizziamo l'argomento passato per l'URI Cloud Storage del nome del file video e lo passiamo alla funzione main().
Autenticazione nell'API
Prima di comunicare con il servizio dell'API Video Intelligence, devi autenticare il tuo 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 della chiave JSON del tuo account di servizio. Dovresti aver configurato il tuo account di servizio
e l'ambiente per utilizzare ADC nella guida rapida. Per ulteriori informazioni, consulta
Configurazione di un account di servizio
.
Crea la richiesta
Ora che il nostro servizio dell'API Video Intelligence è pronto, possiamo creare una richiesta a questo 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 la documentazione di riferimento dell'API Video Intelligence.
Questo snippet di codice esegue le seguenti attività:
- Crea il JSON per una richiesta POST al metodo
annotate_video(). - Inserisce il percorso Google Cloud Storage del nome del file video passato nella richiesta.
- Indica che il metodo
annotatedeve eseguire unSHOT_CHANGE_DETECTION.
Crea l'operazione a lunga esecuzione
Quando eseguiamo una richiesta all'API Video Intelligence, non otteniamo un risultato immediato; invece, otteniamo un nome dell'operazione, memorizzato nel campo name della risposta, che possiamo utilizzare in un secondo momento per verificare i risultati.
Il passaggio del nome dell'operazione (che è una stringa numerica) al metodo operations del servizio Operations dell'API Video Intelligence restituisce lo stato attuale dell'operazione. Di seguito è riportata una risposta di esempio:
{
"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 al momento contiene solo un campo @type, che indica il tipo di risposta. Una volta che i risultati sono effettivamente disponibili, il campo della risposta conterrà i risultati di quel tipo.
Controlla l'operazione
Utilizzando la richiesta di operazione esistente per la nostra operazione esistente, creiamo un loop while per controllare periodicamente lo stato dell'operazione. Una volta che l'operazione ha indicato che è done, usciamo dal loop e possiamo analizzare la risposta.
Analizza la risposta
Al termine dell'operazione, la risposta conterrà
un AnnotateVideoResponse,
costituito da 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 l'applicazione
Per eseguire l'applicazione, è sufficiente passargli 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.