Público-alvo
Este tutorial foi concebido para lhe permitir começar rapidamente a explorar e desenvolver aplicações com a Video Intelligence API. Foi concebido para pessoas com conhecimentos básicos de programação, embora, mesmo sem muitos conhecimentos de programação, deva conseguir acompanhar. Depois de seguir este tutorial, deve conseguir usar a documentação de referência para criar as suas próprias aplicações básicas.
Este tutorial explica passo a passo uma aplicação da API Video Intelligence que usa código Python. O objetivo aqui não é explicar as bibliotecas cliente Python, mas sim explicar como fazer chamadas para a Video Intelligence API. As aplicações em Java e Node.js são essencialmente semelhantes.
Se procura um exemplo apenas com código ou um exemplo noutro idioma, consulte o guia de instruções complementar.
Pré-requisitos
Este tutorial tem vários pré-requisitos:
- Configurou um projeto da API Video Intelligence na Google Cloud consola.
- Configurou o seu ambiente através de uma conta de serviço e das credenciais predefinidas da aplicação.
- Tem conhecimentos básicos de programação em Python.
- Configure o ambiente de programação Python. Recomendamos que tenha a versão mais recente do Python,
pip
evirtualenv
instalada no seu sistema. Para ver instruções, consulte o guia de configuração do ambiente de desenvolvimento Python para a Google Cloud Platform. - Instalou a biblioteca cliente do Google Cloud.
Anotar um vídeo através da deteção de alterações de planos
Este tutorial explica como criar uma aplicação básica da API Video com um pedido
SHOT_CHANGE_DETECTION
. Um pedido de SHOT_CHANGE_DETECTION
fornece os resultados da anotação:
- Lista de todas as cenas que ocorrem no vídeo
- Para cada tomada, indique a hora de início e fim da tomada
Vamos mostrar primeiro o código completo. (Tenha em atenção que removemos a maioria dos comentários deste código para lhe mostrar como é breve. Vamos fornecer mais comentários à medida que analisamos o código.)
Esta aplicação simples realiza as seguintes tarefas:
- Importa as bibliotecas necessárias para executar a aplicação.
- Usa um ficheiro de vídeo armazenado no URI do Cloud Storage como argumento e
transfere-o para a função
main()
. - Obtém credenciais para executar o serviço da API Video Intelligence.
- Cria um pedido de anotação de vídeo para enviar ao serviço de vídeo.
- Envia o pedido e devolve uma operação de longa duração.
- Faz um ciclo sobre a operação de longa duração até o vídeo ser processado e devolve os valores disponíveis.
- Analisa a resposta do serviço e apresenta-a ao utilizador.
Vamos rever estes passos mais detalhadamente abaixo.
Importe bibliotecas
Importamos argparse
para permitir que a aplicação aceite nomes de ficheiros de entrada como argumentos.
Para usar a Video Intelligence API, também importamos a biblioteca google.cloud.videointelligence
, que contém o diretório das nossas chamadas de API e constantes de enumeração.
Execute a sua aplicação
Aqui, analisamos o argumento transmitido para o URI do Google Cloud Storage do nome do ficheiro de vídeo e transmitimo-lo para a função main()
.
Autentique-se na API
Antes de comunicar com o serviço Video Intelligence API, tem de autenticar o seu serviço através de credenciais adquiridas anteriormente. Numa aplicação, a forma mais simples de obter credenciais é usar as credenciais predefinidas da aplicação (ADC).
Por predefinição, o ADC tenta obter credenciais do ficheiro de ambiente GOOGLE_APPLICATION_CREDENTIALS
, que deve ser definido para apontar para o ficheiro de chave JSON da sua conta de serviço. (Deve ter configurado a sua conta de serviço e ambiente para usar o ADC no guia de início rápido. Consulte o artigo
Configurar uma conta de serviço
para mais informações.)
Construa o pedido
Agora que o nosso serviço Video Intelligence API está pronto, podemos criar um pedido para esse serviço. Os pedidos à API Video Intelligence são fornecidos como objetos JSON. Consulte a referência da API Video Intelligence para ver informações completas sobre a estrutura específica de tal pedido.
Este fragmento do código realiza as seguintes tarefas:
- Constrói o JSON para um pedido POST para o método
annotate_video()
. - Injeta a localização do Google Cloud Storage do nome do ficheiro de vídeo transmitido no pedido.
- Indica que o método
annotate
deve executar umSHOT_CHANGE_DETECTION
.
Construa a operação de longa duração
Quando executamos um pedido pela primeira vez na Video Intelligence API, não recebemos um resultado imediato. Em vez disso, recebemos um nome da operação, armazenado no campo name
da resposta, que podemos usar posteriormente para verificar os resultados.
A transmissão do nome dessa operação (que é uma string numérica) para o método Operations Service operations
da API Video Intelligence devolve o estado atual da operação. Segue-se um exemplo de resposta:
{ "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" } }
Tenha em atenção que, neste momento, o campo response
só contém um campo @type
, que indica o tipo dessa resposta. Quando os resultados estiverem realmente disponíveis, o campo de resposta vai conter resultados desse tipo.
Verifique a operação
Usando o pedido de operação existente para a nossa operação existente, construímos um
while
loop para verificar periodicamente o estado dessa operação. Assim que a nossa operação indicar que a operação é done
, saímos do ciclo
e podemos analisar a resposta.
Analise a resposta
Quando a operação estiver concluída, a resposta vai conter um AnnotateVideoResponse, que consiste numa lista de annotationResults
, um para cada vídeo enviado no pedido.
Como enviámos apenas um vídeo no pedido, consideramos o primeiro
shotAnnotations
resultado. Explicamos todos os "segmentos" do vídeo.
Executar a nossa aplicação
Para executar a nossa aplicação, basta transmitir-lhe o URI do Cloud Storage de um vídeo:
$ 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
Parabéns! Realizou uma tarefa de anotação com a Video Intelligence API!