Gerar vídeos com base em uma imagem

Você pode usar o Veo na Vertex AI para gerar novos vídeos com base em um comando de imagem e texto. 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.

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.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    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.

    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.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud .

    Gerar vídeos com base em uma imagem

    Exemplo de entrada Exemplo de saída
    1. Imagem de entrada1
      Arquivo PNG de entrada de um elefante de crochê
    2. Comando de texto: o elefante se move naturalmente

    Vídeo de saída de um elefante de crochê

    1 Imagem gerada usando o Imagen na Vertex AI com base na solicitação: Um elefante de crochê com padrões intrincados caminhando na savana

    Você pode gerar novos vídeos usando apenas uma imagem como entrada ou uma imagem e um texto descritivo. Os exemplos a seguir mostram instruções básicas para gerar vídeos com base em imagens e texto.

    Console

    1. No console Google Cloud , acesse a página Vertex AI Studio > Media Studio.

      Media Studio

    2. Clique em Vídeo.

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

      • Modelo: escolha um modelo entre as opções disponíveis.
      • 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 uma duração entre 5 segundos e 8 segundos.

      • 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ídeos.

    6. Na caixa Escreva seu comando, clique em Fazer upload.

    7. Escolha uma imagem local para fazer upload e clique em Selecionar.

    8. Na caixa Escreva seu comando, insira o comando de texto que descreve os vídeos a serem gerados.

    9. Clique em Gerar.

    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 .
      • MODEL_ID: o ID do modelo a ser usado. Valores disponíveis:
        • veo-2.0-generate-001 (GA)
        • veo-3.0-generate-preview (Visualização prévia)
      • TEXT_PROMPT: o comando de texto usado para orientar a geração de vídeo.
      • INPUT_IMAGE: string de bytes codificada em base64 que representa a imagem de entrada. Para garantir a qualidade, a imagem de entrada precisa ser de 720p ou mais (1280 x 720 pixels) e ter uma proporção de 16:9 ou 9:16. Imagens com outras proporções ou tamanhos podem ser redimensionadas ou cortadas centralmente durante o processo de upload.
      • MIME_TYPE: o tipo MIME da imagem de entrada. Apenas as imagens dos seguintes tipos MIME são aceitas: image/jpeg ou image/png.
      • OUTPUT_STORAGE_URI: opcional: o bucket do Cloud Storage para armazenar os vídeos de saída. Se não forem fornecidos, 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 que você quer gerar. Valores inteiros aceitos: 1 a 4.
      • DURATION: a duração dos arquivos de vídeo que você quer gerar. Os valores inteiros aceitos são de 5 a 8.
      • 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",
          "sampleCount": RESPONSE_COUNT,
          "seed": SEED_NUMBER
        }
        • ASPECT_RATIO: string. Opcional. Define a proporção dos vídeos gerados. Valores: 16:9 (padrão, paisagem) ou 9:16 (retrato).
        • NEGATIVE_PROMPT: string. Opcional. Uma string de texto que descreve o que você quer evitar que o modelo gere.
        • PERSON_SAFETY_SETTING: string. Opcional. A configuração de segurança que controla se a geração de pessoas ou rostos é permitida. Valores:
          • allow_adult (valor padrão): permite a geração somente de adultos.
          • disallow: impede a inclusão de pessoas ou rostos em imagens.
        • RESPONSE_COUNT: int. Opcional. O número de imagens de saída solicitadas. Valores: 1-4.
        • SEED_NUMBER: uint32. Opcional. Um número para tornar os vídeos gerados 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. 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",
            "image": {
              "bytesBase64Encoded": "INPUT_IMAGE",
              "mimeType": "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 a seguir:

      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 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: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/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 Google Cloud .
      • MODEL_ID: o ID do modelo a ser usado. Valores disponíveis:
        • veo-2.0-generate-001 (GA)
        • veo-3.0-generate-preview (Visualização prévia)
      • 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 a seguir:

      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.

    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 GenerateVideosConfig, Image
    
    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.0-generate-preview",
        image=Image(
            gcs_uri="gs://cloud-samples-data/generative-ai/image/flowers.png",
            mime_type="image/png",
        ),
        config=GenerateVideosConfig(
            aspect_ratio="16:9",
            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

    A seguir