Usar o Veo para estender vídeos

Você pode usar o Veo na Gemini Enterprise Agent Platform para estender vídeos de 1 a 30 segundos. É possível estender vídeos usando o console Cloud de Confiance ou a API Agent Platform.

Os seguintes modelos são compatíveis com a extensão de vídeos:

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

Antes de começar

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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

  2. Enable the Agent Platform 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

  3. Configure a autenticação do ambiente.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console Cloud de Confiance para acessar serviços Cloud de Confiance by S3NS e APIs, não é necessário configurar a autenticação.

    REST

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

      Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.

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

Limitações

Os vídeos de entrada estão sujeitos às seguintes limitações ao usar a extensão do Veo:

  • O arquivo de entrada precisa ser MP4.
  • A duração precisa ser de 1 a 30 segundos.
  • O frame rate precisa ser de 24 quadros por segundo.
  • A resolução precisa ser de 720p, 1080p ou 4K.
  • A proporção dos vídeos de entrada pode ser 9:16 ou 16:9.

Os vídeos de saída estão sujeitos às seguintes limitações:

  • O arquivo de saída é MP4.
  • A duração estendida é de 7 segundos.
  • O frame rate é de 24 quadros por segundo.
  • A resolução pode ser 720p, 1080p ou 4K.
  • A proporção dos vídeos de saída pode ser 9:16 ou 16:9.

Estender um vídeo

Confira nos exemplos a seguir como estender um vídeo do Veo:

Console

  1. No console do Cloud de Confiance , acesse a página Agent Platform > Media Studio.

    Media Studio

  2. Clique em Vídeo.

  3. No menu Tarefa, selecione Extensão de vídeo.

  4. No menu Modelo, selecione uma das opções exibidas.

  5. Na seção Vídeo de entrada, clique em Adicionar.

  6. Na caixa Comando, insira um comando de texto que descreva os vídeos a serem gerados.

  7. Opcional: ajuste os seguintes parâmetros:

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

    • Duração do vídeo: selecione uma opção no menu.

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

  8. Clique em Executar.

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 do Google 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_ENTERPRISE=True

import time
from google import genai
from google.genai.types import GenerateVideosConfig, Video

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-3.1-generate-preview",
    prompt="a butterfly flies in and lands on the flower",
    video=Video(
        uri="gs://cloud-samples-data/generative-ai/video/flower.mp4",
        mime_type="video/mp4",
    ),
    config=GenerateVideosConfig(
        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

Para mais informações sobre a API Veo, consulte:

  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: uma string que representa o ID do projeto do Cloud de Confiance by S3NS .
    • MODEL_ID: uma string que representa o ID do modelo a ser usado. Use uma das seguintes opções ao especificar um primeiro ou último frame de vídeo:
      • Veo 2: veo-2.0-generate-001
      • Veo 3: veo-3.1-generate-001
      • Veo 3: veo-3.1-fast-generate-001
    • TEXT_PROMPT: o comando de texto usado para orientar a geração de vídeo.
    • PATH_TO_VIDEO: uma string que representa o caminho do Cloud Storage para o vídeo do Veo que você está estendendo. Por exemplo, "gs://video-bucket/input/veo-video.mp4".
    • OUTPUT_STORAGE_URI: opcional. Uma string que representa o bucket do Cloud Storage para armazenar os vídeos de saída. Se não for fornecido, os bytes de vídeo serão retornados na resposta. Por exemplo, "gs://video-bucket/output/".
    • RESPONSE_COUNT: o número de arquivos de vídeo a serem gerados. O intervalo de valores aceito é 1-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 somente a geração 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"
        • "4k" (somente modelos de pré-lançamento do Veo 3.1)

        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/MODEL_ID:predictLongRunning

    Corpo JSON da solicitação:

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
           "video": {
             "gcsUri": "PATH_TO_VIDEO",
             "mimeType": "video/mp4"
           }
        }
      ],
      "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/MODEL_ID:predictLongRunning"

    PowerShell

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

    $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:predictLongRunning" | Select-Object -Expand Content
    Essa solicitação retorna um nome de operação completo com um ID exclusivo. Use esse nome completo para pesquisar o status da solicitação de geração de vídeo.
    {
      "name":
      "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
    }
    

  2. 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 ID do projeto do Cloud de Confiance by S3NS .
    • 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 abaixo:

    $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