Genera videos con Veo 3.1 en la API de Gemini

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`
Vestido de alta costura de flamenco con capas de plumas rosas y fucsias Mujer hermosa con cabello oscuro y ojos marrones cálidos Gafas de sol caprichosas rosas con forma de corazón

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
Una mujer fantasmal con cabello blanco largo y un vestido suelto se balancea suavemente en un columpio de cuerda. La mujer fantasma desaparece del columpio Un video cinematográfico y sobrecogedor de una mujer misteriosa que desaparece de un columpio en la niebla

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. Una mariposa de origami aletea y sale volando 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" solamente
Conversión de imagen a video, interpolación e imágenes de referencia:
"allow_adult" solamente
Texto a video:
"allow_all" solamente
Imagen 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.
Dos personas en el bosque se encuentran con señales de un oso.
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".
Bibliotecarios animados discutiendo sobre libros prohibidos

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.
Pequeños surfistas en miniatura montando las olas del océano dentro de un lavabo rústico de piedra.
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.
Pequeños surfistas que rodean las olas en el lavamanos de un baño.

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.
Un pez linterna oscuro y 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.
Un disfraz de princesa rosa para niños
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.
Un pez pescador con un disfraz de princesa

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.
Un gato pelirrojo conduciendo un auto de carreras convertible rojo
Última imagen (generada por Nano Banana)
Muestra lo que sucede cuando el auto despega de un acantilado.
Un gato pelirrojo que conduce un convertible rojo se cae por un acantilado
Video resultante (generado por Veo 3.1)
Opcional
Un gato conduce por un acantilado y despega

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.
Un parapentista despega desde la cima de una montaña
Video de salida (generado por Veo 3.1)
Extiende este video con el parapente que desciende lentamente.
Un parapente despega desde la cima de una montaña y luego 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). Estalactitas que gotean con un fondo azul.

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.
Un hombre hablando por teléfono.
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.
Un hombre hablando por teléfono

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.
El leopardo de las nieves está letárgico.
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.
El leopardo de las nieves corre más rápido.

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 Marcador de posición.
Un satélite flotando en el espacio exterior con la luna y algunas estrellas en el fondo. Satélite flotando en la atmósfera.

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. El atardecer es absolutamente hermoso.

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. El estilo de cine negro es absolutamente hermoso.

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. El atardecer es absolutamente hermoso.
Primer plano extremo de un ojo con la ciudad reflejada en él. El atardecer es absolutamente hermoso.

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. Un cachorro en los brazos de una niña.
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. Una mujer que viaja en un autobús y se siente triste.

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]
Árbol con palabras.
Con instrucción negativa:
[Misma instrucción]

Instrucción negativa: Fondo urbano, estructuras artificiales, atmósfera oscura, tormentosa o amenazante.
Árbol sin palabras negativas.

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.
Un hombre conduce un automóvil convertible rojo en Palm Springs, con un estilo de los años 70.
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.
Una majestuosa cascada hawaiana en una exuberante selva tropical.

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 y allow_adult. El valor predeterminado es dont_allow.
  • 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

veo-3.1-generate-preview

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

veo-3.1-fast-generate-preview

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

veo-3.0-generate-001

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

veo-3.0-fast-generate-001

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

veo-2.0-generate-001

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?