person holding camera with red lights on lens
Photo by Lisa Fotios on Pexels.com

Dominar “Extend” en Veo 3.1 — Implementación paso a paso, design patterns y la guía más reciente lista para API

TL;DR

  • Qué es realmente Extend: Veo 3.1 puede añadir a un video generado por Veo en bloques de 7 segundos hasta 20 veces, y exportarlo como un único clip continuo (salida máxima ≈148 segundos). Está disponible oficialmente vía la Gemini API, y también puedes operarlo desde las UIs/SDKs de Flow y Vertex AI.
  • Canales compatibles: La documentación de Gemini API (Veo 3.1/3.1 Fast) y Google Cloud Vertex AI incluye los procedimientos de Extend. Flow también incorpora funciones tipo “Scene Extension” y puede manejar audio.
  • Requisitos y límites: Solo se pueden extender videos generados por Veo. Restricciones de entrada incluyen 9:16 o 16:9 / 720p, etc.
  • Quién se beneficia: Equipos de Ads/SNS / Redacciones / Plataformas UGC / Educación & formación interna. Puedes hacer crecer clips cortos a más largos con una cadencia estable de 7 segundos, automatizada vía API.
  • Objetivo de este artículo: Ofrecer el camino más corto a producción hoy (entorno → generación base → Extend → QA → plantillas operativas) para UI y API, con ejemplos listos para copiar y pegar.

A quién ayuda más (personas concretas)

  • Equipos de Ads / Social Ops: Toma un gran plano de 8 segundos y “extiende la respiración” en pasos de 7 s hasta un corte natural de 30–60 s, luego ejecuta A/B de CTR / retención.
  • Redacciones / Medios: Convierte un clip líder corto en una pieza final única agregando seguimientos y supers.
  • UGC / Desarrolladores de apps: Concatena automáticamente clips generados por Veo en plantillas con un tono consistente.
  • Educación / Formación corporativa: Construye Intro → Pasos → Resumen a través de extensiones por etapas, facilitando ediciones/sustituciones.

Priorizamos la precisión y excluimos información incierta. Las especificaciones/límites/canales están confirmados en documentación pública.


1. Los hechos que necesitas primero sobre “Extend” en Veo 3.1 (a oct 2025)

  • Granularidad: 7 segundos por extensión, hasta 20 extensiones. La salida final es un solo video concatenado de hasta ≈148 segundos.
  • Prerrequisitos de entrada: Solo videos generados por Veo son elegibles. Relación 9:16 o 16:9; resolución 720p; entrada ≤141 segundos. En la Gemini API, Extend requiere salida de Veo como entrada.
  • Dónde funciona: Gemini API (Veo 3.1 / 3.1 Fast). Vertex AI ofrece guía de Consola y API. Flow proporciona “Scene Extension”, y el audio también se puede extender.
  • Mejoras relacionadas: Veo 3.1 mejora el control de continuidad, incluyendo hasta 3 imágenes de referencia e interpolación de primer/último fotograma. Combinado con Extend, puedes escalar la duración preservando la consistencia de la escena.

En resumen, Extend te permite seguir impulsando un plano fuerte hacia adelante—limpio y en secuencia.


2. Diseño de workflow de extremo a extremo (de UI → API)

2-1. Flujo central (visión general)

  1. Fija el concepto: Decide tema, sensación de lente, temperatura de color—la columna vertebral de la continuidad.
  2. Crea el “núcleo” corto: Genera ~8 s del plano más emblemático (usa imágenes de referencia y último fotograma).
  3. Extiende en pasos de 7 s: Separa prompt narrativo vs. prompt de restricciones para minimizar derivas.
  4. Control de calidad: Verifica costuras visuales y continuidad de audio; re-extiende donde sea necesario.
  5. Exporta / publica: Finaliza subtítulos, logo, relación de aspecto para el canal destino.

2-2. ¿Qué canal usar?

  • Prototipado rápido: Flow (Scene Extension)previa por Gemini API para ajuste fino.
  • Producción: Usa Gemini API o Vertex AI vía SDK/REST. Si te importan cloud ops (IAM/auditoría), centra en Vertex AI.

3. Aprende Extend desde la UI (Flow / Vertex AI)

3-1. Fundamentos de Flow (Scene Extension)

  1. Genera una base con Veo 3.1 (usa imágenes de referencia y primer/último fotograma para forzar consistencia).
  2. Elige Extend / Scene Extension, introduce tu prompt de continuación de 7 s. Especifica también ambiente/BGM en el mismo mundo.
  3. Repite hasta 20 veces y exporta como un clip continuo.

3-2. Extend en la consola de Vertex AI

  • En Media Studio → Video, selecciona Veo y ejecuta AI actions → Extend video sobre un clip generado. Añade un prompt y genera. La API refleja este flujo.

4. Implementa Extend con la Gemini API (con código)

A partir de aquí usaremos Gemini API (Veo 3.1) para ilustrar el patrón canónico núcleo de 8 s → Extend de 7 s × N. Límites/prerrequisitos según docs.

4-1. Prerrequisitos

  • Modelos: veo-3.1-generate-preview o veo-3.1-fast-generate-preview
  • Entrada elegible: Video generado por Veo (9:16/16:9, 720p, ≤141 s)
  • Unidad de Extend: 7 s, hasta 20 veces (salida = clip continuo, máx ≈148 s)

4-2. Genera el video base (Python)

# pip install google-genai
import time
from google import genai
from google.genai import types

client = genai.Client()

prompt = (
  "A cinematic medium shot of a female reporter in a modern newsroom. "
  "Cool daylight tone, 35mm look, shallow depth of field. "
  "She turns to camera and starts walking forward. Include natural ambience."
)

op = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt=prompt,
    # Consejo: también puedes pasar reference_images (hasta 3) y first/last frame
    # config=types.GenerateVideosConfig(reference_images=[...], last_frame=...),
)
while not op.done:
    time.sleep(10)
    op = client.operations.get(op)

video_asset = op.response.generated_videos[0].video
client.files.download(file=video_asset)
video_asset.save("base_8s.mp4")

Tip: Usar hasta 3 imágenes de referencia más primer/último fotograma facilita mucho la continuidad en Extend.

4-3. Ejecuta una única extensión de 7 s (Python)

import time
from google import genai
from google.genai import types

client = genai.Client()

extend_prompt = (
  "Continue the scene: she stops near the anchor desk, points to the right screen. "
  "Keep the same outfit, lighting, and ambience. Camera slowly pushes in."
)

op = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    video=video_asset,  # debe ser una salida previa de Veo
    prompt=extend_prompt,
    config=types.GenerateVideosConfig(
        number_of_videos=1,
        resolution="720p",   # Extend asume 720p según la especificación
    ),
)
while not op.done:
    time.sleep(10)
    op = client.operations.get(op)

extended = op.response.generated_videos[0].video
client.files.download(file=extended)
extended.save("extended_15s.mp4")

Especificación clave: Pasos de 7 s, hasta 20. La entrada debe ser salida de Veo, 720p, 9:16 o 16:9, etc.

4-4. Plantilla práctica de “cadena de extensiones” (Python)

def extend_chain(base_video, prompts, max_hops=5):
    """
    base_video: *handle* a un video generado por Veo (client.files.get(...) etc.)
    prompts: lista de *prompts* de continuación de 7 s
    max_hops: hasta 20 (según especificación)
    """
    assert len(prompts) <= max_hops <= 20
    current = base_video
    results = []
    for i, p in enumerate(prompts, 1):
        op = client.models.generate_videos(
            model="veo-3.1-generate-preview",
            video=current,
            prompt=p,
            config=types.GenerateVideosConfig(
                number_of_videos=1,
                resolution="720p",
            ),
        )
        while not op.done:
            time.sleep(10)
            op = client.operations.get(op)
        current = op.response.generated_videos[0].video
        results.append(current)
    return current, results  # current es el clip continuo

4-5. Skeleton en JavaScript (Node.js)

import { GoogleAI } from "@google/generative-ai"; // SDK gemini-js equivalente
const ai = new GoogleAI();

const base = await ai.models.generateVideos({
  model: "veo-3.1-generate-preview",
  prompt: "A cinematic shot in a modern newsroom. Cool daylight, 35mm.",
});

let video = base.response.generatedVideos[0].video;

const prompts = [
  "Continue: she approaches the desk; maintain lighting, ambience.",
  "Continue: over-shoulder view of the wall monitor; match color tone.",
  // ...
];

for (const p of prompts) {
  const op = await ai.models.generateVideos({
    model: "veo-3.1-generate-preview",
    video,
    prompt: p,
    config: { numberOfVideos: 1, resolution: "720p" }
  });
  video = op.response.generatedVideos[0].video;
}

// descarga video.bytes → guarda a disco

Los IDs de modelo/parámetros deben seguir las tablas oficiales (p. ej., veo-3.1(-fast)-generate-preview, number_of_videos, resolution, etc.).


5. Implementa Extend en Vertex AI (SDK / REST)

Si valoras IAM, auditoría y visibilidad de costes, Vertex AI es sólido. Consola y API soportan Extend.

5-1. Python (GenAI SDK sobre Vertex AI)

pip install --upgrade google-genai
export GOOGLE_CLOUD_PROJECT=your_project
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True
import time
from google import genai
from google.genai.types import GenerateVideosConfig, Video

client = genai.Client()

# Ejemplo: asumimos que ya existe un corto base generado (omitido). Ahora extendemos 7 s sobre un clip de Veo.
op = client.models.generate_videos(
    model="veo-3.1-generate-preview",  # Verifica el *rollout* actual en docs
    prompt="Continue: camera push-in; keep ambience and outfit.",
    video=Video(uri="gs://your-bucket/base_8s.mp4", mime_type="video/mp4"),
    config=GenerateVideosConfig(
        aspect_ratio="16:9",
        # En Vertex, escribir a GCS es un patrón práctico
        output_gcs_uri="gs://your-bucket/output/",
        # resolution y otros parámetros: ver documentación del modelo actual
    ),
)
while not op.done:
    time.sleep(15)
    op = client.operations.get(op)

print(op.result.generated_videos[0].video.uri)

Las guías de Vertex cubren pasos de Extend en UI/REST/SDK, además de auth/IAM y flujo de salidas en GCS.


6. Diseño de prompts: cómo evitar romper la continuidad

Separación recomendada

  • Contexto: Mundo, lente, temperatura de color, ambiente.
  • Directiva: Acciones del sujeto / movimientos de cámara concretos.
  • Restricciones: Fija vestuario/props/luces, especifica NGs (artefactos de manos, texto corrido, etc.).

Ejemplo de Extend (cada 7 s)

[Context]
modern newsroom, cool daylight, 35mm look, shallow depth of field; natural ambience.

[Directive]
continue from previous shot; reporter slows down and glances at the wall monitor; camera pushes in slightly.

[Constraints]
keep same outfit and mic color; keep shadow direction consistent; avoid exaggerated hand deformation.

Usando imágenes de referencia: Proporciona tres referencias (persona/vestuario/props) para estabilizar la identidad. Combina con primer/último fotograma para uniones de movimiento más suaves.


7. Gestión de calidad: detecta fallos pronto, corrige barato

  • Inspección de fotogramas frontera: En cada unión, verifica pose/orientación/sombras.
  • Continuidad de audio: Fija ambiente/clave de BGM en el Contexto. Apaga/enciende con fades en post.
  • Automatiza detección de NG: Usa similitud CLIP o SSIM para puntuar consistencia entre cortes adyacentes; si cae de un umbral, re-extiende con el mismo prompt y fija semilla para reducir jitter.
  • Bucle de producción: Itera “corto → Extend → revisión → re-Extend solo donde haga falta” en unidades de 7 s para recortar coste/tiempo/tasa de fallo.

Veo 3.1 mejora la integración de audio y la calidad de edición en Flow. Como la iluminación/sombras son más realistas, reforzar el vocabulario de restricciones suele arreglar momentos sutilmente uncanny.


8. Preguntas frecuentes (API & Operaciones)

P1. ¿Puedo usar Extend vía API?
Sí. La Gemini API expone Veo 3.1/3.1 Fast, y la especificación de Extend (7 s × hasta 20) es oficial. Vertex AI también incluye pasos de Extend.

P2. ¿Cuánto puedo alargar?
→ Para entrada Veo ≤141 s, añade en pasos de 7 s y obtén un clip único de hasta ≈148 s.

P3. ¿Puedo extender videos verticales 9:16?
Sí. Se soportan 9:16 o 16:9 (Extend asume 720p).

P4. Si quiero probar primero la UI…
Flow con Scene Extension es lo más rápido. Puedes extender con audio, y hay nuevas funciones de edición.

P5. ¿Precio/calidad?
→ Depende de modelo, resolución y duración. Veo 3.1 ofrece 1080p (8 s) y long-form a 720p, además de una variante Fast. Consulta el pricing/límites vigentes en los docs/anuncios del modelo.


9. Patrones de producción (Gemini / Vertex)

9-1. Driver Swap (abstracción → implementaciones)

class ExtendDriver(Protocol):
    def generate(self, prompt: str, **cfg) -> "Video": ...
    def extend(self, video: "Video", prompt: str, **cfg) -> "Video": ...

class GeminiVeoDriver(ExtendDriver):
    ...

class VertexVeoDriver(ExtendDriver):
    ...

def extend_to_target(video, prompts, driver: ExtendDriver, limit=20):
    assert len(prompts) <= limit
    current = video
    for p in prompts:
        current = driver.extend(current, p, resolution="720p")
    return current
  • Fija una interfaz abstracta para alternar Gemini ↔ Vertex o modelos futuros fácilmente.
  • Externaliza encolado (RDB/Redis/SQS) y logs de auditoría, y haz triviales los reintentos de 7 s.

9-2. Template prompts y “léxico de continuidad”

  • Mantén un léxico de Contexto (iluminación/lente/temperatura/ambiente).
  • Comparte Restricciones (vestuario/props/exposición de logo/negativos) en un estándar de equipo.
  • Codifica cuándo usar match cut vs. light dissolve como reglas de transición.

10. Caso de uso: extender un opener de noticias a 60 s de forma natural

Setup: Plano de entrada del presentador de 8 s → walk. Look unificado cool daylight / 35 mm.

Prompts de Extend 7 s × 7 (≈57 s)

  1. #1 (0–7 s): “Anchor se acerca al escritorio; dolly-in suave. Ambiente: murmullo de redacción.”
  2. #2 (7–14 s): “Los temas de hoy se reflejan tenuemente en el monitor. Mantén vestuario, peinado y dirección de sombras.”
  3. #3 (14–21 s): “Toma un bolígrafo y gesticula a la derecha; no cambies iluminación.”
  4. #4 (21–28 s): “Una silueta de staff pasa tras un panel de vidrio; mantén volumen general estable.”
  5. #5 (28–35 s): “Deja espacio a la izquierda para supers; prepara un match cut.”
  6. #6 (35–42 s): “Pequeña inclinación y cambio de mirada; preserva forma facial y textura de boca.”
  7. #7 (42–49 s): “Mira hacia documentos; atenúa sutilmente el ambiente.”

NG permanentes: “Sin deformación severa de dedos / sin blur excesivo ni altas quemadas / exposición de logo < 2 s / conserva largo y color de cabello.”

Finalización: Ajusta subtítulos y fundidos de BGM en post, luego recorta/remaqueta para SNS (9:16) y YouTube (16:9).


11. Solución de problemas & workarounds

  • El sujeto parece otra persona en la unión
    → Fija identidad con imágenes de referencia (hasta 3); bloquea explícitamente pelo/vestuario/props en Restricciones.
  • Deriva de exposición o temperatura de color
    → Refuerza Contexto con vocabulario de temperatura/dirección de luz; ajusta lighting/shadows en Flow si hace falta.
  • El audio se siente extraño
    → Bloquea ambiente/claves de BGM en prompts; mantén cambios de volumen cortos y suaves.
  • Llegas a los límites de longitud
    Planifica al revés desde la duración objetivo para elegir número de extensiones. Si es necesario, divide en dos partes y une en edición.

12. Cierre — Tejer una historia en “unidades de 7 segundos”

  • Extend en Veo 3.1 ofrece 7 s × hasta 20 extensiones continuas desde Gemini API / Flow / Vertex AI. Empieza clavando las restricciones de entrada (720p, 9:16 o 16:9, entrada generada por Veo) y el tope de salida (≈148 s).
  • El oficio consiste en definir un núcleo de 8 s, luego fijar Context / Directive / Constraints como léxico de continuidad. Con imágenes de referencia y primer/último fotograma, obtendrás cortes más largos y limpios.
  • La jugada operativa es idear en UI → automatizar por API. Combina colas, logs de auditoría y reintentos, y extiende rápido, barato y fiable en unidades de 7 s.

Pienso en Extend como “pasar el testigo de la respiración”. Mantén un buen plano sin perder fuelle y entrégalo a los siguientes 7 segundos—una y otra vez. Así elevas retención e inmersión. Con Veo 3.1 Extend, puedes codificar ese oficio en código y diseño.


Referencias (verificadas: 2025-10-29)

por greeden

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)