O Veo 3 é o modelo de última geração do Google para gerar vídeos de 8 segundos em 720p com alta fidelidade a partir de um comando de texto, com realismo impressionante e áudio gerado nativamente. O Veo 3 é excelente em uma ampla variedade de estilos visuais e cinematográficos. Escolha um exemplo abaixo para saber como gerar um vídeo com diálogo, realismo cinematográfico ou animação criativa.
Gerar vídeos com base em imagens
O código a seguir demonstra como gerar uma imagem usando o Imagen e usar essa imagem como o frame inicial do vídeo.
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 Imagen
imagen = client.models.generate_images(
model="imagen-3.0-generate-002",
prompt=prompt,
)
# Step 2: Generate video with Veo 2 using the image
operation = client.models.generate_videos(
model="veo-2.0-generate-001",
prompt=prompt,
image=imagen.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("veo2_with_image_input.mp4")
print("Generated video saved to veo2_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 Imagen
const imagenResponse = await ai.models.generateImages({
model: "imagen-3.0-generate-002",
prompt: prompt,
});
// Step 2: Generate video with Veo 2 using the image
let operation = await ai.models.generateVideos({
model: "veo-2.0-generate-001", // Use Veo 2
prompt: prompt,
image: {
imageBytes: imagenResponse.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: "veo2_with_image_input.mp4",
});
console.log(`Generated video saved to veo2_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 Imagen
imagenResponse, err := client.Models.GenerateImages(
ctx,
"imagen-3.0-generate-002",
prompt,
nil, // GenerateImagesConfig
)
if err != nil {
log.Fatal(err)
}
// Step 2: Generate video with Veo 2 using the image
operation, err := client.Models.GenerateVideos(
ctx,
"veo-2.0-generate-001",
prompt,
imagenResponse.GeneratedImages[0].Image, // Use generated 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 := "veo2_with_image_input.mp4"
_ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
log.Printf("Generated video saved to %s\n", fname)
}
Parâmetros e especificações de geração de vídeo
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 (pré-lançamento) | Veo 2 (estável) |
---|---|---|---|
prompt |
A descrição de texto do vídeo. Compatível com dicas de áudio. | string |
string |
negativePrompt |
Texto descrevendo o que evitar no vídeo. | string |
string |
image |
Uma imagem inicial para animar. | Incompatível | Objeto Image |
aspectRatio |
A proporção do vídeo. | "16:9" |
"16:9" , "9:16" |
personGeneration |
Controla a geração de pessoas. | "allow_all" |
"allow_all" , "allow_adult" , "dont_allow" |
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.0-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.0-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.0-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.0-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
Como manipular operações assíncronas
A geração de vídeo é uma tarefa que exige muita computação. Quando você envia uma solicitação, a API 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.0-generate-preview",
prompt="A cinematic shot of a majestic lion in the savannah.",
)
# Alternatively, you can use the 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.0-generate-preview",
prompt: "A cinematic shot of a majestic lion in the savannah.",
});
// Alternatively, you can use the 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 ...
Recursos do modelo
Recurso | Descrição | Veo 3 (pré-lançamento) | Veo 2 (estável) |
---|---|---|---|
Áudio | 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 | Texto para vídeo, imagem para vídeo |
Resolução | A resolução de saída do vídeo. | 720p | 720p |
Frame rate | O frame rate de saída do vídeo. | 24 fps | 24 fps |
Duração do vídeo | Duração do vídeo gerado. | 8 segundos | 5 a 8 segundos |
Vídeos por solicitação | Número de vídeos gerados por solicitação. | 1 | 1 ou 2 |
Status e detalhes | Disponibilidade do modelo e mais detalhes. | Visualizar | Estável |
Confira as páginas Modelos, Preços e Limites de taxa para mais limitações de uso do Veo.
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.
Comandos de áudio (Veo 3)
Com o Veo 3, você pode dar dicas 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 solicitar a geração de áudio do Veo 3 com níveis crescentes de detalhes.
Comando | Saída gerada |
---|---|
Mais detalhes (diálogo e ambiente) Close-up de duas pessoas olhando para um desenho enigmático em uma parede, com a luz de uma tocha tremulando. "Esta deve ser a chave", murmurou, traçando o padrão. "Mas o que isso significa?", ela perguntou, confusa, inclinando a cabeça. Pedra úmida, entalhes intrincados, símbolos ocultos. Um zumbido fraco e sinistro ressoa ao fundo. |
|
Menos detalhes (diálogo) Acampamento (stop motion): campista: "Agora sou um só com a natureza!" Urso: "A natureza prefere um pouco de espaço pessoal". |
|
Teste estes comandos para ouvir o áudio! Teste o Veo 3
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, altura dos olhos, vista de cima para baixo, travelling 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.
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 pedra 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). |
|
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 faz um movimento de dolly 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 neon verde. Parece uma cena de filme. |
|
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 disco, desfocando o fundo em um mar de cores neon e sombras indistintas, criando uma sensação de urgência e isolamento. |
|
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. |
|
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 precisa ter árvores arredondadas cobertas de neve, flocos de neve caindo suavemente e luz solar quente filtrada pelos 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. |
|
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 |
|
Um satélite flutuando pelo espaço sideral com a lua e algumas estrelas ao fundo. |
|
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. |
|
Estilo
Adicione palavras-chave para direcionar a geração a uma estética específica (por exemplo, surreal, vintage, futurista, filme noir).
Comando | Saída gerada |
---|---|
Estilo filme noir, homem e mulher caminhando na rua, mistério, cinematográfico, preto e branco. |
|
Movimento da câmera e composição
Especifique como a câmera se move (plano em primeira pessoa, vista aérea, drone de rastreamento) 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. |
|
Close extremo de um olho com a cidade refletida nele. |
|
Ambiente
As paletas de cores e a iluminação influenciam o clima. Tente termos como "tons quentes laranja suaves", "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. |
|
Close cinematográfico de uma mulher triste andando de ônibus na chuva, tons azuis frios, clima triste. |
|
Usar imagens de referência para gerar vídeos
Você pode dar vida às imagens usando o recurso imagem para vídeo do Veo.
Comando | Saída gerada |
---|---|
Imagem de entrada (gerada pelo Imagen) Coelho com uma barra de chocolate. |
|
Vídeo de saída (gerado pelo Veo 2) O coelho foge. |
|
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] |
|
Com comando negativo: [Mesmo comando] Comando negativo: plano de fundo urbano, estruturas feitas pelo homem, atmosfera escura, tempestuosa ou ameaçadora. |
|
Proporções
Com o Veo, você pode especificar a proporção da tela 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. |
|
Retrato (9:16 – somente Veo 2) : 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. |
|
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:
personGeneration: "allow_all"
(padrão no Veo 3) e imagem para vídeopersonGeneration
(Veo 2) não são permitidos na UE, no Reino Unido, na Suíça e no Oriente Médio e Norte da África. - 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.
- Marca-d'água:os vídeos criados com o Veo têm uma marca-d'água usando o SynthID, nossa ferramenta para colocar marcas-d'água e identificar conteúdo gerado com IA.
- 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.
A seguir
- Teste o Veo 3 no Colab de início rápido do Veo.
- Saiba como escrever comandos ainda melhores com nossa Introdução à criação de comandos.
- Se você precisar usar a transformação de imagens em vídeos ou outros recursos do Veo 2, consulte o Guia de migração e Veo 2.