Remover objetos de vídeos do Veo

É possível usar o Veo na Vertex AI para remover objetos dos vídeos gerados. Você fornece uma máscara e um objeto de vídeo e usa um comando de texto para descrever a saída desejada. A API Vertex AI tem suporte durante o pré-lançamento. As interfaces compatíveis incluem o console Google Cloud e a API Vertex AI.

Para mais informações sobre como escrever comandos de texto eficazes para geração de vídeos, consulte o guia de comandos do Veo.

Testar o Veo no Colab

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Vertex AI 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

  4. 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Vertex AI 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. Configure a autenticação do ambiente.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    Python

    Para usar os exemplos do Python desta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e configure o Application Default Credentials com suas credenciais de usuário.

      Instale a CLI do Google Cloud.

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

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Saiba mais em Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .

    REST

    Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

      Instale a CLI do Google Cloud.

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

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

    Remover um objeto de um vídeo

    Console

    1. No console do Google Cloud , acesse Vertex AI Studio > a página Gerar mídia.

      Media Studio

    2. Clique em Veo.

    3. Opcional: no painel Configurações, defina o seguinte:

      • Modelo: escolha Prévia do Veo 2.

      • Proporção: escolha 16:9 ou 9:16.

      • Número de resultados: ajuste o controle deslizante ou insira um valor entre 1 e 4.

      • Duração do vídeo: selecione a duração desejada no menu.

      • Diretório de saída: clique em Procurar para criar ou selecionar um bucket do Cloud Storage em que os arquivos de saída serão armazenados.

    4. Opcional: na seção Segurança, selecione uma das seguintes configurações de Geração de pessoas:

      • Permitir (somente para adultos): valor padrão. Gerar apenas pessoas ou rostos adultos. Não gere pessoas ou rostos de jovens ou crianças.

      • Não permitir: não gera pessoas nem rostos.

    5. Opcional: na seção Opções avançadas, insira um valor de Seed para aleatorizar a geração de vídeo.

    6. Clique em enviar uma imagem ou um vídeo.

    7. Escolha um vídeo local para fazer upload e clique em Selecionar.

    8. Escolha uma destas opções:

      • Fazer upload da sua própria máscara:

        1. Crie uma máscara no computador.

        2. Clique em Fazer upload da máscara. Na caixa de diálogo exibida, selecione uma máscara para fazer upload.

      • Defina sua máscara:na barra de ferramentas de edição, use as ferramentas de máscara (caixa, pincel ou masked_transitions inverter) para especificar a área ou áreas às quais adicionar conteúdo.

    9. Clique em Gerar.

    Python

    Instalar

    pip install --upgrade google-genai

    Para saber mais, consulte a documentação de referência do SDK.

    Defina variáveis de ambiente para usar o SDK de IA generativa com a Vertex AI:

    # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
    # with appropriate values for your project.
    export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
    export GOOGLE_CLOUD_LOCATION=global
    export GOOGLE_GENAI_USE_VERTEXAI=True

    import time
    from google import genai
    from google.genai.types import GenerateVideosSource, GenerateVideosConfig, Image, Video, VideoGenerationMask, VideoGenerationMaskMode
    
    client = genai.Client()
    
    # TODO(developer): Update and un-comment below line
    # output_gcs_uri = "gs://your-bucket/your-prefix"
    
    operation = client.models.generate_videos(
        model="veo-2.0-generate-preview",
        source=GenerateVideosSource(
            video=Video(uri="gs://cloud-samples-data/generative-ai/video/truck.mp4", mime_type="video/mp4")
        ),
        config=GenerateVideosConfig(
            mask=VideoGenerationMask(
                image=Image(
                    gcs_uri="gs://cloud-samples-data/generative-ai/image/truck-inpainting-dynamic-mask.png",
                    mime_type="image/png",
                ),
                mask_mode=VideoGenerationMaskMode.REMOVE,
            ),
            output_gcs_uri=output_gcs_uri,
        ),
    )
    
    while not operation.done:
        time.sleep(15)
        operation = client.operations.get(operation)
        print(operation)
    
    if operation.response:
        print(operation.result.generated_videos[0].video.uri)
    
    # Example response:
    # gs://your-bucket/your-prefix

    REST

    Depois de configurou seu ambiente use REST para testar uma solicitação de texto. O exemplo a seguir envia uma solicitação ao publisher endpoint do modelo.

    Para mais informações sobre a API Veo, consulte a API Veo na Vertex AI.

    1. Use o comando a seguir para enviar uma solicitação de geração de vídeo. Essa solicitação inicia uma operação de longa duração e armazena a saída em um bucket do Cloud Storage especificado por você.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do projeto do Google Cloud .
    • TEXT_PROMPT: o comando de texto usado para orientar a geração de vídeo.
    • MASK_STORAGE_URI O caminho do URI do bucket do Cloud Storage para o objeto de máscara.
    • MASK_MIME_TYPE O tipo MIME da máscara de imagem. Apenas uma das opções a seguir:

      • image/png
      • image/jpeg
      • image/webp
    • VIDEO_INPUT_STORAGE_URI O objeto de entrada de vídeo do caminho do URI do bucket do Cloud Storage.
    • VIDEO_MIME_TYPE O tipo MIME do objeto de vídeo. Apenas uma das opções a seguir:

      • video/mov
      • video/mpeg
      • video/mp4
      • video/mpg
      • video/avi
      • video/wmv
      • video/mpegps
      • video/flv
    • OUTPUT_STORAGE_URI: Opcional: o bucket do Cloud Storage para armazenar os vídeos de saída. Se não for fornecido, um vídeo codificado em bytes Base64 será retornado na resposta. Por exemplo: gs://video-bucket/output/.
    • RESPONSE_COUNT: o número de arquivos de vídeo que você quer gerar. Valores inteiros aceitos: 1 a 4.
    • Outros parâmetros opcionais

      Use as seguintes variáveis opcionais dependendo do seu caso de uso. Adicione alguns ou todos os parâmetros a seguir no objeto "parameters": {}.

      "parameters": {
        "aspectRatio": "ASPECT_RATIO",
        "negativePrompt": "NEGATIVE_PROMPT",
        "personGeneration": "PERSON_SAFETY_SETTING",
        // "resolution": RESOLUTION, // Veo 3 models only
        "sampleCount": RESPONSE_COUNT,
        "seed": SEED_NUMBER
      }
      • ASPECT_RATIO: Opcional: um valor de string que descreve a proporção dos vídeos gerados. Você pode usar os seguintes valores:
        • "16:9" para paisagem
        • "9:16" para retrato

        O valor padrão é "16:9"

      • NEGATIVE_PROMPT: opcional: um valor de string que descreve o conteúdo que você quer impedir que o modelo gere.
      • PERSON_SAFETY_SETTING: Opcional: um valor de string que controla a configuração de segurança para gerar pessoas ou rostos. Você pode usar os seguintes valores:
        • "allow_adult": permite a geração somente de pessoas e rostos adultos.
        • "disallow": não gera pessoas nem rostos.

        O valor padrão é "allow_adult".

      • RESOLUTION: Opcional: um valor de string que controla a resolução do vídeo gerado. Compatível apenas com modelos do Veo 3. Você pode usar os seguintes valores:
        • "720p"
        • "1080p"

        O valor padrão é "720p".

      • RESPONSE_COUNT: Opcional. Um valor inteiro que descreve o número de vídeos a serem gerados. O intervalo de valores aceito é 1-4.
      • SEED_NUMBER: Opcional. Um valor uint32 que o modelo usa para gerar vídeos determinísticos. Especificar um número de sugestão com sua solicitação sem mudar outros parâmetros orienta o modelo a produzir os mesmos vídeos. O intervalo aceito de valores é 0-4294967295.

    Método HTTP e URL:

    POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-preview:predictLongRunning

    Corpo JSON da solicitação:

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
          // The following fields can be repeated for up to three total
          // images.
          "mask": {
            "gcsURI": "MASK_STORAGE_URI",
            "mimeType": "MASK_MIME_TYPE",
            "maskMode": "remove"
          },
          "video": {
            "gcsURI": "VIDEO_INPUT_STORAGE_URI",
            "mimeType": "VIDEO_MIME_TYPE"
          }
        }
      ],
      "parameters": {
        "storageUri": "OUTPUT_STORAGE_URI",
        "sampleCount": RESPONSE_COUNT,
      }
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-preview:predictLongRunning"

    PowerShell

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-preview:predictLongRunning" | Select-Object -Expand Content
    Essa solicitação retorna um nome de operação completo com um ID exclusivo. Use esse nome completo da operação para pesquisar o status da solicitação de geração de vídeo.
    {
      "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/veo-2.0-generate-001/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
    }
    

    1. Opcional: verifique o status da operação de longa duração de geração de vídeo.

      Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

      • PROJECT_ID: o Google Cloud ID do projeto.
      • MODEL_ID: o ID do modelo a ser usado.
      • OPERATION_ID: o ID de operação exclusivo retornado na solicitação original de geração de vídeo.

      Método HTTP e URL:

      POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation

      Corpo JSON da solicitação:

      {
        "operationName": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/OPERATION_ID"
      }
      

      Para enviar a solicitação, escolha uma destas opções:

      curl

      Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation"

      PowerShell

      Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation" | Select-Object -Expand Content
      Essa solicitação retorna informações sobre a operação, incluindo se ela ainda está em execução ou se já foi concluída.

    A seguir