Gerar vídeos com o Veo 3.1 na API Gemini

O Veo 3.1 é o modelo mais moderno do Google para gerar vídeos de 8 segundos em 720p ou 1080p com alta fidelidade, realismo impressionante e áudio gerado nativamente. É possível acessar esse modelo de maneira programática usando a API Gemini. Para saber mais sobre as variantes de modelo do Veo disponíveis, consulte a seção Versões do modelo.

O Veo 3.1 se destaca em uma ampla variedade de estilos visuais e cinematográficos e apresenta vários novos recursos:

  • Extensão de vídeo: estenda vídeos que foram gerados anteriormente usando o Veo.
  • Geração específica de frames: gere um vídeo especificando o primeiro e o último frames.
  • Direção com base em imagens: use até três imagens de referência para orientar o conteúdo do vídeo gerado.

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

Geração de texto para vídeo

Escolha um exemplo para saber como gerar um vídeo com diálogo, realismo cinematográfico ou animação criativa:

Python

import time
from google import genai
from google.genai import types

client = genai.Client()

prompt = """A close up of two people staring at a cryptic drawing on a wall, torchlight flickering.
A man murmurs, 'This must be it. That's the secret code.' The woman looks at him and whispering excitedly, 'What did you find?'"""

operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt=prompt,
)

# Poll the operation status until the video is ready.
while not operation.done:
    print("Waiting for video generation to complete...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Download the generated video.
generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("dialogue_example.mp4")
print("Generated video saved to dialogue_example.mp4")

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const prompt = `A close up of two people staring at a cryptic drawing on a wall, torchlight flickering.
A man murmurs, 'This must be it. That's the secret code.' The woman looks at him and whispering excitedly, 'What did you find?'`;

let operation = await ai.models.generateVideos({
    model: "veo-3.1-generate-preview",
    prompt: prompt,
});

// Poll the operation status until the video is ready.
while (!operation.done) {
    console.log("Waiting for video generation to complete...")
    await new Promise((resolve) => setTimeout(resolve, 10000));
    operation = await ai.operations.getVideosOperation({
        operation: operation,
    });
}

// Download the generated video.
ai.files.download({
    file: operation.response.generatedVideos[0].video,
    downloadPath: "dialogue_example.mp4",
});
console.log(`Generated video saved to dialogue_example.mp4`);

Go

package main

import (
    "context"
    "log"
    "os"
    "time"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    prompt := `A close up of two people staring at a cryptic drawing on a wall, torchlight flickering.
    A man murmurs, 'This must be it. That's the secret code.' The woman looks at him and whispering excitedly, 'What did you find?'`

    operation, _ := client.Models.GenerateVideos(
        ctx,
        "veo-3.1-generate-preview",
        prompt,
        nil,
        nil,
    )

    // Poll the operation status until the video is ready.
    for !operation.Done {
    log.Println("Waiting for video generation to complete...")
        time.Sleep(10 * time.Second)
        operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
    }

    // Download the generated video.
    video := operation.Response.GeneratedVideos[0]
    client.Files.Download(ctx, video.Video, nil)
    fname := "dialogue_example.mp4"
    _ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
    log.Printf("Generated video saved to %s\n", fname)
}

REST

# Note: This script uses jq to parse the JSON response.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"

# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -X "POST" \
  -d '{
    "instances": [{
        "prompt": "A close up of two people staring at a cryptic drawing on a wall, torchlight flickering. A man murmurs, \"This must be it. That'\''s the secret code.\" The woman looks at him and whispering excitedly, \"What did you find?\""
      }
    ]
  }' | jq -r .name)

# Poll the operation status until the video is ready
while true; do
  # Get the full JSON status and store it in a variable.
  status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")

  # Check the "done" field from the JSON stored in the variable.
  is_done=$(echo "${status_response}" | jq .done)

  if [ "${is_done}" = "true" ]; then
    # Extract the download URI from the final response.
    video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
    echo "Downloading video from: ${video_uri}"

    # Download the video using the URI and API key and follow redirects.
    curl -L -o dialogue_example.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
    break
  fi
  # Wait for 5 seconds before checking again.
  sleep 10
done

Geração de vídeo com imagens

O código a seguir demonstra como gerar uma imagem usando o Gemini 2.5 Flash Image, também conhecido como Nano Banana, e usar essa imagem como o frame inicial para gerar um vídeo com o Veo 3.1.

Python

import time
from google import genai

client = genai.Client()

prompt = "Panning wide shot of a calico kitten sleeping in the sunshine"

# Step 1: Generate an image with Nano Banana.
image = client.models.generate_content(
    model="gemini-2.5-flash-image",
    prompt=prompt,
)

# Step 2: Generate video with Veo 3.1 using the image.
operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt=prompt,
    image=image.generated_images[0].image,
)

# Poll the operation status until the video is ready.
while not operation.done:
    print("Waiting for video generation to complete...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Download the video.
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3_with_image_input.mp4")
print("Generated video saved to veo3_with_image_input.mp4")

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const prompt = "Panning wide shot of a calico kitten sleeping in the sunshine";

// Step 1: Generate an image with Nano Banana.
const imageResponse = await ai.models.generateContent({
  model: "gemini-2.5-flash-image",
  prompt: prompt,
});

// Step 2: Generate video with Veo 3.1 using the image.
let operation = await ai.models.generateVideos({
  model: "veo-3.1-generate-preview",
  prompt: prompt,
  image: {
    imageBytes: imageResponse.generatedImages[0].image.imageBytes,
    mimeType: "image/png",
  },
});

// Poll the operation status until the video is ready.
while (!operation.done) {
  console.log("Waiting for video generation to complete...")
  await new Promise((resolve) => setTimeout(resolve, 10000));
  operation = await ai.operations.getVideosOperation({
    operation: operation,
  });
}

// Download the video.
ai.files.download({
    file: operation.response.generatedVideos[0].video,
    downloadPath: "veo3_with_image_input.mp4",
});
console.log(`Generated video saved to veo3_with_image_input.mp4`);

Go

package main

import (
    "context"
    "log"
    "os"
    "time"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    prompt := "Panning wide shot of a calico kitten sleeping in the sunshine"

    // Step 1: Generate an image with Nano Banana.
    imageResponse, err := client.Models.GenerateContent(
        ctx,
        "gemini-2.5-flash-image",
        prompt,
        nil, // GenerateImagesConfig
    )
    if err != nil {
        log.Fatal(err)
    }

    // Step 2: Generate video with Veo 3.1 using the image.
    operation, err := client.Models.GenerateVideos(
        ctx,
        "veo-3.1-generate-preview",
        prompt,
        imageResponse.GeneratedImages[0].Image,
        nil, // GenerateVideosConfig
    )
    if err != nil {
        log.Fatal(err)
    }

    // Poll the operation status until the video is ready.
    for !operation.Done {
        log.Println("Waiting for video generation to complete...")
        time.Sleep(10 * time.Second)
        operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
    }

    // Download the video.
    video := operation.Response.GeneratedVideos[0]
    client.Files.Download(ctx, video.Video, nil)
    fname := "veo3_with_image_input.mp4"
    _ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
    log.Printf("Generated video saved to %s\n", fname)
}

Como usar imagens de referência

O Veo 3.1 agora aceita até três imagens de referência para orientar o conteúdo do vídeo gerado. Forneça imagens de uma pessoa, personagem ou produto para preservar a aparência do assunto no vídeo de saída.

Por exemplo, usar estas três imagens geradas com o Nano Banana como referências com um comando bem escrito cria o seguinte vídeo:

`dress_image` `woman_image` `glasses_image`
Vestido de flamingo de alta costura com camadas de penas rosa e fúcsia Mulher bonita com cabelo escuro e olhos castanhos quentes Óculos de sol rosa em formato de coração

Python

import time
from google import genai

client = genai.Client()

prompt = "The video opens with a medium, eye-level shot of a beautiful woman with dark hair and warm brown eyes. She wears a magnificent, high-fashion flamingo dress with layers of pink and fuchsia feathers, complemented by whimsical pink, heart-shaped sunglasses. She walks with serene confidence through the crystal-clear, shallow turquoise water of a sun-drenched lagoon. The camera slowly pulls back to a medium-wide shot, revealing the breathtaking scene as the dress's long train glides and floats gracefully on the water's surface behind her. The cinematic, dreamlike atmosphere is enhanced by the vibrant colors of the dress against the serene, minimalist landscape, capturing a moment of pure elegance and high-fashion fantasy."

dress_reference = types.VideoGenerationReferenceImage(
  image=dress_image, # Generated separately with Nano Banana
  reference_type="asset"
)

sunglasses_reference = types.VideoGenerationReferenceImage(
  image=glasses_image, # Generated separately with Nano Banana
  reference_type="asset"
)

woman_reference = types.VideoGenerationReferenceImage(
  image=woman_image, # Generated separately with Nano Banana
  reference_type="asset"
)

operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt=prompt,
    config=types.GenerateVideosConfig(
      reference_images=[dress_reference, glasses_reference, woman_reference],
    ),
)

# Poll the operation status until the video is ready.
while not operation.done:
    print("Waiting for video generation to complete...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Download the video.
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3.1_with_reference_images.mp4")
print("Generated video saved to veo3.1_with_reference_images.mp4")
Mulher caminhando por uma lagoa com um vestido de alta moda e óculos de sol
veo3.1_with_reference_images.mp4

Usar o primeiro e o último frames

Com o Veo 3.1, você pode criar vídeos usando interpolação ou especificando o primeiro e o último frame do vídeo. Para informações sobre como escrever comandos de texto eficazes para geração de vídeo, consulte o guia de comandos do Veo.

Python

import time
from google import genai

client = genai.Client()

prompt = "A cinematic, haunting video. A ghostly woman with long white hair and a flowing dress swings gently on a rope swing beneath a massive, gnarled tree in a foggy, moonlit clearing. The fog thickens and swirls around her, and she slowly fades away, vanishing completely. The empty swing is left swaying rhythmically on its own in the eerie silence."

operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt=prompt,
    image=first_image, # Generated separately with Nano Banana
    config=types.GenerateVideosConfig(
      last_frame=last_image # Generated separately with Nano Banana
    ),
)

# Poll the operation status until the video is ready.
while not operation.done:
    print("Waiting for video generation to complete...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Download the video.
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3.1_with_interpolation.mp4")
print("Generated video saved to veo3.1_with_interpolation.mp4")
`first_image` `last_image` veo3.1_with_interpolation.mp4
Uma mulher fantasmagórica com cabelos brancos longos e um vestido esvoaçante se balança suavemente em um balanço de corda A mulher fantasmagórica desaparece do balanço Um vídeo cinematográfico e assustador de uma mulher misteriosa desaparecendo de um balanço na neblina

Como estender vídeos do Veo

Use o Veo 3.1 para estender vídeos gerados anteriormente com o Veo em até 7 segundos e até 20 vezes.

Limitações do vídeo de entrada:

  • Vídeos gerados pelo Veo com até 141 segundos de duração.
  • A API Gemini só oferece suporte a extensões de vídeo para vídeos gerados com o Veo.
  • Os vídeos de entrada precisam ter uma determinada duração, proporção e dimensões:
    • Proporção: 9:16 ou 16:9
    • Resolução: 720p
    • Duração do vídeo: até 141 segundos

A saída da extensão é um único vídeo que combina o vídeo de entrada do usuário e o vídeo estendido gerado por até 148 segundos.

Este exemplo usa o vídeo gerado pelo Veo butterfly_video, mostrado aqui com o comando original, e o estende usando o parâmetro video e um novo comando:

Comando Saída: butterfly_video
Uma borboleta de origami bate as asas e voa para fora das portas francesas em direção ao jardim. Uma borboleta de origami bate as asas e voa para fora das portas francesas, entrando no jardim.

Python

import time
from google import genai

client = genai.Client()

prompt = "Track the butterfly into the garden as it lands on an orange origami flower. A fluffy white puppy runs up and gently pats the flower."

operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    video=butterfly_video,
    prompt=prompt,
    config=types.GenerateVideosConfig(
        number_of_videos=1,
        resolution="720p"
    ),
)

# Poll the operation status until the video is ready.
while not operation.done:
    print("Waiting for video generation to complete...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Download the video.
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3.1_extension.mp4")
print("Generated video saved to veo3.1_extension.mp4")
A borboleta voa para o jardim e pousa em uma flor de origami. Um cachorrinho branco e fofo corre e toca suavemente a flor.
veo3.1_extension.mp4

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

Como lidar com operações assíncronas

A geração de vídeo é uma tarefa que exige muita computação. Quando você envia uma solicitação para a API, ela inicia um job de longa duração e retorna imediatamente um objeto operation. Em seguida, faça uma pesquisa até que o vídeo esteja pronto, o que é indicado pelo status done como verdadeiro.

O núcleo desse processo é um loop de polling, que verifica periodicamente o status do job.

Python

import time
from google import genai
from google.genai import types

client = genai.Client()

# After starting the job, you get an operation object.
operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt="A cinematic shot of a majestic lion in the savannah.",
)

# Alternatively, you can use operation.name to get the operation.
operation = types.GenerateVideosOperation(name=operation.name)

# This loop checks the job status every 10 seconds.
while not operation.done:
    time.sleep(10)
    # Refresh the operation object to get the latest status.
    operation = client.operations.get(operation)

# Once done, the result is in operation.response.
# ... process and download your video ...

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

// After starting the job, you get an operation object.
let operation = await ai.models.generateVideos({
  model: "veo-3.1-generate-preview",
  prompt: "A cinematic shot of a majestic lion in the savannah.",
});

// Alternatively, you can use operation.name to get the operation.
// operation = types.GenerateVideosOperation(name=operation.name)

// This loop checks the job status every 10 seconds.
while (!operation.done) {
    await new Promise((resolve) => setTimeout(resolve, 1000));
    // Refresh the operation object to get the latest status.
    operation = await ai.operations.getVideosOperation({ operation });
}

// Once done, the result is in operation.response.
// ... process and download your video ...

Parâmetros e especificações da API do Veo

Estes são os parâmetros que você pode definir na solicitação de API para controlar o processo de geração de vídeo.

Parâmetro Descrição Veo 3.1 e Veo 3.1 Fast Veo 3 e Veo 3 Fast Veo 2
prompt A descrição de texto do vídeo. Compatível com dicas de áudio. string string string
negativePrompt Texto descrevendo o que não incluir no vídeo. string string string
image Uma imagem inicial para animar. Objeto Image Objeto Image Objeto Image
lastFrame A imagem final para um vídeo de interpolação fazer a transição. Precisa ser usado com o parâmetro image. Objeto Image Objeto Image Objeto Image
referenceImages Até três imagens para serem usadas como referências de estilo e conteúdo. Objeto VideoGenerationReferenceImage (somente Veo 3.1) N/A N/A
video Vídeo a ser usado na extensão de vídeo. Objeto Video N/A N/A
aspectRatio A proporção do vídeo. "16:9" (padrão, 720p e 1080p),
"9:16"(720p e 1080p)

"16:9" (padrão, 720p e 1080p),
"9:16" (720p e 1080p)
"16:9" (padrão, 720p),
"9:16" (720p)
resolution A proporção do vídeo. "720p" (padrão),
"1080p" (aceita apenas duração de 8 segundos)

"720p" apenas para extensão
"720p" (padrão),
"1080p" (somente 16:9)
Incompatível
durationSeconds Duração do vídeo gerado. "4", "6", "8".

Precisa ser "8" ao usar extensão ou interpolação (compatível com 16:9 e 9:16) e ao usar referenceImages (compatível apenas com 16:9)
"4", "6", "8" "5", "6", "8"
personGeneration Controla a geração de pessoas.
(consulte Limitações para restrições regionais)
Texto para vídeo e extensão:
"allow_all" somente
Imagens de referência, interpolação e imagem para vídeo:
"allow_adult" somente
Texto para vídeo:
"allow_all" somente
Imagem para vídeo:
"allow_adult" somente
Texto para vídeo:
"allow_all", "allow_adult", "dont_allow"
Imagem para vídeo:
"allow_adult" e "dont_allow"

O parâmetro seed também está disponível para os modelos do Veo 3. Isso não garante o determinismo, mas o melhora um pouco.

Você pode personalizar a geração de vídeo definindo parâmetros na solicitação. Por exemplo, é possível especificar negativePrompt para orientar o modelo.

Python

import time
from google import genai
from google.genai import types

client = genai.Client()

operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt="A cinematic shot of a majestic lion in the savannah.",
    config=types.GenerateVideosConfig(negative_prompt="cartoon, drawing, low quality"),
)

# Poll the operation status until the video is ready.
while not operation.done:
    print("Waiting for video generation to complete...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Download the generated video.
generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("parameters_example.mp4")
print("Generated video saved to parameters_example.mp4")

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

let operation = await ai.models.generateVideos({
  model: "veo-3.1-generate-preview",
  prompt: "A cinematic shot of a majestic lion in the savannah.",
  config: {
    aspectRatio: "16:9",
    negativePrompt: "cartoon, drawing, low quality"
  },
});

// Poll the operation status until the video is ready.
while (!operation.done) {
  console.log("Waiting for video generation to complete...")
  await new Promise((resolve) => setTimeout(resolve, 10000));
  operation = await ai.operations.getVideosOperation({
    operation: operation,
  });
}

// Download the generated video.
ai.files.download({
    file: operation.response.generatedVideos[0].video,
    downloadPath: "parameters_example.mp4",
});
console.log(`Generated video saved to parameters_example.mp4`);

Go

package main

import (
    "context"
    "log"
    "os"
    "time"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    videoConfig := &genai.GenerateVideosConfig{
        AspectRatio: "16:9",
        NegativePrompt: "cartoon, drawing, low quality",
    }

    operation, _ := client.Models.GenerateVideos(
        ctx,
        "veo-3.1-generate-preview",
        "A cinematic shot of a majestic lion in the savannah.",
        nil,
        videoConfig,
    )

    // Poll the operation status until the video is ready.
    for !operation.Done {
        log.Println("Waiting for video generation to complete...")
        time.Sleep(10 * time.Second)
        operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
    }

    // Download the generated video.
    video := operation.Response.GeneratedVideos[0]
    client.Files.Download(ctx, video.Video, nil)
    fname := "parameters_example.mp4"
    _ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
    log.Printf("Generated video saved to %s\n", fname)
}

REST

# Note: This script uses jq to parse the JSON response.
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"

# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -X "POST" \
  -d '{
    "instances": [{
        "prompt": "A cinematic shot of a majestic lion in the savannah."
      }
    ],
    "parameters": {
      "aspectRatio": "16:9",
      "negativePrompt": "cartoon, drawing, low quality"
    }
  }' | jq -r .name)

# Poll the operation status until the video is ready
while true; do
  # Get the full JSON status and store it in a variable.
  status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")

  # Check the "done" field from the JSON stored in the variable.
  is_done=$(echo "${status_response}" | jq .done)

  if [ "${is_done}" = "true" ]; then
    # Extract the download URI from the final response.
    video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
    echo "Downloading video from: ${video_uri}"

    # Download the video using the URI and API key and follow redirects.
    curl -L -o parameters_example.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
    break
  fi
  # Wait for 5 seconds before checking again.
  sleep 10
done

Guia de comandos do Veo

Esta seção contém exemplos de vídeos que você pode criar usando o Veo e mostra como modificar comandos para produzir resultados diferentes.

Filtros de segurança

O Veo aplica filtros de segurança no Gemini para garantir que os vídeos gerados e as fotos enviadas não contenham conteúdo ofensivo. Os comandos que violam nossos termos e diretrizes são bloqueados.

Noções básicas para escrever comandos

Os bons comandos são descritivos e claros. Para aproveitar ao máximo o Veo, comece identificando sua ideia principal, refine-a adicionando palavras-chave e modificadores e incorpore terminologia específica de vídeo aos seus comandos.

Inclua os seguintes elementos no comando:

  • Assunto: o objeto, a pessoa, o animal ou o cenário que você quer no vídeo, como paisagem urbana, natureza, veículos ou cachorrinhos.
  • Ação: o que o sujeito está fazendo (por exemplo, caminhando, correndo ou virando a cabeça).
  • Estilo: especifique a direção criativa usando palavras-chave específicas de estilo de filme, como ficção científica, filme de terror, film noir ou estilos animados como desenho animado.
  • Posicionamento e movimento da câmera: [opcional] controle a localização e o movimento da câmera usando termos como vista aérea, na altura dos olhos, vista de cima para baixo, movimento de câmera ou vista de baixo para cima.
  • Composição: [opcional] como o plano é enquadrado, por exemplo, plano geral, close-up, plano único ou plano duplo.
  • Efeitos de foco e lente: [opcional] use termos como foco raso, foco profundo, foco suave, lente macro e lente grande-angular para conseguir efeitos visuais específicos.
  • Ambiente: [opcional] como a cor e a luz contribuem para a cena, por exemplo, tons azuis, noite ou tons quentes.

Mais dicas para escrever comandos

  • Use uma linguagem descritiva: use adjetivos e advérbios para dar uma ideia clara ao Veo.
  • Melhore os detalhes do rosto: especifique os detalhes do rosto como foco da foto, por exemplo, usando a palavra retrato no comando.

Para estratégias de comandos mais abrangentes, acesse Introdução ao design de comandos.

Solicitar áudio

Com o Veo 3, você pode dar sugestões para efeitos sonoros, ruído ambiente e diálogo. O modelo captura a sutileza dessas dicas para gerar uma trilha sonora sincronizada.

  • Diálogo:use aspas para falas específicas. (Exemplo: "Esta deve ser a chave", ele murmurou.)
  • Efeitos sonoros (SFX): descreva os sons de forma explícita. (Exemplo: pneus cantando alto, motor roncando.)
  • Ruído ambiente:descreva a paisagem sonora do ambiente. Exemplo: um zumbido fraco e assustador ressoa ao fundo.

Esses vídeos mostram como usar comandos para gerar áudio com o Veo 3 com níveis de detalhes cada vez maiores.

Comando Saída gerada
Mais detalhes (diálogo e ambiente)
: uma imagem ampla de uma floresta nebulosa do noroeste do Pacífico. Dois caminhantes exaustos, um homem e uma mulher, atravessam samambaias quando o homem para abruptamente, olhando para uma árvore. Close-up: marcas de garras frescas e profundas estão gravadas na casca da árvore. Homem: (com a mão na faca de caça) "Esse não é um urso comum". Mulher: (voz tensa de medo, olhando para a floresta) "Então o que é?" Um latido áspero, estalos de galhos, passos na terra úmida. Um pássaro solitário canta.
Duas pessoas na floresta encontram sinais de um urso.
Menos detalhes (diálogo)
Animação de recorte de papel. Nova bibliotecária: "Onde você guarda os livros proibidos?" Curador antigo: "Não. Eles nos mantêm."
Bibliotecários animados discutindo livros proibidos

Teste estes comandos para ouvir o áudio! Teste o Veo 3

Usar imagens de referência nos comandos

Você pode usar uma ou mais imagens como entradas para orientar os vídeos gerados usando os recursos de imagem para vídeo do Veo. O Veo usa a imagem de entrada como o frame inicial. Selecione uma imagem mais próxima do que você imagina como a primeira cena do seu vídeo para animar objetos do dia a dia, dar vida a desenhos e pinturas e adicionar movimento e som a cenas da natureza.

Comando Saída gerada
Imagem de entrada (gerada pelo Nano Banana)
Uma macrofoto hiper-realista de surfistas minúsculos e em miniatura surfando ondas do mar dentro de uma pia de banheiro rústica de pedra. Uma torneira de latão vintage está aberta, criando o surf perpétuo. Surreal, divertido, iluminação natural brilhante.
Pequenos surfistas em miniatura surfando ondas do oceano dentro de uma pia de banheiro rústica de pedra.
Vídeo de saída (gerado pelo Veo 3.1)
Um vídeo macro surreal e cinematográfico. Pequenos surfistas pegam ondas perpétuas e rolantes dentro de uma pia de banheiro de pedra. Uma torneira de latão vintage em funcionamento gera o surf sem fim. A câmera faz um movimento panorâmico lento pela cena caprichosa e iluminada pelo sol enquanto as figuras em miniatura esculpem habilmente a água azul-turquesa.
Pequenos surfistas circulando as ondas em uma pia de banheiro.

Com o Veo 3.1, você pode fazer referência a imagens ou elementos para direcionar o conteúdo do vídeo gerado. Forneça até três imagens de recursos de uma única pessoa, personagem ou produto. O Veo preserva a aparência do assunto no vídeo de saída.

Comando Saída gerada
Imagem de referência (gerada pelo Nano Banana)
Um peixe-pescador de águas profundas espreita na água escura, com os dentes à mostra e a isca brilhando.
Um peixe-diabo escuro e brilhante
Imagem de referência (gerada pelo Nano Banana)
: uma fantasia de princesa infantil rosa com uma varinha e uma tiara, em um plano de fundo simples de produto.
Fantasia de princesa rosa infantil
Vídeo de saída (gerado pelo Veo 3.1)
Crie uma versão de desenho animado engraçada do peixe usando a fantasia, nadando e acenando a varinha.
Um peixe-diabo usando uma fantasia de princesa

Com o Veo 3.1, você também pode gerar vídeos especificando o primeiro e o último frame.

Comando Saída gerada
Primeira imagem (gerada pelo Nano Banana)
Uma imagem frontal fotorrealista de alta qualidade de um gato ruivo dirigindo um carro de corrida conversível vermelho na costa da Riviera Francesa.
Um gato ruivo dirigindo um carro de corrida conversível vermelho
Última imagem (gerada pelo Nano Banana)
Mostre o que acontece quando o carro decola de um penhasco.
Um gato ruivo dirigindo um conversível vermelho cai de um penhasco
Vídeo de saída (gerado pelo Veo 3.1)
Opcional
Um gato dirige de um penhasco e decola

Com esse recurso, você tem controle preciso sobre a composição da sua foto, definindo o frame inicial e final. Envie uma imagem ou use um frame de uma geração de vídeo anterior para garantir que a cena comece e termine exatamente como você imaginou.

Solicitar extensão

Para estender o vídeo gerado pelo Veo com o Veo 3.1, use o vídeo como entrada junto com um comando de texto opcional. A extensão finaliza o último segundo ou 24 frames do vídeo e continua a ação.

A voz não pode ser estendida de forma eficaz se não estiver presente no último segundo do vídeo.

Comando Saída gerada
Vídeo de entrada (gerado pelo Veo 3.1)
O parapente decola do topo da montanha e começa a planar pelas montanhas com vista para os vales cobertos de flores abaixo.
Um parapente decola do topo de uma montanha
Vídeo de saída (gerado pelo Veo 3.1)
Estenda este vídeo com o parapente descendo lentamente.
Um parapente decola do topo de uma montanha e desce lentamente

Exemplos de comandos e saída

Esta seção apresenta vários comandos, destacando como detalhes descritivos podem melhorar o resultado de cada vídeo.

Sinos

Este vídeo demonstra como usar os elementos dos fundamentos da criação de comandos no seu comando.

Comando Saída gerada
Close-up (composição) de estalactites derretendo (assunto) em uma parede de rocha congelada (contexto) com tons azuis frios (ambiente), com zoom (movimento da câmera) mantendo o detalhe de close-up de gotejamento de água (ação). Pingentes de gelo com um fundo azul.

Homem no telefone

Esses vídeos mostram como revisar o comando com detalhes cada vez mais específicos para que o Veo refine a saída do jeito que você quer.

Comando Saída gerada
Menos detalhes
A câmera se move para mostrar um close-up de um homem desesperado usando um sobretudo verde. Ele está fazendo uma ligação em um telefone de parede de disco com uma luz verde neon. Parece uma cena de filme.
Homem falando ao telefone.
Mais detalhes
Um close cinematográfico mostra um homem desesperado usando um sobretudo verde desbotado enquanto disca um telefone de disco montado em uma parede de tijolos suja, banhada pelo brilho sinistro de um neon verde. A câmera se aproxima, revelando a tensão no maxilar e o desespero gravado no rosto enquanto ele tenta fazer a ligação. A profundidade de campo rasa foca na testa franzida e no telefone preto de discagem, desfocando o fundo em um mar de cores neon e sombras indistintas, criando uma sensação de urgência e isolamento.
Homem falando ao telefone

Leopardo-das-neves

Comando Saída gerada
Comando simples:
Uma criatura fofa com pelo semelhante ao de um leopardo-das-neves está caminhando em uma floresta de inverno, renderização em estilo desenho animado 3D.
O leopardo-das-neves está letárgico.
Comando detalhado:
crie uma cena animada em 3D curta em um estilo de desenho animado alegre. Uma criatura fofa com pelo parecido com o de um leopardo-das-neves, olhos grandes e expressivos e uma forma arredondada e amigável pula feliz em uma floresta de inverno fantástica. A cena deve ter árvores arredondadas cobertas de neve, flocos de neve caindo suavemente e luz solar quente filtrando os galhos. Os movimentos saltitantes e o sorriso largo da criatura precisam transmitir alegria pura. Use um tom alegre e emocionante com cores brilhantes e alegres e animação divertida.
O leopardo-das-neves está correndo mais rápido.

Exemplos por elementos de escrita

Estes exemplos mostram como refinar seus comandos usando cada elemento básico.

Assunto e contexto

Especifique o foco principal (assunto) e o plano de fundo ou ambiente (contexto).

Comando Saída gerada
Uma renderização arquitetônica de um prédio de apartamentos de concreto branco com formas orgânicas fluidas, combinando perfeitamente com vegetação exuberante e elementos futuristas Marcador.
Um satélite flutuando pelo espaço sideral com a lua e algumas estrelas ao fundo. Satélite flutuando na atmosfera.

Ação

Especifique o que o sujeito está fazendo (por exemplo, caminhando, correndo ou virando a cabeça).

Comando Saída gerada
Uma foto ampla de uma mulher caminhando pela praia, parecendo satisfeita e relaxada em direção ao horizonte ao pôr do sol. O pôr do sol é absolutamente lindo.

Estilo

Adicione palavras-chave para direcionar a geração a uma estética específica (por exemplo, surreal, vintage, futurista, noir).

Comando Saída gerada
Estilo filme noir, homem e mulher caminhando na rua, mistério, cinematográfico, preto e branco. O estilo de filme noir é absolutamente lindo.

Movimento e composição da câmera

Especifique como a câmera se move (plano em primeira pessoa, vista aérea, rastreamento com drone) e como o plano é enquadrado (plano aberto, close-up, ângulo baixo).

Comando Saída gerada
Uma foto em primeira pessoa de um carro antigo dirigindo na chuva, Canadá à noite, cinematográfica. O pôr do sol é absolutamente lindo.
Detalhe máximo de um olho com a cidade refletida nele. O pôr do sol é absolutamente lindo.

Ambiente

Paletas de cores e iluminação influenciam o clima. Tente termos como "tons laranja quentes," "luz natural," "nascer do sol" ou "tons azuis frios".

Comando Saída gerada
Um close de uma menina segurando um filhote de golden retriever adorável no parque, à luz do sol. Um filhote de cachorro nos braços de uma menina.
Close cinematográfico de uma mulher triste andando de ônibus na chuva, tons azuis frios, clima triste. Uma mulher andando de ônibus e se sentindo triste.

Solicitações negativas

Os comandos negativos especificam elementos que você não quer no vídeo.

  • ❌ Não use linguagem instrutiva, como não. (por exemplo, "Sem paredes").
  • ✅ Descreva o que você não quer ver. (por exemplo, "wall, frame".
Comando Saída gerada
Sem comando negativo:
gere uma animação curta e estilizada de um grande carvalho solitário com folhas balançando vigorosamente em um vento forte... [truncated]
Árvore com palavras.
Com comando negativo:
[Mesmo comando]

Comando negativo: plano de fundo urbano, estruturas feitas pelo homem, atmosfera escura, tempestuosa ou ameaçadora.
Árvore sem palavras negativas.

Proporções

Com o Veo, é possível especificar a proporção do vídeo.

Comando Saída gerada
Widescreen (16:9)
Crie um vídeo com uma visão de drone de um homem dirigindo um carro conversível vermelho em Palm Springs, anos 1970, luz solar quente, sombras longas.
Um homem dirigindo um carro conversível vermelho em Palm Springs, no estilo dos anos 1970.
Retrato (9:16)
: crie um vídeo destacando o movimento suave de uma majestosa cachoeira havaiana em uma floresta tropical exuberante. Foque no fluxo de água realista, na folhagem detalhada e na iluminação natural para transmitir tranquilidade. Capture a água corrente, a atmosfera nebulosa e a luz do sol filtrada pela densa copa das árvores. Use movimentos suaves e cinematográficos da câmera para mostrar a cachoeira e a área ao redor. Use um tom tranquilo e realista, transportando o espectador para a beleza serena da floresta tropical havaiana.
Uma cachoeira havaiana majestosa em uma floresta tropical exuberante.

Limitações

  • Latência da solicitação: mínima de 11 segundos e máxima de 6 minutos (durante os horários de pico).
  • Limitações regionais:na UE, no Reino Unido, na Suíça e no Oriente Médio e Norte da África, os seguintes são os valores permitidos para personGeneration:
    • Veo 3: somente allow_adult.
    • Veo 2: dont_allow e allow_adult. O padrão é dont_allow.
  • Retenção de vídeo:os vídeos gerados são armazenados no servidor por dois dias e depois removidos. Para salvar uma cópia local, faça o download do vídeo em até dois dias após a geração. Os vídeos mais longos são tratados como vídeos recém-gerados.
  • Marca-d'água:os vídeos criados com o Veo recebem uma marca-d'água usando o SynthID, nossa ferramenta para colocar marcas-d'água e identificar conteúdo gerado com IA. Os vídeos podem ser verificados usando a plataforma de verificação SynthID.
  • Segurança:os vídeos gerados passam por filtros de segurança e processos de verificação de memorização que ajudam a reduzir os riscos de privacidade, direitos autorais e viés.
  • Erro de áudio:às vezes, o Veo 3.1 impede a geração de um vídeo devido a filtros de segurança ou outros problemas de processamento com o áudio. Você não vai receber cobranças se o vídeo for bloqueado.

Recursos do modelo

Recurso Descrição Veo 3.1 e Veo 3.1 Fast Veo 3 e Veo 3 Fast Veo 2
Áudio Gera áudio com vídeo de forma nativa. Gera áudio com vídeo de forma nativa. ✔️ Sempre ativada ❌ Somente silencioso
Modalidades de entrada O tipo de entrada usado para a geração. Texto para vídeo, imagem para vídeo, vídeo para vídeo Texto para vídeo, imagem para vídeo Texto para vídeo, imagem para vídeo
Resolução A resolução de saída do vídeo. 720p e 1080p (apenas 8 segundos)

720p apenas ao usar a extensão de vídeo.
720p e 1080p (somente 16:9) 720p
Frame rate O frame rate de saída do vídeo. 24 fps 24 fps 24 fps
Duração do vídeo Duração do vídeo gerado. 8 segundos, 6 segundos, 4 segundos
8 segundos apenas ao usar imagens de referência
8 segundos 5 a 8 segundos
Vídeos por solicitação Número de vídeos gerados por solicitação. 1 1 1 ou 2
Status e detalhes Disponibilidade do modelo e mais detalhes. Visualizar Estável Estável

Versões do modelo

Confira as páginas Preços e Limites de taxa para mais detalhes sobre o uso específico do modelo do Veo.

Pré-lançamento do Veo 3.1

Propriedade Descrição
Código do modelo

API Gemini

veo-3.1-generate-preview

Tipos de dados compatíveis

Entrada

Texto, imagem

Saída

Vídeo com áudio

Limites de

Entrada de texto

1.024 tokens

Vídeo de saída

1

Última atualização Setembro de 2025

Pré-lançamento do Veo 3.1 Fast

Propriedade Descrição
Código do modelo

API Gemini

veo-3.1-fast-generate-preview

Tipos de dados compatíveis

Entrada

Texto, imagem

Saída

Vídeo com áudio

Limites de

Entrada de texto

1.024 tokens

Vídeo de saída

1

Última atualização Setembro de 2025

Veo 3

Propriedade Descrição
Código do modelo

API Gemini

veo-3.0-generate-001

Tipos de dados compatíveis

Entrada

Texto, imagem

Saída

Vídeo com áudio

Limites de

Entrada de texto

1.024 tokens

Vídeo de saída

1

Última atualização Julho de 2025

Veo 3 Fast

Com o Veo 3 Fast, os desenvolvedores podem criar vídeos com som, mantendo a alta qualidade e otimizando a velocidade e os casos de uso comerciais. É ideal para serviços de back-end que geram anúncios de forma programática, ferramentas para testes A/B rápidos de conceitos criativos ou apps que precisam produzir conteúdo para redes sociais rapidamente.
Propriedade Descrição
Código do modelo

API Gemini

veo-3.0-fast-generate-001

Tipos de dados compatíveis

Entrada

Texto, imagem

Saída

Vídeo com áudio

Limites de

Entrada de texto

1.024 tokens

Vídeo de saída

1

Última atualização Julho de 2025

Veo 2

Propriedade Descrição
Código do modelo

API Gemini

veo-2.0-generate-001

Tipos de dados compatíveis

Entrada

Texto, imagem

Saída

Vídeo

Limites de

Entrada de texto

N/A

Entrada de imagem

Qualquer resolução e proporção de imagem com tamanho de arquivo de até 20 MB

Vídeo de saída

Até 2

Última atualização Abril de 2025

A seguir