图生视频 API

把 1–2 张图片转换为一段视频。核心行为由你传入的图片数量决定:

  • 1 张图片 → 首帧驱动模式。图片作为视频的第一帧,模型向后生成动态。
  • 2 张图片 → 首帧 + 尾帧模式。第一张作为开场画面,第二张作为收尾画面,模型生成两者之间的过渡动画。

端点

POST https://api.evolink.ai/v1/videos/generations

Model ID: seedance-2.0-image-to-video

如果你希望自动识别首帧 / 首尾帧模式并获得更快速度,可改用 seedance-2.0-fast-image-to-video

请求参数

参数类型必填默认值说明
modelstring固定为 seedance-2.0-image-to-video
promptstring动作 / 镜头 / 氛围的自然语言描述。中文 ≤ 500 字符,英文 ≤ 1000 单词
image_urlsarray<string>1 或 2 个 公网可访问的图片 URL
durationinteger5视频时长(秒),范围 415
qualitystring720p480p720p
aspect_ratiostring16:916:99:161:14:33:421:9adaptive
generate_audiobooleantrue是否生成同步音频
callback_urlstring任务完成回调的 HTTPS URL,最长 2048 字符

注意: 图片只能以 URL 形式传入,不支持 Base64。所有 URL 必须无需认证即可被服务器直接 GET,且不能是需要跳转登录的页面。

图片输入要求

限制
数量1 或 2 张
格式.jpeg.png.webp
尺寸单边 300–6000 像素
宽高比0.4 – 2.5(即 2:5 到 5:2)
单张大小≤ 30 MB
请求体合计≤ 64 MB

超出上述任一限制的请求会返回 invalid_request不支持真实人脸上传,系统会自动拒绝。

首帧驱动模式(1 张图片)

curl -X POST https://api.evolink.ai/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-image-to-video",
    "prompt": "镜头缓慢推进,画面逐渐鲜活起来,微风吹动远处的草叶。",
    "image_urls": ["https://example.com/first-frame.jpg"],
    "duration": 5,
    "aspect_ratio": "adaptive"
  }'

aspect_ratio: "adaptive" 会让输出画面自动匹配输入图的宽高比。

首尾帧过渡模式(2 张图片)

curl -X POST https://api.evolink.ai/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-image-to-video",
    "prompt": "从黎明的海面平滑过渡到日落的同一片海",
    "image_urls": [
      "https://example.com/sunrise.jpg",
      "https://example.com/sunset.jpg"
    ],
    "duration": 6,
    "quality": "720p",
    "aspect_ratio": "16:9"
  }'

两张图片的尺寸与宽高比应尽量接近,否则模型可能在过渡过程中产生形变。

Python 示例

import requests

response = requests.post(
    "https://api.evolink.ai/v1/videos/generations",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    json={
        "model": "seedance-2.0-image-to-video",
        "prompt": "模特缓缓转身,头发在风中轻轻飘动",
        "image_urls": ["https://example.com/portrait.jpg"],
        "duration": 5,
        "quality": "720p"
    }
)

task = response.json()
print(f"Task ID: {task['id']}")

响应

{
    "id": "task-unified-1774857405-abc123",
    "object": "video.generation.task",
    "created": 1774857405,
    "model": "seedance-2.0-image-to-video",
    "status": "pending",
    "progress": 0,
    "type": "video",
    "task_info": {
        "can_cancel": true,
        "estimated_time": 165,
        "video_duration": 5
    },
    "usage": {
        "billing_rule": "per_second",
        "credits_reserved": 50,
        "user_group": "default"
    }
}

字段含义与其他 Seedance 2.0 模型一致,详见 异步任务

常见问题

我传了 3 张图会怎样? 返回 invalid_request。image-to-video 严格要求 1 或 2 张。如果你需要超过 2 张图片作为风格 / 主体参考,请使用 参考生视频

图片 URL 必须是我自己托管的吗? 不必。任何可直接 GET 的公开 URL 均可。但对于需要稳定复现的生产流水线,建议使用你自己的对象存储(OSS / S3 / R2),避免第三方 URL 失效。

输出视频会保留输入图片里的人物面孔吗? 如果输入图片包含真实人脸,请求会被直接拒绝。如需面孔一致的虚拟人物,可以先用其他工具合成非真实人脸,再传入本 API。

相关文档