Skip to main content

Imagen a video: primer y último fotograma

El modelo de imagen a video Wan genera videos fluidos a partir de una imagen de primer fotograma, una imagen de último fotograma y un prompt de texto opcional.

  • Especificaciones de video: Duración fija de 5 segundos y resolución personalizada (480P/720P/1080P).
  • Capacidades adicionales: Reescritura de prompts y marcas de agua.
Enlaces rápidos: Referencia de la API | Guía de prompts

Introducción

PromptPrimer fotogramaÚltimo fotogramaVideo de salida
Un adorable monstruo azul con una expresión ligeramente triste permanece bajo la lluvia. La cámara hace un zoom lento y se detiene en el momento en que mira hacia el cielo.
imagen
imagen
Antes de llamar a la API: Obtenga una clave de API, configúrela como variable de entorno y instale el SDK de DashScope.
  • SDK de Python
  • SDK de Java
  • curl
Se requiere DashScope Python SDK ≥ 2.0.1 antes de ejecutar el código a continuación. Las versiones anteriores pueden mostrar errores "url error, please check url!". Instale el SDK.
import os
import dashscope
from dashscope.v2 import DashScopeError

# La siguiente configuración corresponde a la región de Singapur. Sustituya {WorkspaceId} por el ID real de su espacio de trabajo. El valor de region varía según la región. Para consultar los endpoints de cada región, véase https://www.alibabacloud.com/help/model-studio/image-to-video-by-first-and-last-frame-api-reference
# Las claves de API son específicas de cada región. Para obtener una clave de API, véase https://www.alibabacloud.com/help/model-studio/get-api-key
client = dashscope.Client(
    api_key=os.getenv("DASHSCOPE_API_KEY", "YOUR_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

print('Espere, por favor...')
# generate es una llamada de un solo paso (envía la tarea y espera a que finalice) y devuelve un Job completado
# first_frame_url / last_frame_url son campos de la sección input que no forman parte de la firma con nombre y se pasan mediante extra_input
try:
    job = client.videos.generate(model="wan2.2-kf2v-flash",
                                 prompt="A cute blue monster with a slightly sad expression stands in the rain. The camera slowly zooms in and stops on the moment it looks up at the sky.",
                                 extra_input={'first_frame_url': "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260126/ixdxvt/wan-kf2v-blue-1.png",
                                              'last_frame_url': "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260126/nhtdrc/wan-kf2v-blue-2.png"},
                                 duration=5,  # Fijo en 5 segundos. No modificar.
                                 prompt_extend=True,
                                 watermark=True)
    print(job)
    print("video_url:", job.video_url)
except DashScopeError as e:
    print(f"Código de estado HTTP: {e.status_code}")
    print(f"Código de error: {e.code}")
    print(f"Mensaje de error: {e.message}")
    print("Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")
Salida de ejemplo
video_url caduca después de 24 horas. Descargue el video de inmediato.
{
    "request_id": "c1209113-8437-424f-a386-xxxxxx",
    "output": {
        "task_id": "966cebcd-dedc-4962-af88-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
         ...
    },
    ...
}

Disponibilidad

  • Los modelos compatibles varían según la región. Los recursos están aislados entre regiones. Para consultar los modelos compatibles en cada región, consulte la consola de Model Studio.
  • Al realizar una llamada, asegúrese de que su modelo, URL de endpoint y clave de API pertenezcan todos a la misma región. Las llamadas entre regiones fallarán.
Los códigos de ejemplo en este tema se aplican a la región de Singapur.

Capacidades principales

Generar video a partir del primer y último fotograma

Modelos compatibles: Todos los modelos. Genera videos fluidos a partir de imágenes del primer y último fotograma. Parámetros:
  • first_frame_url: Obligatorio. Proporcione la imagen del primer fotograma.
  • last_frame_url: Obligatorio. Proporcione la imagen del último fotograma.
  • prompt: Opcional (recomendado). Controla cómo cambia el video con el tiempo.
PromptPrimer fotogramaÚltimo fotogramaVideo de salida
Estilo realista. Un gatito negro curioso mira hacia el cielo. La cámara comienza a la altura de los ojos y se eleva gradualmente hasta capturar la mirada curiosa del gatito desde arriba.
Imagen del primer fotograma
Imagen del último fotograma
  • SDK de Python
  • SDK de Java
  • curl
Requiere DashScope Python SDK ≥ 2.0.1. Actualice si es necesario.
import os
import dashscope
from dashscope.v2 import DashScopeError

# La siguiente configuración corresponde a la región de Singapur. Sustituya {WorkspaceId} por el ID real de su espacio de trabajo. El valor de region varía según la región. Para consultar los endpoints de cada región, véase https://www.alibabacloud.com/help/model-studio/image-to-video-by-first-and-last-frame-api-reference
# Las claves de API son específicas de cada región. Para obtener una clave de API, véase https://www.alibabacloud.com/help/model-studio/get-api-key
client = dashscope.Client(
    api_key=os.getenv("DASHSCOPE_API_KEY", "YOUR_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

def sample_async_call_kf2v():
    # Llamada asíncrona, que devuelve un task_id
    # first_frame_url / last_frame_url son campos de la sección input que no forman parte de la firma con nombre y se pasan mediante extra_input
    try:
        job = client.videos.jobs.create(model="wan2.2-kf2v-flash",
                                        prompt="Realistic style. A curious black kitten looks up at the sky. The camera starts at eye level and gradually rises until it captures the kitten’s curious gaze from above.",
                                        extra_input={'first_frame_url': "https://wanx.alicdn.com/material/20250318/first_frame.png",
                                                     'last_frame_url': "https://wanx.alicdn.com/material/20250318/last_frame.png"},
                                        duration=5,  # Fijo en 5 segundos. No modificar.
                                        prompt_extend=True,
                                        watermark=True)
        print(job)
        print("task_id: %s" % job.task_id)
    except DashScopeError as e:
        print(f"Código de estado HTTP: {e.status_code}")
        print(f"Código de error: {e.code}")
        print(f"Mensaje de error: {e.message}")
        print("Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")
        return

    # Espera a que finalice la tarea asíncrona (sondeo con retroceso exponencial, presupuesto total predeterminado de 24 horas)
    try:
        done = client.videos.jobs.wait(job)
        print(done)
        print(done.video_url)
    except DashScopeError as e:
        print(f"Código de estado HTTP: {e.status_code}")
        print(f"Código de error: {e.code}")
        print(f"Mensaje de error: {e.message}")
        print("Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")

if __name__ == '__main__':
    sample_async_call_kf2v()

Imagen de entrada

  • Número de imágenes: Una imagen de primer fotograma y una imagen de último fotograma.
  • Métodos de entrada: URL de imagen, ruta de archivo local.

Método 1: URL de imagen (API HTTP y SDK) Recomendado

Los requisitos de ruta varían según el lenguaje:Python SDK: Admite rutas absolutas y relativas.

Sistema operativo

Ruta del archivo de entrada

Ejemplo (ruta absoluta)

Ejemplo (ruta relativa)

Linux / macOS

file://{absolute or relative path}

file:///home/images/test.png

file://./images/test.png

Windows

file://D:/images/test.png

file://./images/test.png

Java SDK: Admite solo rutas absolutas.

Sistema operativo

Ruta del archivo de entrada

Ejemplo (ruta absoluta)

Linux / macOS

file://{absolute path}

file:///home/images/test.png

Windows

file:///D:/images/test.png

file:///D:/images/test.png

Código de ejemplo: Múltiples métodos de entrada de imagen

Python SDK
import os
import dashscope
from dashscope.v2 import DashScopeError

# La siguiente configuración corresponde a la región de Singapur. Sustituya {WorkspaceId} por el ID real de su espacio de trabajo. El valor de region varía según la región.
client = dashscope.Client(
    # Si la variable de entorno no está configurada, sustituya la siguiente línea por su clave de API de Model Studio: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

# ========== Métodos de entrada de imagen (elija uno) ==========
# [Método 1] Usar una URL pública de imagen
first_frame_url = "https://wanx.alicdn.com/material/20250318/first_frame.png"
last_frame_url = "https://wanx.alicdn.com/material/20250318/last_frame.png"

# [Método 2] Usar una ruta de archivo local (file:// + ruta del archivo)
# Usar una ruta absoluta:
# first_frame_url = "file://" + "/path/to/your/first_frame.png"  # Linux/macOS
# last_frame_url = "file://" + "C:/path/to/your/last_frame.png"  # Windows
# O usar una ruta relativa:
# first_frame_url = "file://" + "./first_frame.png"              # Use su ruta real.
# last_frame_url = "file://" + "./last_frame.png"                # Use su ruta real.

def sample_sync_call_kf2v():
    print('Espere, por favor...')
    # generate es una llamada de un solo paso (envía la tarea y espera a que finalice) y devuelve un Job completado
    # first_frame_url / last_frame_url son campos de la sección input que no forman parte de la firma con nombre y se pasan mediante extra_input
    try:
        job = client.videos.generate(model="wan2.2-kf2v-flash",
                                     prompt="Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
                                     extra_input={'first_frame_url': first_frame_url,
                                                  'last_frame_url': last_frame_url},
                                     resolution="720P",
                                     prompt_extend=True)
        print(job)
        print(job.video_url)
    except DashScopeError as e:
        print(f"Código de estado HTTP: {e.status_code}")
        print(f"Código de error: {e.code}")
        print(f"Mensaje de error: {e.message}")
        print("Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code")

if __name__ == '__main__':
    sample_sync_call_kf2v()

Video de salida

  • Número de videos: Uno.
  • Especificaciones: Las especificaciones varían según el modelo. Consulte Especificaciones de video.
  • Caducidad de URL: 24 horas.
  • Dimensiones: Determinadas por la imagen del primer fotograma y la configuración de resolution.
    • El modelo conserva la relación de aspecto del primer fotograma y escala el recuento total de píxeles al objetivo. Las dimensiones de salida se ajustan automáticamente para ser divisibles por 16 (requisito de codificación).
    • Ejemplo: entrada de 750×1000 (3:4) con resolution="720P" (objetivo ≈920K píxeles) puede generar 816×1104 (relación ≈0.739, ≈900K píxeles, ambos divisibles por 16).

Facturación y limitación de tasa

  • Para obtener detalles sobre la cuota gratuita y los precios, consulte Wanx-Image-to-Video-First-Last-Frame.
  • Para la limitación de tasa del modelo, consulte la serie Wanxiang.
  • Detalles de facturación:
    • La entrada es gratuita. La facturación de salida se basa en los segundos de video exitosos generados.
    • Las llamadas fallidas no generan cargos y no consumen cuota gratuita.
    • Imagen a video también admite planes de ahorro.

Referencia de API

Imagen a video - primer y último fotograma - Referencia de API

FAQ

P: ¿Cómo genero un video con una relación de aspecto específica (como 3:4)?

R: La API no admite el control directo de la relación de aspecto, solo resolution. El parámetro resolution controla el recuento de píxeles, no la relación de aspecto. El modelo conserva la relación de aspecto del primer fotograma (first_frame_url) con ajustes menores para la codificación (las dimensiones deben ser múltiplos de 16). Para video 3:4, cargue una imagen de primer fotograma 3:4.
Ejemplo: entrada de 750×1000 (3:4) con resolution="720P" (objetivo ≈920K píxeles) puede generar 816×1104 (relación ≈0.739, ≈900K píxeles, ambos divisibles por 16).

P: ¿Por qué obtengo un error "url error, please check url!" al ejecutar el código del SDK?

R: Asegúrese de que su versión del SDK cumpla con el requisito mínimo: DashScope Python SDK ≥ 2.0.1 o DashScope Java SDK ≥ 2.22.6. Las versiones anteriores pueden mostrar errores "url error, please check url!". Actualice el SDK.