Extender vídeo e interpolar fotogramas con Gemini Omni: API y control de continuidad
Flujo práctico para ampliar un clip o unir dos fotogramas clave y comprobar la continuidad visual y sonora antes de entregar el vídeo.
Índice

Ya tienes un clip corto, pero la acción termina antes de tiempo; o solo dispones del primer y último fotograma y falta el movimiento intermedio. Con gemini-omni-1.1-flash puedes añadir una continuación de 3–10 segundos o generar la transición entre dos imágenes límite; al terminar sabrás qué modo elegir, cómo llamar a la API y cómo decidir si el resultado está listo para entregar.
Elige extensión al final cuando quieras conservar el movimiento, la cámara y el audio de un clip existente; elige interpolación del primer y último fotograma cuando el inicio y el final ya estén fijados y solo falte el tramo central; recibir un MP4 termina la generación, no la revisión del sujeto, el movimiento, la unión y el audio.
¿Debes extender el clip o interpolar dos fotogramas?
Si tienes vídeo de origen, empieza por la extensión al final; si debes llegar a una imagen final concreta, empieza por la interpolación. La extensión no usa ese fotograma objetivo como límite, así que elegirla para ese trabajo puede añadir otro ciclo de generación y revisión.
| Trabajo | Entrada | Uso adecuado | Continuidad crítica |
|---|---|---|---|
| Extensión al final | Un vídeo y, opcionalmente, imágenes de referencia | Continuar una acción, un movimiento de cámara o una escena | Pose, velocidad, dirección de cámara, luz y audio en la unión |
| Interpolación inicial/final | Primer fotograma, último fotograma y descripción | Completar el movimiento entre dos estados definidos | Identidad, relaciones espaciales, trayectoria y llegada al fotograma objetivo |
La extensión de un vídeo subido está pensada para incrementos cortos: la guía oficial describe continuaciones de 3–10 segundos y la guía de prompts también documenta pasos de 10 segundos hasta 40 segundos en total. El clip subido debe durar 10 segundos o menos y solo puede ampliarse por el final; usa un editor convencional si necesitas insertar un plano al principio o en medio.
Decide estas cuatro cosas antes de llamar a la API
Fija el modelo, la salida, el comportamiento de los cortes y los originales que usarás para comparar antes de generar. Si dejas una decisión abierta, es fácil tener que repetir el trabajo o no saber si un cambio en la unión procede del modelo o del material fuente.
Usa el model ID GA
Usa el model ID GA gemini-omni-1.1-flash. Pasó a disponibilidad general el 27 de agosto de 2026; el endpoint anterior gemini-omni-flash-preview está previsto para retirarse el 30 de septiembre de 2026.
Valida primero la continuidad en 720p
En la primera prueba usa el valor predeterminado 720p, así separas los fallos de continuidad de la entrega en alta resolución. resolution dentro de response_format admite 360p, 720p, 1080p y 4k; la documentación identifica 1080p y 4k como salidas reescaladas, con 16:9 como relación predeterminada y 9:16 bajo petición. Para resultados de más de 4 MB, especialmente por encima de 720p, usa delivery="uri", espera a que el archivo quede activo y descárgalo.
Decide entre un plano continuo y un corte intencional
Decide si quieres un plano continuo o un corte intencional. En un prompt de extensión, 0s es el inicio de la parte nueva, no del clip original. Escribe “un solo plano continuo” y “sin cortes” si la acción no debe romperse. Si el corte forma parte del guion, indica en qué momento del tramo añadido debe ocurrir.
Conserva el clip fuente y las imágenes límite
Conserva el clip original y las dos imágenes límite. La guía explica que Omni utiliza los últimos 10 segundos del vídeo como contexto y puede modificar algunos fotogramas finales para construir la transición. Por eso la comparación entre original y salida forma parte del control de calidad.
¿Tienes un clip fuente? Extiéndelo desde el final
Usa la extensión al final cuando ya tienes vídeo y quieres continuar unos segundos la acción, el movimiento de cámara o la escena. Ejecuta primero una llamada mínima a 720p y después endurece las condiciones de sujeto, movimiento, cámara y audio.
Ejecuta primero una llamada mínima a 720p
El ejemplo de Python sube el clip mediante Files API, espera a que termine el procesamiento y pasa la URI y las instrucciones a interactions.create. Mantiene 720p para resolver primero la continuidad y después la entrega del archivo de alta resolución.
import base64
import time
from google import genai
client = genai.Client()
video_file = client.files.upload(file="my_video.mp4")
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)
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input=[
{"type": "video", "uri": video_file.uri},
{
"type": "text",
"text": (
"Continúa la escena como un único plano sin interrupciones. "
"Mantén el mismo sujeto, vestuario, dirección de cámara, iluminación y velocidad de movimiento. Sin cortes ni diálogo nuevo."
),
},
],
response_format={"type": "video", "resolution": "720p"},
)
with open("extended.mp4", "wb") as f:
f.write(base64.b64decode(interaction.output_video.data))
Escribe condiciones observables en el prompt
No te limites a “continúa la escena”. Define al menos cinco aspectos observables: qué debe conservar el sujeto, cómo progresa la acción, cómo se mueve la cámara, si cambian la luz o el entorno y si se permiten cortes o sonido nuevo. “La mano derecha sigue subiendo a la misma velocidad” puede verificarse; “hazlo natural” no.
Define task solo si el prompt activa el modo equivocado
Si el prompt no activa el modo, añade {"video_config": {"task": "extend"}} dentro de generation_config. La guía recomienda probar primero con el prompt porque task aplica restricciones más estrictas. Para un vídeo generado en el turno anterior, previous_interaction_id permite continuar sin volver a subirlo. Es necesario conservar el estado: una salida creada con store=false no se puede editar después con ese ID.
Cambia el plan si afectan los límites de diálogo o región
También hay límites de voz y región. Un vídeo subido donde alguien ya habla no puede ampliarse actualmente con diálogo adicional; sí se permite una continuación silenciosa o una instrucción que no añada diálogo. El habla está disponible en extensiones multivuelta de vídeo generado por el modelo mediante previous_interaction_id. La edición y extensión de vídeos subidos no están disponibles en el EEE, Suiza y Reino Unido, mientras que extender vídeo generado por el modelo sigue permitido en las regiones disponibles.
¿Solo tienes los fotogramas límite? Genera el movimiento entre ellos
Usa la interpolación cuando el estado inicial y el final están claros, pero falta el movimiento intermedio. Envía las dos imágenes en orden y explica cómo deben desplazarse el sujeto, la cámara y el entorno del primer estado al último.
Envía primero las dos imágenes límite
La interpolación encaja cuando se conocen los estados de inicio y final, pero falta el movimiento. Introduce las dos imágenes en orden en input y describe cómo deben evolucionar el sujeto, la cámara y el entorno. El ejemplo completo codifica JPEG locales y solicita un resultado 720p.
import base64
from pathlib import Path
from google import genai
client = genai.Client()
first_frame_b64 = base64.b64encode(Path("first.jpg").read_bytes()).decode()
last_frame_b64 = base64.b64encode(Path("last.jpg").read_bytes()).decode()
interaction = client.interactions.create(
model="gemini-omni-1.1-flash",
input=[
{"type": "image", "data": first_frame_b64, "mime_type": "image/jpeg"},
{"type": "image", "data": last_frame_b64, "mime_type": "image/jpeg"},
{
"type": "text",
"text": (
"Crea una transición natural del primer fotograma al último. "
"Conserva la identidad del sujeto y la dirección de cámara, mantén continua la trayectoria y evita cortes bruscos."
),
},
],
response_format={"type": "video", "resolution": "720p"},
)
with open("interpolation.mp4", "wb") as f:
f.write(base64.b64decode(interaction.output_video.data))
Usa image_to_video solo si el modo sigue sin quedar claro
Después de enviar las imágenes en orden, indica de forma explícita que la primera es el inicio y la segunda el final. Si el modo sigue siendo incorrecto, añade image_to_video como valor de task; debe complementar la descripción de sujeto, cámara y movimiento, no sustituirla.
Cuanto mayor sea la diferencia, más debes ordenar los cambios
Los límites compatibles facilitan el trabajo: mantén razonablemente coherentes la identidad, la relación de aspecto, el eje de cámara y la distribución espacial. Si hay cambios grandes, ordena la transformación: primero gira el sujeto, después mueve la cámara y por último cambia la luz. Es una pauta de producción, no una garantía; el resultado debe revisarse.
¿Se puede entregar? Revisa unión, sujeto, movimiento y audio
El criterio no es que el vídeo “se parezca bastante”, sino que puedas señalar cada defecto y convertirlo en una instrucción útil para la siguiente generación. Míralo una vez a velocidad normal, revisa después la unión lentamente o fotograma a fotograma y escucha el audio por separado.
| Dimensión | Qué revisar | Instrucción útil para repetir |
|---|---|---|
| Sujeto | Rostro, pelo, ropa, accesorios, proporciones, manos y objetos | “Mantén el color del abrigo y el objeto de la mano derecha.” |
| Movimiento | Dirección, velocidad, equilibrio, contactos, mirada y trayectoria de cámara | “Continúa el paso hacia la derecha sin acelerar ni invertirlo.” |
| Montaje e imagen | Salto, exposición, temperatura, profundidad de campo, perspectiva y geometría del fondo | “Mantén el mismo eje y focal; no cortes.” |
| Audio | Ambiente, pulso musical, diálogo, reverberación, volumen, clics y ruido nuevo | “Continúa el ambiente, no añadas diálogo y conserva el pulso.” |
En extensión revisa la unión; en interpolación, los dos extremos
En una extensión, compara aproximadamente el último segundo del original con el primero de la continuación y comprueba si la salida alteró los fotogramas finales del original. En interpolación, evalúa el camino intermedio y confirma que el inicio corresponde a la primera imagen y el final alcanza la segunda, no solo algo de estilo parecido.
Endurece una sola variable por revisión
En cada revisión, endurece una variable principal. Corrige primero la identidad, luego el movimiento y después cámara y sonido. Así es más fácil atribuir el cambio. Escribe “la manga izquierda cambia de color en la unión”, no “hazlo más cinematográfico”.
No fuerces este endpoint en trabajos que no encajan
Este endpoint no es un editor de una sola llamada si necesitas insertar un plano en medio de una pieza larga, continuar diálogo existente o razonar sobre varios clips fuente. Si el trabajo choca con cualquiera de los límites siguientes, divídelo en planos o cambia primero a un flujo de edición convencional.
- Los clips subidos solo se amplían al final y deben durar 10 segundos o menos.
- No se puede añadir diálogo a un vídeo subido donde alguien habla; la edición de voz tampoco está disponible.
- No se admiten referencias de audio; el audio de una referencia de vídeo se ignora.
- Se permiten como máximo tres referencias de vídeo, de hasta tres segundos cada una; no se admite razonar entre varios vídeos.
- No se admiten instrucciones de sistema,
temperature,top_p, secuencias de parada ni un campo separado de negative prompt. Escribe las prohibiciones en el prompt normal. - Todos los vídeos incluyen SynthID invisible y entradas y salidas pasan filtros de seguridad.
- La documentación declara soporte completo para prompts en inglés; otros idiomas no se han evaluado y pueden variar.
La alternativa práctica es generar planos cortos por separado y montarlos y mezclarlos después en un editor convencional. Suele ahorrar más tiempo que insistir en que una extensión al final resuelva inserciones intermedias, continuidad de diálogo o razonamiento entre varios clips.
Pasa esta lista antes de entregar
Una llamada correcta no equivale a una aprobación de calidad. Antes de entregar, confirma que:
- has conservado el vídeo de entrada, el resultado y las dos imágenes límite;
- has registrado el model ID, la resolución y el prompt completo;
- has revisado la unión fotograma a fotograma y comprobado si cambiaron los últimos fotogramas del original;
- has confirmado que la interpolación empieza en la primera imagen y alcanza realmente la segunda;
- has escuchado el audio por separado para detectar cortes, clics o ruido nuevo;
- has comprobado región, duración de entrada, diálogo y límites de las referencias.
Si algún punto no tiene una respuesta clara, revisa el resultado en lugar de aprobarlo solo por el estado de la API.