Anotar um vídeo usando a linha de comando

Nesta página, mostramos como fazer uma solicitação API Video Intelligence com curl para seus projetos.

Você pode seguir as etapas nesta página ou usar este início rápido como um Google Cloud laboratório de treinamento.

Use-o com um laboratório

Antes de começar

  1. Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Video Intelligence API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  6. Instale a Google Cloud CLI.

  7. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  8. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  9. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  10. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  11. Verify that billing is enabled for your Google Cloud project.

  12. Enable the Video Intelligence API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  13. Instale a Google Cloud CLI.

  14. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  15. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Funções exigidas

Para receber as permissões necessárias para anotar um vídeo, peça que o administrador conceda a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.

Criar um bucket

No seu ambiente de desenvolvimento, use o gcloud storage buckets create comando para criar um bucket.

Antes de executar o comando, substitua os seguintes valores:

  • BUCKET_LOCATION: a localização geográfica em que você quer armazenar os dados no bucket. Por exemplo, US.
gcloud storage buckets create gs://videointelligence-quickstart-bucket --location=BUCKET_LOCATION

Se a solicitação for bem-sucedida, o comando retornará a seguinte mensagem:

Creating gs://videointelligence-quickstart-bucket/...

Fazer upload de um vídeo para o bucket

No seu ambiente de desenvolvimento, use o gcloud storage cp comando para fazer upload de um vídeo para o bucket que você criou.

Antes de executar o comando, substitua os seguintes valores:

  • OBJECT_LOCATION: o caminho local para o objeto. Por exemplo, Desktop/dog.mp4.
gcloud storage cp OBJECT_LOCATION gs://videointelligence-quickstart-bucket

Se funcionar, a resposta será parecida com esta:

Completed files 1/1 | 164.3kiB/164.3kiB

Anotar o vídeo

gcloud

Use a CLI gcloud para chamar o comando detect-labels no caminho do vídeo a ser analisado.

Antes de executar o comando, substitua os seguintes valores:

  • YOUR_OBJECT: o nome do arquivo de vídeo que você fez upload. Por exemplo, dog.mp4.
gcloud ml video detect-labels gs://videointelligence-quickstart-bucket/YOUR_OBJECT

Linha de comando

Use curl para fazer uma solicitação POST para o método videos:annotate.

Antes de executar o comando, substitua os seguintes valores:

  • YOUR_OBJECT: o nome do arquivo de vídeo que você fez upload. Por exemplo, dog.mp4.
curl -X POST \
  -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
  -H "Content-Type: application/json; charset=utf-8" \
  --data '{"inputUri":"gs://videointelligence-quickstart-bucket/YOUR_OBJECT","features":["LABEL_DETECTION"]}'\
  "https://videointelligence.googleapis.com/v1/videos:annotate"

A API Video Intelligence cria uma operação para processar a solicitação. A resposta inclui o nome da operação:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID"
}

É possível solicitar informações sobre a operação chamando o v1.operations endpoint, substituindo OPERATION_NAME no exemplo abaixo pelo nome retornado na etapa anterior:

  curl -X GET \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    https://videointelligence.googleapis.com/v1/OPERATION_NAME

Esse comando retorna informações relacionadas à sua operação. Se a operação tiver sido concluída, um campo done será incluído e definido como true:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID",
  "metadata": {
  "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress",
    "annotationProgress": [
      {
        "inputUri": "/videointelligence-quickstart-bucket/YOUR_OBJECT",
        "progressPercent": 100,
        "startTime": "2020-04-01T22:13:17.978847Z",
        "updateTime": "2020-04-01T22:13:29.576004Z"
      }
    ]
  },
  "done": true,
  ...
}

Após cerca de um minuto, a solicitação retorna os resultados da anotação. Os resultados devem ser semelhantes a estes:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoProgress",
    "annotationProgress": [
      {
        "inputUri": "videointelligence-quickstart-bucket/YOUR_OBJECT",
        "progressPercent": 100,
        "startTime": "2020-04-01T22:13:17.978847Z",
        "updateTime": "2020-04-01T22:13:29.576004Z"
      }
    ]
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.videointelligence.v1.AnnotateVideoResponse",
    "annotationResults": [
      {
        "inputUri": "/videointelligence-quickstart-bucket/YOUR_OBJECT",
        "segmentLabelAnnotations": [
          {
            "entity": {
              "entityId": "/m/07bsy",
              "description": "transport",
              "languageCode": "en-US"
            },
            "segments": [
              {
                "segment": {
                  "startTimeOffset": "0s",
                  "endTimeOffset": "38.757872s"
                },
                "confidence": 0.81231534
              }
            ]
          },
         {
          "entity": {
              "entityId": "/m/01n32",
              "description": "city",
              "languageCode": "en-US"
            },
            "categoryEntities": [
              {
                "entityId": "/m/043rvww",
                "description": "geographical feature",
                "languageCode": "en-US"
              }
            ],
            "segments": [
              {
                "segment": {
                  "startTimeOffset": "0s",
                  "endTimeOffset": "38.757872s"
                },
                "confidence": 0.3942462
              }
            ]
          },
          ...
          {
            "entity": {
              "entityId": "/m/06gfj",
              "description": "road",
              "languageCode": "en-US"
            },
            "segments": [
              {
                "segment": {
                  "startTimeOffset": "0s",
                  "endTimeOffset": "38.757872s"
                },
                "confidence": 0.86698604
              }
            ]
          }
        ]
      }
    ]
  }
}
   

Parabéns! Você enviou sua primeira solicitação para a API Video Intelligence.

Limpar

Para evitar cobranças na sua Google Cloud conta pelos recursos usados nesta página, faça uma das seguintes ações:

  • Se você quiser continuar usando o projeto criado, use o comando gcloud storage rm com a flag --recursive para excluir o bucket e tudo o que estiver dentro dele:

    gcloud storage rm gs://videointelligence-quickstart-bucket --recursive
  • Se você não precisar do projeto criado para este início rápido, exclua-o.

    1. No Google Cloud console, acesse a página Gerenciar recursos.

      Acessar "Gerenciar recursos"

    2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
    3. Na caixa de diálogo, digite o ID do projeto e clique em Desligar para excluir o projeto.

A seguir