Veo 3 es el modelo de vanguardia de Google para generar videos de alta fidelidad de 8 segundos y 720p a partir de una instrucción de texto, con un realismo sorprendente y audio generado de forma nativa. Veo 3 se destaca en una amplia variedad de estilos visuales y cinematográficos. Para obtener más información sobre las variantes disponibles del modelo de Veo, consulta la sección Versiones del modelo.
Elige un ejemplo para ver cómo generar un video con diálogo, realismo cinematográfico o animación creativa:
Genera videos a partir de imágenes
En el siguiente código, se muestra cómo generar una imagen con Imagen y, luego, usarla como fotograma inicial para generar un video con Veo 3.
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 3 using the image.
operation = client.models.generate_videos(
model="veo-3.0-generate-preview",
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("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 Imagen.
const imagenResponse = await ai.models.generateImages({
model: "imagen-3.0-generate-002",
prompt: prompt,
});
// Step 2: Generate video with Veo 3 using the image.
let operation = await ai.models.generateVideos({
model: "veo-3.0-generate-preview",
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: "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 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 3 using the image.
operation, err := client.Models.GenerateVideos(
ctx,
"veo-3.0-generate-preview",
prompt,
imagenResponse.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)
}
Parámetros y especificaciones
Estos son los parámetros que puedes configurar en tu solicitud a la API para controlar el proceso de generación de video.
Parámetro | Descripción | Veo 3 y Veo 3 Fast (versión preliminar) | Veo 2 (estable) |
---|---|---|---|
prompt |
Es la descripción de texto del video. Admite pistas de audio. | string |
string |
negativePrompt |
Texto que describe lo que no se debe incluir en el video. | string |
string |
image |
Es una imagen inicial para animar. | Objeto Image |
Objeto Image |
aspectRatio |
Es la relación de aspecto del video. | "16:9" |
"16:9" , "9:16" |
personGeneration |
Controla la generación de personas. (Consulta Limitaciones para conocer las restricciones regionales) |
Texto a video:"allow_all" solamenteImagen a video: "dont_allow" solo para regiones restringidas.
y "allow_adult" solo para todos los demás.
|
Texto a video: "allow_all" , "allow_adult" , "dont_allow"
Imagen a video: "dont_allow" solo para regiones restringidas.
"allow_adult" y "dont_allow" para todos los demás
|
Puedes personalizar la generación de videos configurando parámetros en tu solicitud.
Por ejemplo, puedes especificar negativePrompt
para guiar el 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
Maneja operaciones asíncronas
La generación de videos es una tarea que requiere mucha capacidad de procesamiento. Cuando envías una solicitud, la API inicia un trabajo de larga duración y muestra de inmediato un objeto operation
.
Luego, debes sondear hasta que el video esté listo, lo que se indica con el estado done
como verdadero.
El núcleo de este proceso es un bucle de sondeo, que verifica periódicamente el estado del trabajo.
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 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 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 ...
Funciones del modelo
Función | Descripción | Veo 3 y Veo 3 Fast (versión preliminar) | Veo 2 (estable) |
---|---|---|---|
Audio | Genera audio de forma nativa con el video. | ✔️ Siempre activada | ❌ Solo silencioso |
Modalidades de entrada | Es el tipo de entrada que se usa para la generación. | Texto a video, imagen a video | Texto a video, imagen a video |
Solución | Es la resolución de salida del video. | 720p | 720p |
Velocidad de fotogramas | Es la velocidad de fotogramas de salida del video. | 24 fotogramas | 24 fotogramas |
Duración del video | Es la duración del video generado. | 8 segundos | 5 a 8 segundos |
Videos por solicitud | Es la cantidad de videos que se generan por solicitud. | 1 | 1 o 2 |
Estado y detalles | Disponibilidad del modelo y más detalles | Vista previa | Estable |
Consulta la sección Versiones del modelo y las páginas Precios y Límites de frecuencia para obtener más detalles sobre el uso de Veo.
Guía de instrucciones de Veo
En esta sección, se incluyen ejemplos de videos que puedes crear con Veo y se muestra cómo modificar las instrucciones para producir resultados distintos.
Filtros de seguridad
Veo aplica filtros de seguridad en Gemini para garantizar que los videos generados y las fotos subidas no contengan contenido ofensivo. Se bloquean las instrucciones que infringen nuestros términos y lineamientos.
Conceptos básicos de la escritura de instrucciones
Las buenas instrucciones son descriptivas y claras. Para aprovechar al máximo Veo, comienza por identificar tu idea principal, luego, agrega palabras clave y modificadores para definirla mejor, y, por último, incorpora terminología específica de video en tus instrucciones.
Los siguientes elementos deben incluirse en la instrucción:
- Asunto: El objeto, la persona, el animal o el paisaje que quieres incluir en tu video, como paisaje urbano, naturaleza, vehículos o cachorros.
- Acción: Lo que hace el sujeto (por ejemplo, caminar, correr o girar la cabeza).
- Estilo: Especifica la dirección creativa con palabras clave de estilos cinematográficos específicos, como ciencia ficción, película de terror, cine negro o estilos animados como dibujos animados.
- Posicionamiento y movimiento de la cámara: [Opcional] Controla la ubicación y el movimiento de la cámara con términos como vista aérea, a la altura de los ojos, toma desde arriba, toma con dolly o vista de gusano.
- Composición: [Opcional] Cómo se enmarca la toma, por ejemplo, plano general, primer plano, plano único o plano doble.
- Efectos de enfoque y lente: [Opcional] Usa términos como enfoque superficial, enfoque profundo, enfoque suave, lente macro y lente gran angular para lograr efectos visuales específicos.
- Ambiente: [Opcional] Cómo el color y la luz contribuyen a la escena, por ejemplo, tonos azules, noche o tonos cálidos.
Más sugerencias para escribir instrucciones
- Usa lenguaje descriptivo: Usa adjetivos y adverbios para que Veo tenga una idea clara.
- Mejora los detalles faciales: Especifica los detalles faciales como el enfoque de la foto, como usar la palabra retrato en la instrucción.
Para obtener estrategias de instrucciones más completas, consulta Introducción al diseño de instrucciones.
Solicitud de audio
Con Veo 3, puedes proporcionar indicaciones para efectos de sonido, ruido ambiental y diálogo. El modelo capta los matices de estas pistas para generar una banda sonora sincronizada.
- Diálogo: Usa comillas para el discurso específico. (Ejemplo: "Esta debe ser la llave", murmuró).
- Efectos de sonido (SFX): Describen los sonidos de forma explícita. (Ejemplo: Los neumáticos chirrían con fuerza, el motor ruge).
- Ruido ambiental: Describe el paisaje sonoro del entorno. (Ejemplo: Un zumbido tenue y misterioso resuena en el fondo).
En estos videos, se muestra cómo se le dan instrucciones a la generación de audio de Veo 3 con niveles de detalle cada vez mayores.
Instrucción | Resultados generados |
---|---|
Más detalles (diálogo y ambiente) Primer plano de dos personas mirando un dibujo críptico en una pared, con la luz de una linterna parpadeando. "Esta debe ser la llave", murmuró, mientras trazaba el patrón. “¿Pero qué significa?”, preguntó, perpleja, mientras inclinaba la cabeza. Piedra húmeda, tallados intrincados, símbolos ocultos. En segundo plano, se escucha un zumbido tenue y misterioso. |
![]() |
Menos detalles (diálogo) Campamento (detención de movimiento): Campista: "¡Ahora soy uno con la naturaleza!" Oso: "A la naturaleza le gustaría tener algo de espacio personal". |
![]() |
Prueba estas instrucciones para escuchar el audio. Probar Veo 3
Cómo usar imágenes de referencia para generar videos
Puedes animar objetos cotidianos, dar vida a dibujos y pinturas, y agregar movimiento y sonido a escenas de la naturaleza con la función de imagen a video de Veo.
Instrucción | Resultados generados |
---|---|
Imagen de entrada (generada por Imagen) Conejo con una barra de chocolate. |
![]() |
Video de salida (generado por Veo 3) El conejo huye. |
![]() |
Ejemplos de instrucciones y resultados
En esta sección, se presentan varias instrucciones que destacan cómo los detalles descriptivos pueden mejorar el resultado de cada video.
Hielos
En este video, se muestra cómo puedes usar los elementos de los conceptos básicos de la redacción de instrucciones en tus instrucciones.
Instrucción | Resultados generados |
---|---|
Primer plano (composición) de carámbanos que se derriten (sujeto) en una pared de roca congelada (contexto) con tonos azules fríos (ambiente), con zoom (movimiento de la cámara) que mantiene el detalle en primer plano de las gotas de agua (acción). |
![]() |
Hombre hablando por teléfono
En estos videos, se muestra cómo puedes revisar tu instrucción con detalles cada vez más específicos para que Veo defina mejor el resultado según tus preferencias.
Instrucción | Resultados generados |
---|---|
Menos detalles La cámara se desplaza para mostrar un primer plano de un hombre desesperado con un abrigo verde. Está haciendo una llamada en un teléfono de pared de disco con una luz verde de neón. Parece una escena de película. |
![]() |
Más detalles Una toma cinematográfica en primer plano sigue a un hombre desesperado con un abrigo verde desgastado mientras marca un número en un teléfono de disco montado en una pared de ladrillos sucia, bañada en el resplandor misterioso de un letrero de neón verde. La cámara se acerca y revela la tensión en su mandíbula y la desesperación grabada en su rostro mientras lucha por hacer la llamada. La profundidad de campo superficial se enfoca en su frente arrugada y el teléfono rotatorio negro, y desenfoca el fondo en un mar de colores neón y sombras indistintas, lo que crea una sensación de urgencia y aislamiento. |
![]() |
Leopardo de las nieves
Instrucción | Resultados generados |
---|---|
Instrucción simple: Una criatura adorable con pelaje similar al de un leopardo de nieve camina por un bosque invernal, renderizado en estilo de dibujos animados en 3D. |
![]() |
Instrucción detallada: Crea una escena animada en 3D corta con un estilo de dibujos animados alegre. Una criatura tierna con pelaje similar al de un leopardo de las nieves, ojos grandes y expresivos, y una forma redondeada y amigable se pavonea felizmente por un bosque invernal caprichoso. La escena debe incluir árboles redondeados cubiertos de nieve, copos de nieve que caen suavemente y luz solar cálida que se filtra entre las ramas. Los movimientos elásticos y la sonrisa amplia de la criatura deben transmitir pura alegría. Intenta usar un tono alegre y conmovedor con colores brillantes y alegres, y animaciones divertidas. |
![]() |
Ejemplos por elementos de escritura
En estos ejemplos, se muestra cómo definir mejor tus instrucciones según cada elemento básico.
Asunto y contexto
Especifica el enfoque principal (sujeto) y el fondo o el entorno (contexto).
Instrucción | Resultados generados |
---|---|
Render arquitectónico de un edificio de departamentos de hormigón blanco con formas orgánicas fluidas, que se fusiona a la perfección con la vegetación exuberante y los elementos futuristas |
![]() |
Un satélite flotando en el espacio exterior con la Luna y algunas estrellas de fondo. |
![]() |
Acción
Especifica lo que está haciendo el sujeto (p.ej., caminar, correr o girar la cabeza).
Instrucción | Resultados generados |
---|---|
Toma amplia de una mujer que camina por la playa, con una expresión de satisfacción y relajación, mirando hacia el horizonte al atardecer. |
![]() |
Estilo
Agrega palabras clave para orientar la generación hacia una estética específica (p.ej., surrealista, vintage, futurista, cine negro).
Instrucción | Resultados generados |
---|---|
Estilo de cine negro, hombre y mujer caminando por la calle, misterio, cinematográfico, blanco y negro. |
![]() |
Movimiento y composición de la cámara
Especifica cómo se mueve la cámara (toma en primera persona, vista aérea, toma de seguimiento con dron) y cómo se encuadra la toma (toma amplia, primer plano, ángulo bajo).
Instrucción | Resultados generados |
---|---|
Toma en primera persona desde un automóvil antiguo que conduce bajo la lluvia, Canadá de noche, cinematográfica. |
![]() |
Primer plano extremo de un ojo con la ciudad reflejada en él. |
![]() |
Ambiente
Las paletas de colores y la iluminación influyen en el ambiente. Prueba con términos como "naranja apagado, tonos cálidos", "luz natural", "amanecer" o "tonos azules fríos".
Instrucción | Resultados generados |
---|---|
Primer plano de una niña sosteniendo un adorable cachorro de golden retriever en el parque, con luz solar. |
![]() |
Primer plano cinematográfico de una mujer triste que viaja en autobús bajo la lluvia, con tonos azules fríos y un ambiente melancólico. |
![]() |
Mensajes negativos
Las instrucciones negativas especifican los elementos que no quieres que aparezcan en el video.
- ❌ No uses lenguaje instructivo, como no o no lo hagas. (p. ej., "Sin paredes").
- ✅ Describe lo que no quieres ver. (p. ej., "muro, marco").
Instrucción | Resultados generados |
---|---|
Sin instrucción negativa: Genera una animación corta y estilizada de un gran roble solitario con hojas que se agitan vigorosamente con un fuerte viento… [truncado] |
![]() |
Con instrucción negativa: [Misma instrucción] Instrucción negativa: Fondo urbano, estructuras artificiales, atmósfera oscura, tormentosa o amenazante. |
![]() |
Relaciones de aspecto
Veo te permite especificar la relación de aspecto de tu video.
Instrucción | Resultados generados |
---|---|
Pantalla ancha (16:9) Crea un video con una vista de seguimiento de un dron de un hombre conduciendo un automóvil convertible rojo en Palm Springs, en la década de 1970, con luz solar cálida y sombras largas. |
![]() |
Vertical (9:16, solo en Veo 2) Crea un video en el que se destaque el movimiento fluido de una majestuosa cascada hawaiana en una exuberante selva tropical. Enfócate en el flujo de agua realista, el follaje detallado y la iluminación natural para transmitir tranquilidad. Captura el agua que fluye, el ambiente brumoso y la luz del sol que se filtra a través del denso follaje. Usa movimientos de cámara cinematográficos y fluidos para mostrar la cascada y sus alrededores. Intenta lograr un tono realista y tranquilo, que transporte al usuario a la serena belleza de la selva tropical hawaiana. |
![]() |
Limitaciones
- Latencia de solicitud: Mín.: 11 segundos; Máx.: 6 minutos (durante las horas pico).
- Limitaciones regionales:
personGeneration
se establece de forma predeterminada endont_allow
y solo acepta esta opción en ubicaciones de la UE, el Reino Unido, Suiza y MENA. - Retención de videos: Los videos generados se almacenan en el servidor durante 2 días y, luego, se quitan. Para guardar una copia local, debes descargar el video en un plazo de 2 días después de su generación.
- Marcas de agua: Los videos creados por Veo tienen una marca de agua con SynthID, nuestra herramienta para identificar contenido generado por IA y agregarle marcas de agua.
- Seguridad: Los videos generados se someten a filtros de seguridad y procesos de verificación de memorización que ayudan a mitigar los riesgos de privacidad, derechos de autor y sesgos.
- Error de audio: A veces, Veo 3 impide la generación de un video debido a filtros de seguridad o a otros problemas de procesamiento con el audio. No se te cobrará si se bloquea la generación de tu video.
Versiones del modelo
Versión preliminar de Veo 3
Propiedad | Descripción |
---|---|
Código del modelo |
API de Gemini
|
Tipos de datos admitidos |
Entrada Texto, imagen Resultado Video con audio |
Límites de |
Entrada de texto 1,024 tokens Video de salida 1 |
Última actualización | Julio de 2025 |
Versión preliminar de Veo 3 Fast
Veo 3 Fast permite a los desarrolladores crear videos con sonido y, al mismo tiempo, mantener una alta calidad y optimizar la velocidad y los casos de uso comerciales. Es ideal para los servicios de backend que generan anuncios de forma programática, las herramientas para realizar pruebas A/B rápidas de conceptos creativos o las apps que necesitan producir contenido para redes sociales rápidamente.Propiedad | Descripción |
---|---|
Código del modelo |
API de Gemini
|
Tipos de datos admitidos |
Entrada Texto, imagen Resultado Video con audio |
Límites de |
Entrada de texto 1,024 tokens Video de salida 1 |
Última actualización | Julio de 2025 |
Veo 2
Propiedad | Descripción |
---|---|
Código del modelo |
API de Gemini
|
Tipos de datos admitidos |
Entrada Texto, imagen Resultado Video |
Límites de |
Entrada de texto N/A Entrada de imagen Cualquier resolución y relación de aspecto de imagen con un tamaño de archivo de hasta 20 MB Video de salida Hasta 2 |
Última actualización | Abril de 2025 |
¿Qué sigue?
- Experimenta con Veo 3 en el Colab de inicio rápido de Veo.
- Aprende a escribir instrucciones aún mejores con nuestra Introducción al diseño de instrucciones.