Gemini Omni Flash: cómo usar el modelo conversacional de Google para generar y editar video

Una guía práctica de Gemini Omni Flash: texto a video, imagen a video, edición con estado, entrega por URI, prompts, límites técnicos y recomendaciones de integración.

Gemini Omni Flash es un modelo multimodal de video en vista previa disponible en la Gemini API. Su nombre de modelo es gemini-omni-flash-preview. Está pensado para generación rápida de video, edición de video y control de tomas. Lo importante no es solo generar un video a partir de una frase, sino poner texto, imágenes, audio, video e interacción de varias rondas dentro de un mismo flujo de trabajo.

El cambio más interesante es que la generación de video empieza a pasar de una salida única a una edición iterativa. Un desarrollador puede generar primero un clip y luego usar prompts posteriores para modificar iluminación, fondo, objetos, texto o estilo, usando previous_interaction_id para que el modelo continúe desde el estado del video anterior. Para herramientas de video corto, piezas publicitarias, demos de producto, contenido educativo y prototipos creativos, esto se parece mucho más a un flujo real que regenerar todo desde cero cada vez.

Primero conviene dejar clara una limitación: Gemini Omni Flash sigue siendo un modelo en vista previa. Es adecuado para experimentos, prototipos y herramientas internas, pero no debería encargarse de flujos críticos de producción sin una alternativa de respaldo.

Qué puede hacer Gemini Omni Flash

La documentación oficial presenta Gemini Omni Flash como un modelo multimodal de alto rendimiento. Sus capacidades principales se pueden resumir en tres grupos:

  • Texto a video: generar un video con audio a partir de un prompt de texto.
  • Imagen a video: subir una imagen de referencia y describir movimiento, cámara y atmósfera con un prompt.
  • Edición de video con estado: seguir editando un video generado anteriormente sin volver a describir todos los detalles visuales.

La diferencia principal frente a modelos de video tradicionales está en la interacción. Con el Interactions API de Gemini API, cada generación o edición se convierte en una interaction. Las solicitudes posteriores pueden referirse a una interaction anterior, de modo que el modelo entiende el contexto y trata de conservar el contenido que no se pidió cambiar.

Llamada mínima

Gemini Omni Flash se llama con interactions.create. La solicitud más simple de texto a video solo necesita el nombre del modelo y un prompt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A marble rolling fast on a chain reaction style track, continuous smooth shot."
)

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

Si llamas directamente a la API REST, ten en cuenta que la estructura de respuesta no es igual a la del SDK. El SDK ofrece campos prácticos como interaction.output_video; en las respuestas REST, normalmente hay que buscar el contenido de video dentro de model_output en el arreglo steps.

Controlar la relación de aspecto y la salida

La salida predeterminada es horizontal 16:9. Para generar video vertical, configura aspect_ratio dentro de response_format:

1
2
3
4
5
6
7
8
interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A futuristic city with neon lights and flying cars, cyberpunk style",
    response_format={
        "type": "video",
        "aspect_ratio": "9:16"
    }
)

Esto importa especialmente para videos cortos, creatividad publicitaria y contenido móvil. En la capa de producto conviene ofrecer opciones explícitas para horizontal y vertical, en lugar de depender solo de que el usuario lo describa en el prompt, porque los parámetros son más estables que el lenguaje natural.

Cómo integrar imagen a video

La entrada de imagen a video combina una imagen y texto. La imagen puede funcionar como referencia de movimiento, referencia del sujeto, referencia de estilo o fotograma inicial. La estructura básica es esta:

1
2
3
4
5
6
7
interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input=[
        {"type": "image", "data": base64_image, "mime_type": "image/jpeg"},
        {"type": "text", "text": "Turn this into realistic footage, using the drawing only as a guide for movement."}
    ],
)

En uso real, no basta con escribir “haz que se mueva”. Un prompt mejor debe explicar la acción, la toma, la escena, la iluminación y los elementos que deben conservarse. Por ejemplo, si generas un video corto a partir de una imagen de producto, especifica que la apariencia del producto y la marca deben permanecer consistentes, cómo debe moverse la cámara y cómo puede cambiar el fondo.

Si la entrada contiene varias imágenes, usa video_config.task para indicar el tipo de tarea y reducir las suposiciones del modelo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input=[
        {"type": "image", "data": base64_image, "mime_type": "image/jpeg"},
        {"type": "text", "text": "Use this image as a reference and generate a cinematic product shot."}
    ],
    generation_config={
        "video_config": {
            "task": "image_to_video"
        }
    },
)

task sirve para distinguir text_to_video, image_to_video, reference_to_video y edit. En una aplicación, es un parámetro útil para usuarios avanzados o sistemas internos de plantillas.

Edición de video con estado

La edición con estado es lo que hace que Gemini Omni Flash parezca más una herramienta creativa que un endpoint de generación única. Después de generar el primer video, la segunda solicitud puede usar previous_interaction_id para referirse al resultado anterior:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
first = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A woman playing violin outdoors."
)

second = client.interactions.create(
    model="gemini-omni-flash-preview",
    previous_interaction_id=first.id,
    input="Make the violin invisible. Keep everything else the same."
)

La clave no es escribir un prompt largo, sino indicar con precisión el cambio. La guía oficial de prompting también destaca que la edición de video suele funcionar mejor con instrucciones cortas. Cuando se modifica un elemento local, añadir Keep everything else the same. puede reducir la probabilidad de que el modelo altere otras partes de la escena.

Editar videos propios

Para editar videos subidos por usuarios, Google recomienda subir primero el video con Files API y luego pasar el URI del archivo a Gemini Omni Flash. La razón es práctica: los videos pueden ser grandes, y enviarlos directamente como base64 complica el tamaño de la solicitud y la estabilidad.

Al integrar esta función, la capa de producto debería manejar al menos cuatro cosas:

  • Consultar el estado del archivo después de subirlo y confirmar que ya no está en PROCESSING.
  • Manejar el estado FAILED y mostrar una razón de error comprensible para el usuario.
  • Definir límites claros para archivos grandes, videos largos y material de alta resolución.
  • Ocultar o degradar la función en regiones donde no se admite la edición de videos subidos.

La documentación oficial también advierte que no todas las regiones admiten la edición de videos subidos por usuarios. En productos globales, no conviene tratar “editar videos generados por el modelo” y “editar videos subidos por usuarios” como la misma capacidad.

Usar entrega por URI para videos grandes

Si el video generado supera los 4 MB, conviene usar delivery: "uri" en response_format. Así, la respuesta devuelve un URI alojado por Google, que el cliente puede consultar y descargar, en lugar de incrustar una gran carga base64 dentro del JSON.

Esto es práctico para aplicaciones web: el frontend puede mostrar el progreso de la tarea, mientras el backend se encarga de consultar el estado y descargar el video. Así se evita que el navegador procese respuestas enormes incrustadas. Hay un detalle importante: la documentación indica que GET /v1beta/interactions/{id} todavía puede devolver base64 incrustado en el campo data, mientras que el campo uri solo está garantizado en la respuesta inicial de creación o en el flujo SSE. Si tu flujo depende del URI, guárdalo desde la respuesta de creación.

Prompts: describe la toma con claridad

Gemini Omni Flash puede generar varias tomas por defecto. Si necesitas una sola toma, dilo explícitamente:

  • Una escena única e ininterrumpida.
  • Una toma continua.
  • Sin cortes de escena.

Si necesitas controlar el ritmo, puedes describir momentos en lenguaje natural, por ejemplo “después de 3 segundos, el personaje entra en cuadro”, o usar rangos como [0-3s] y [3-6s]. Para anuncios, tutoriales y demos de producto, esto da más control que describir solo la imagen.

Cuando el video necesite texto, escribe el texto exacto en el prompt. El modelo puede intentar renderizar texto legible, pero si el prompt no define letreros, subtítulos o texto de pantalla, puede generar texto inestable o sin sentido.

Límites actuales

Gemini Omni Flash preview tiene varios límites que conviene revisar antes de integrarlo:

  • En el Espacio Económico Europeo, Suiza y el Reino Unido no se admite subir ni editar imágenes que contengan menores.
  • Algunas imágenes de personas identificables no se admiten para subida y edición.
  • Los usuarios del Espacio Económico Europeo, Suiza y el Reino Unido actualmente no pueden editar videos subidos, aunque sí pueden editar videos generados por el modelo.
  • La API actual no admite referencias de audio subidas.
  • No admite referencias ni razonamiento a través de varios videos.
  • No admite extensión de video, interpolación de video ni edición de voz.
  • No admite provisioned throughput.
  • No admite instrucciones de sistema, temperatura, top_p, secuencias de parada, prompts negativos ni otros parámetros comunes de generación.
  • No admite videos de YouTube como fuente multimedia.

Estos límites afectan directamente el diseño de producto. En productos para empresas, la región, el material con personas, los videos subidos, la política de revisión y los mensajes de error deberían formar parte del flujo, en lugar de esconderse detrás de una caja de texto y un botón de generar.

Recomendaciones para desarrolladores

Si vas a integrar Gemini Omni Flash en tu aplicación, un orden práctico sería:

  1. Empezar con un MVP de texto a video que solo admita 16:9 y 9:16.
  2. Añadir imagen a video, con límites de formato y tamaño de subida, más plantillas de prompt.
  3. Añadir edición con estado y guardar cada interaction.id en el registro de la tarea.
  4. Activar entrega por URI para videos grandes, evitando que las respuestas base64 sobrecarguen frontend y backend.
  5. Representar como estados explícitos las restricciones regionales, fallos de seguridad de contenido, fallos de procesamiento de archivos y timeouts.
  6. Abrir después referencias con varias imágenes, códigos de tiempo, renderizado de texto y plantillas de toma más complejas.

Ahora mismo encaja mejor como herramienta de flujo creativo que como interfaz de chat común. Una buena experiencia de producto debería organizarse alrededor de tareas: generar un anuncio corto, animar una imagen de producto, reemplazar un fondo, cambiar la iluminación, añadir subtítulos o crear una versión vertical. No conviene meter todas las capacidades en una sola caja de texto libre.

Resumen

El valor de Gemini Omni Flash está en poner generación de video, referencias de imagen y edición de varias rondas dentro de un mismo flujo de Interactions API. No es todavía la canalización de video de producción más segura, pero ya es útil para prototipos creativos, herramientas de generación de assets y automatización interna.

Al integrarlo de verdad, lo importante no es solo saber llamar a gemini-omni-flash-preview; también hay que diseñar juntos el estado de la tarea, la subida de archivos, las restricciones regionales, las plantillas de prompt y el manejo de fallos. Cuanto más fuertes se vuelven los modelos de video, más claramente debe definir sus límites la capa de producto.

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy