DEV Community

Cover image for Cómo extender un video a 40 segundos con Gemini Omni 1.1 Flash
Roobia
Roobia

Posted on Originally published at apidog.com

Cómo extender un video a 40 segundos con Gemini Omni 1.1 Flash

Cómo extender clips de Gemini Omni 1.1 Flash hasta 40 segundos

Gemini Omni 1.1 Flash genera clips de 10 segundos. La extensión de escena añade otros 10 segundos por llamada, hasta un máximo acumulado de 40 segundos.

Prueba Apidog hoy

La función ya existía en el modelo de vista previa, pero solo analizaba el último segundo del metraje. Eso mantenía los colores relativamente consistentes, pero no la ropa de los personajes ni los movimientos de cámara. El lanzamiento GA del 27 de agosto de 2026 amplió el contexto previo a 10 segundos para mejorar la "consistencia visual y adhesión narrativa".

Esta guía muestra cómo usar la extensión, cuáles son sus límites y cómo mantener estable una secuencia de 40 segundos.

Realizar una extensión básica

La extensión usa la API de Archivos. Sube el clip y pasa su URI junto con un prompt que describa la continuación:

import base64
from google import genai

client = genai.Client()

video_file = client.files.upload(file="my_video.mp4")

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "document", "uri": video_file.uri},
        {"type": "text", "text": "Continúa la escena."},
    ],
)

with open("extended.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

Enter fullscreen mode Exit fullscreen mode

Las cargas se procesan de forma asíncrona. Consulta el estado del archivo antes de crear la interacción:

import time

while video_file.state == "PROCESSING":
    time.sleep(10)
    video_file = client.files.get(name=video_file.name)

if video_file.state == "FAILED":
    raise ValueError(video_file.state)

Enter fullscreen mode Exit fullscreen mode

Si el video fue generado por Omni en la misma sesión, no necesitas volver a cargarlo. Encadena el ID de interacción con previous_interaction_id; ahorrarás tokens y conservarás más estado:

res2 = client.interactions.create(
    model="gemini-omni-1.1-flash",
    previous_interaction_id=res1.id,
    input="La cámara se aleja para revelar toda la calle.",
)

Enter fullscreen mode Exit fullscreen mode

El tutorial de la API incluye opciones de resolución y entrega.

Introducir un personaje

Puedes adjuntar medios de referencia y mencionarlos desde el prompt. Las referencias reciben ranuras como <IMAGE_REF_0>, <IMAGE_REF_1>, etc.:

video_file = client.files.upload(file="my_video.mp4")
character_img = client.files.upload(file="character.png")

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "document", "uri": video_file.uri},
        {"type": "document", "uri": character_img.uri},
        {"type": "text", "text": "Extiende este video: haz que el personaje mostrado en <IMAGE_REF_0> entre en la escena y salude con la mano."},
    ],
)

Enter fullscreen mode Exit fullscreen mode

También puedes usar referencias de video: hasta tres clips de tres segundos cada uno. El modelo analiza su movimiento y apariencia, pero ignora el audio.

Límites importantes

  • Máximo de 40 segundos: una generación de 10 segundos más tres extensiones de 10 segundos.
  • Solo se añade al final: no puedes anteponer metraje ni insertar contenido en el medio. Si el segundo segmento falla, debes regenerarlo junto con todo lo posterior.
  • Entrada subida limitada a 10 segundos: este límite aplica al video que cargas. Las cadenas con previous_interaction_id no tienen esa restricción porque el modelo conserva el estado anterior.
  • Sin diálogo en cargas extendidas: puedes extender en silencio un video subido por otra persona o trabajar en una interacción de varios turnos, pero no añadir diálogo al extender una carga.
  • Restricciones regionales: la carga y edición de video no están disponibles en el Espacio Económico Europeo, Suiza ni Reino Unido. Los videos generados siguen siendo editables allí mediante previous_interaction_id.
  • Un video de entrada a la vez: el modelo no razona sobre varios videos simultáneamente.

Planificar el arco antes de renderizar

Una secuencia de 40 segundos a 720p cuesta aproximadamente $4.06 en salida de video. Si la historia falla en el segmento tres, tendrás que regenerar los segmentos tres y cuatro, con el riesgo de alterar elementos que ya funcionaban.

Primero esboza los cuatro segmentos a 360p. Esta resolución se genera hasta un 60 % más rápido y cuesta un tercio, por lo que la secuencia completa cuesta alrededor de $1.35. Cuando la continuidad funcione, vuelve a renderizar a 720p o superior. Consulta el artículo de precios para ver los cálculos completos.

Configura la resolución en el formato de respuesta:

interaction = client.interactions.create(
    model="gemini-omni-1.1-flash",
    input=[
        {"type": "document", "uri": video_file.uri},
        {"type": "text", "text": "Continúa la escena."},
    ],
    response_format={"type": "video", "resolution": "360p"},
)

Enter fullscreen mode Exit fullscreen mode

Escribir prompts consistentes

Estos patrones funcionan mejor al encadenar segmentos:

  • Describe el cambio, no toda la escena. El modelo ya tiene 10 segundos de contexto. Usa frases como “la cámara se acerca a la puerta” en lugar de volver a describir toda la habitación.
  • Pide un movimiento por segmento. Diez segundos suelen bastar para una acción; pedir dos puede producir una versión apresurada de ambas.
  • Explicita los anclajes de continuidad. Indica qué debe permanecer igual: “la misma chaqueta roja” o “el mismo ángulo bajo”.
  • Planifica en orden de reproducción. No puedes corregir el principio sin regenerar todo lo que viene después.

La guía de prompts de Veo amplía principios aplicables a distintos modelos de video.

Verificar cada extensión

Cuatro llamadas encadenadas crean cuatro puntos potenciales de cambio en el comportamiento del modelo. Guarda cada etapa como una solicitud independiente en Apidog, usando variables de entorno para el URI del archivo y el ID de interacción. Así podrás repetir un segmento sin reconstruir toda la cadena.

También conviene:

  • Validar la forma de la respuesta: una extensión de mayor resolución puede superar los 4 MB y cambiar de base64 en línea a un URI.
  • Aumentar considerablemente el tiempo de espera: las extensiones tardan más que la generación inicial porque el modelo analiza 10 segundos de contexto.
  • Guardar cada render para comparar uniones y regresiones.

Descarga Apidog para preparar este flujo.

Preguntas frecuentes

¿Cuánto puede durar un video de Gemini Omni?

40 segundos acumulativos: una generación de 10 segundos y tres extensiones de 10 segundos.

¿Puedo extender un video propio?

Sí, con una entrada de hasta 10 segundos y fuera del EEE, Suiza y Reino Unido. Súbelo mediante la API de Archivos y pasa su URI.

¿Puedo añadir contenido al principio?

No. La extensión solo añade contenido al final.

¿Por qué cambia la apariencia del personaje?

Normalmente porque el prompt vuelve a describir la escena en lugar de describir el cambio, o porque no define anclajes de continuidad. Indica qué debe permanecer igual y considera adjuntar una imagen del personaje como referencia.

¿Cada extensión tiene un costo adicional?

Sí. Cada una factura sus propios 10 segundos de salida de video y los tokens de entrada del contexto analizado.

¿Qué ocurre si necesito más de 40 segundos?

Veo 3.1 extiende 7 segundos por llamada hasta 148 segundos, exclusivamente a 720p. Consulta la comparación de modelos y la guía de la API de Veo.

La extensión de escena convierte Omni de una demostración en un entregable utilizable, pero exige planificación: crea un storyboard de cuatro puntos, valida el arco completo a 360p, limita cada prompt a un movimiento y reserva el render a 720p para la versión que ya funciona.

Top comments (0)