Veo 3.1 es el modelo de vanguardia de Google para generar videos de alta fidelidad de 8 segundos en 720p o 1080p con un realismo sorprendente y audio generado de forma nativa. Puedes acceder a este modelo de forma programática con la API de Gemini. Para obtener más información sobre las variantes de modelos de Veo disponibles, consulta la sección Versiones del modelo.
Veo 3.1 se destaca en una amplia variedad de estilos visuales y cinematográficos, y presenta varias funciones nuevas:
- Extensión de video: Extiende los videos que se generaron anteriormente con Veo.
- Generación específica de fotogramas: Genera un video especificando el primer y el último fotograma.
- Dirección basada en imágenes: Usa hasta tres imágenes de referencia para guiar el contenido de tu video generado.
Si deseas obtener más información para escribir instrucciones de texto eficaces para la generación de videos, consulta la guía de instrucciones de Veo.
Generación de texto a video
Elige un ejemplo para ver cómo generar un video con diálogo, realismo cinematográfico o animación creativa:
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
Generación de videos a partir de imágenes
El siguiente código muestra cómo generar una imagen con Gemini 2.5 Flash Image, también conocido como Nano Banana, y, luego, usar esa imagen como fotograma inicial para generar un video con 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)
}
Cómo usar imágenes de referencia
Veo 3.1 ahora acepta hasta 3 imágenes de referencia para guiar el contenido de tu video generado. Proporciona imágenes de una persona, un personaje o un producto para conservar la apariencia del sujeto en el video de salida.
Por ejemplo, usar estas tres imágenes generadas con Nano Banana como referencias con una instrucción bien escrita crea el siguiente video:
`dress_image` |
`woman_image` |
`glasses_image` |
---|---|---|
![]() |
![]() |
![]() |
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")
Cómo usar el primer y el último fotograma
Veo 3.1 te permite crear videos usando interpolación o especificando el primer y el último fotograma del video. Si deseas obtener información para escribir instrucciones de texto eficaces para la generación de videos, consulta la guía de instrucciones de 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 |
---|---|---|
![]() |
![]() |
![]() |
Cómo extender videos de Veo
Usa Veo 3.1 para extender hasta 20 veces los videos que generaste anteriormente con Veo por 7 segundos.
Limitaciones de los videos de entrada:
- Los videos generados por Veo solo pueden durar hasta 141 segundos.
- La API de Gemini solo admite extensiones de video para los videos generados por Veo.
- Se espera que los videos de entrada tengan una cierta longitud, relación de aspecto y dimensiones:
- Relación de aspecto: 9:16 o 16:9
- Resolución: 720p
- Duración del video: 141 segundos o menos
El resultado de la extensión es un solo video que combina el video de entrada del usuario y el video extendido generado, con una duración de hasta 148 segundos.
En este ejemplo, se toma el video generado por Veo butterfly_video, que se muestra aquí con su instrucción original, y se extiende con el parámetro video
y una nueva instrucción:
Instrucción | Resultado: butterfly_video |
---|---|
Una mariposa de origami aletea y vuela por las puertas francesas hacia el jardín. |
![]() |
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")
Si deseas obtener información para escribir instrucciones de texto eficaces para la generación de videos, consulta la guía de instrucciones de Veo.
Maneja operaciones asíncronas
La generación de videos es una tarea que requiere mucha capacidad de procesamiento. Cuando envías una solicitud a la API, se inicia un trabajo de larga duración y se 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.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 y especificaciones de la API de Veo
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.1 y Veo 3.1 Fast | Veo 3 y Veo 3 Fast | Veo 2 |
---|---|---|---|---|
prompt |
Es la descripción de texto del video. Admite pistas de audio. | string |
string |
string |
negativePrompt |
Texto que describe lo que no se debe incluir en el video. | string |
string |
string |
image |
Es una imagen inicial para animar. | Objeto Image |
Objeto Image |
Objeto Image |
lastFrame |
Es la imagen final para la que se realizará la transición en un video de interpolación. Se debe usar en combinación con el parámetro image . |
Objeto Image |
Objeto Image |
Objeto Image |
referenceImages |
Hasta tres imágenes para usarse como referencias de estilo y contenido | Objeto VideoGenerationReferenceImage (solo para Veo 3.1) |
N/A | N/A |
video |
Video que se usará para la extensión de video. | Objeto Video |
N/A | N/A |
aspectRatio |
Es la relación de aspecto del video. | "16:9" (predeterminado, 720p y 1080p),"9:16" (720p y 1080p) |
"16:9" (predeterminado, 720p y 1080p),"9:16" (720p y 1080p) |
"16:9" (predeterminado, 720p),"9:16" (720p) |
resolution |
Es la relación de aspecto del video. | "720p" (predeterminado), "1080p" (solo admite una duración de 8 s)"720p" solo para la extensión |
"720p" (predeterminado), "1080p" (solo 16:9) |
No compatible |
durationSeconds |
Es la duración del video generado. | "4" , "6" , "8" .Debe ser "8" cuando se usa la extensión o la interpolación (admite 16:9 y 9:16) y cuando se usa referenceImages (solo admite 16:9). |
"4" , "6" , "8" |
"5" , "6" , "8" |
personGeneration |
Controla la generación de personas. (Consulta Limitaciones para conocer las restricciones regionales) |
Conversión de texto a video y extensión:"allow_all" solamenteConversión de imagen a video, interpolación e imágenes de referencia: "allow_adult" solamente
|
Texto a video:"allow_all" solamenteImagen a video: "allow_adult" solamente
|
Texto a video: "allow_all" , "allow_adult" , "dont_allow"
Imagen a video: "allow_adult" y "dont_allow"
|
Ten en cuenta que el parámetro seed
también está disponible para los modelos de Veo 3.
No garantiza el determinismo, pero lo mejora ligeramente.
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.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
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, agrega palabras clave y modificadores para definirla mejor, e 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 pintar una imagen clara para Veo.
- Mejora los detalles del rostro: Especifica los detalles del rostro 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 solicitar la generación de audio de Veo 3 con niveles de detalle cada vez mayores.
Instrucción | Resultados generados |
---|---|
Más detalles (diálogos y ambiente) Toma panorámica de un bosque brumoso del noroeste del Pacífico. Dos excursionistas exhaustos, un hombre y una mujer, se abren paso entre los helechos cuando el hombre se detiene abruptamente y mira un árbol. Primer plano: Marcas frescas y profundas de garras en la corteza del árbol. Hombre: (Con la mano en su cuchillo de caza) "Ese no es un oso común". Mujer: (voz tensa por el miedo, explorando el bosque) "¿Entonces qué es?". Una corteza áspera, ramas que se quiebran, pasos sobre la tierra húmeda. Un pájaro solitario gorjea. |
![]() |
Menos detalles (diálogo) Animación de recorte de papel. Bibliotecario nuevo: "¿Dónde guardan los libros prohibidos?". Curador anterior: "No lo hacemos. Nos mantienen". |
![]() |
Prueba estas instrucciones para escuchar el audio. Probar Veo 3
Generación de instrucciones con imágenes de referencia
Puedes usar una o más imágenes como entradas para guiar tus videos generados con las capacidades de imagen a video de Veo. Veo usa la imagen de entrada como el fotograma inicial. Selecciona una imagen que se parezca más a lo que imaginas como la primera escena de tu video para animar objetos cotidianos, dar vida a dibujos y pinturas, y agregar movimiento y sonido a escenas de la naturaleza.
Instrucción | Resultados generados |
---|---|
Imagen de entrada (generada por Nano Banana) Una foto macro hiperrealista de surfistas diminutos en miniatura que surfean las olas del océano dentro de un lavabo rústico de piedra. Un grifo de latón antiguo está abierto y crea el surf perpetuo. Iluminación natural brillante, surrealista y caprichosa. |
![]() |
Video de salida (generado por Veo 3.1) Un video macro cinematográfico y surrealista. Pequeños surfistas cabalgan olas perpetuas y ondulantes dentro de un lavamanos de piedra. Un grifo de latón antiguo en funcionamiento genera el surf sin fin. La cámara se desplaza lentamente por la escena caprichosa y soleada mientras las figuras en miniatura tallan con destreza el agua turquesa. |
![]() |
Veo 3.1 te permite hacer referencia a imágenes o ingredientes para dirigir el contenido de tu video generado. Proporciona hasta tres imágenes de recursos de una sola persona, personaje o producto. Veo conserva la apariencia del sujeto en el video resultante.
Instrucción | Resultados generados |
---|---|
Imagen de referencia (generada por Nano Banana) Un de aguas profundas acecha en las oscuras profundidades del agua, con los dientes al descubierto y el cebo brillante. |
![]() |
Imagen de referencia (generada por Nano Banana) Un disfraz de princesa infantil de color rosa con una varita y una tiara, sobre un fondo de producto simple. |
![]() |
Video de salida (generado por Veo 3.1) Crea una versión de dibujos animados tonta del pez con el disfraz, nadando y agitando la varita. |
![]() |
Con Veo 3.1, también puedes generar videos especificando el primer y el último fotograma.
Instrucción | Resultados generados |
---|---|
Primera imagen (generada por Nano Banana) Una imagen frontal fotorrealista de alta calidad de un gato pelirrojo conduciendo un auto de carreras convertible rojo en la costa de la Riviera francesa. |
![]() |
Última imagen (generada por Nano Banana) Muestra lo que sucede cuando el auto despega de un acantilado. |
![]() |
Video resultante (generado por Veo 3.1) Opcional |
![]() |
Esta función te permite controlar con precisión la composición de la toma, ya que te permite definir el fotograma inicial y el final. Sube una imagen o usa un fotograma de una generación de video anterior para asegurarte de que tu escena comience y termine exactamente como la imaginas.
Instrucciones para la extensión
Para extender tu video generado con Veo con Veo 3.1, usa el video como entrada junto con una instrucción de texto opcional. Extender finaliza el último segundo o los últimos 24 fotogramas del video y continúa la acción.
Ten en cuenta que la voz no se puede extender de manera efectiva si no está presente en el último segundo del video.
Instrucción | Resultados generados |
---|---|
Video de entrada (generado por Veo 3.1) El parapentista despega desde la cima de la montaña y comienza a descender en planeo por las montañas con vistas a los valles cubiertos de flores que se encuentran más abajo. |
![]() |
Video de salida (generado por Veo 3.1) Extiende este video con el parapente que desciende lentamente. |
![]() |
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 |
---|---|
Toma en 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 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 las nieves camina por un bosque invernal. Renderización con 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 a través de 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 en el 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, vista de dron de seguimiento) 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) 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: En las ubicaciones de la UE, el Reino Unido, Suiza y MENA, los siguientes son los valores permitidos para
personGeneration
:- Veo 3: Solo
allow_adult
. - Veo 2:
dont_allow
yallow_adult
. El valor predeterminado esdont_allow
.
- Veo 3: Solo
- 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. Los videos extendidos se consideran videos recién generados.
- Marcas de agua: Los videos creados por Veo incluyen marcas de agua con SynthID, nuestra herramienta para identificar contenido generado por IA y agregarle marcas de agua. Los videos se pueden verificar con la plataforma de verificación de SynthID.
- 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.1 bloquea 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.
Funciones del modelo
Función | Descripción | Veo 3.1 y Veo 3.1 Fast | Veo 3 y Veo 3 Fast | Veo 2 |
---|---|---|---|---|
Audio | Genera audio de forma nativa con el video. | 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 y video a video | Texto a video, imagen a video | Texto a video, imagen a video |
Solución | Es la resolución de salida del video. | 720p y 1080p (solo 8 s de duración) Solo 720p cuando se usa la extensión de video. |
720p y 1080p (solo 16:9) | 720p |
Velocidad de fotogramas | Es la velocidad de fotogramas de salida del video. | 24 fotogramas | 24 fotogramas | 24 fotogramas |
Duración del video | Es la duración del video generado. | 8 segundos, 6 segundos, 4 segundos 8 segundos solo cuando se usan imágenes de referencia |
8 segundos | 5 a 8 segundos |
Videos por solicitud | Es la cantidad de videos que se generan por solicitud. | 1 | 1 | 1 o 2 |
Estado y detalles | Disponibilidad del modelo y más detalles | Vista previa | Estable | Estable |
Versiones del modelo
Consulta las páginas Precios y Límites de frecuencia para obtener más detalles sobre el uso específico del modelo de Veo.
Versión preliminar de Veo 3.1
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 | Septiembre de 2025 |
Versión preliminar de Veo 3.1 Fast
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 | Septiembre de 2025 |
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 |
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 empresariales. Es ideal para servicios de backend que generan anuncios de forma programática, herramientas para realizar pruebas A/B rápidas de conceptos creativos o 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?
- Comienza a usar la API de Veo 3.1 experimentando en el Colab de inicio rápido de Veo y el applet de Veo 3.1.
- Aprende a escribir instrucciones aún mejores con nuestra Introducción al diseño de instrucciones.