OpenRouter 对比 Veo 3.1、Seedance、Kling 与 Grok Imagine Video 的图生视频能力与价格
Best Image-to-Video AI Models in 2026: Cost, Resolution, and Control
OpenRouter 发布图生视频模型对比,覆盖 Veo 3.1 系列、Seedance 2.5 与 2.0 系列、Kling v3.0 系列和 Grok Imagine Video,通过同一 video generation API 调用。
原文以表格对比 Veo、Seedance、Kling、Grok Imagine Video 各系的分辨率、时长、帧控制和价格,并给出按需求选型的判断路径。
如果你已经有视频起始所需的图像,那么选择图像到视频模型就取决于第一帧之后必须发生什么。片段可能需要以第二张精确图像结束、时长超过几秒、包含生成的音频,或者保持在每秒价格以下。
我们提供的视频模型对这些要求的处理方式各不相同。本文涵盖四个模型系列:Veo 3.1、Seedance、Kling 和 Grok Imagine Video。它们并非图像到视频的全部目录。视频模型合集中有完整列表。
你可以通过同一个 视频生成 API 调用它们。提交、轮询和下载的生命周期对每个模型都相同。但每个模型接受的时长、分辨率、帧角色、音频选项和价格则不同。本文比较这些设置,然后展示如何使用 TypeScript SDK 提交图像到视频任务。
摘要
- Veo 3.1、Fast 和 Lite 生成 4、6 或 8 秒的片段,支持首帧和末帧控制以及生成音频。Veo 3.1 和 Fast 最高支持 4K,Lite 止步于 1080p。
- Seedance 2.5 生成 4 到 30 秒的片段,分辨率为 480p 或 720p,接受首帧和末帧,并最多可接受 50 个图像、视频和音频参考素材。Seedance 2.0 系列覆盖 4 到 15 秒。
- Kling v3.0 Standard 和 Pro 生成 3 到 15 秒的片段,分辨率为 720p,支持首帧和末帧控制。音频为可选,并会改变价格。
- Grok Imagine Video 1.5 仅从首帧生成 1 到 15 秒的片段,分辨率为 480p、720p 或 1080p,并带有生成音频。
- 本文中的每个模型都使用
POST /api/v1/videos。GET /api/v1/videos/models返回每个模型支持的设置和定价 SKU。
图像在视频请求中的使用方式
图像可以定义成片中的某一帧,也可以作为参考素材。我们用两个不同的请求字段来处理这两种情况。
文本到视频、图像到视频和参考到视频
使用 文本到视频 时,模型仅根据你的提示词构建场景。除了提示词所描述的内容之外,你无法控制开场帧。
使用 图像到视频 时,图像会成为首帧、末帧或两者。如果产品视频必须以精确的产品镜头开场,这就是要使用的模式。
使用 参考到视频 时,模型接收源素材,但不会将其固定到某个帧位置。你可以提供某个角色的多张图像,让模型在构建新镜头时保持其外观。
如果图像必须出现在片段中的特定位置,请使用图像到视频。如果它只需要引导结果,请使用参考到视频。
frame_images 和 input_references 字段
我们将这两种模式作为 POST /api/v1/videos 上的独立字段暴露出来。
| 字段 | 作用 |
|---|---|
frame_images | 将图像用作精确的首帧、末帧或两者 |
input_references | 为模型提供图像、视频或音频素材以供遵循,但不将其固定到某一帧 |
每个 frame_images 条目都带有一个 frame_type,取值为 first_frame 或 last_frame。并非每个模型都支持这两种角色。视频模型目录中的 supported_frame_images 数组会告诉你某个模型接受哪些角色。
如果你在一个请求中同时发送两个字段,frame_images 优先,我们会将该任务视为图像到视频。
图像到视频模型对比
这些表格涵盖 Veo、Seedance、Kling 和 Grok Imagine Video 系列。我们也提供其他图像到视频模型,视频模型合集是当前目录。
分辨率、时长、帧角色和音频设置来自GET /api/v1/videos/models。价格来自各模型页面。我们在 2026 年 9 月 11 日检查了两者。视频定价因分辨率、音频和输入类型而异,因此请将这些数字视为对比参考,并在估算制作成本前查看模型页面。
输出设置
| 模型 | 分辨率 | 时长 | 生成音频 | 帧控制 |
|---|---|---|---|---|
| google/veo-3.1 | 720p、1080p、4K | 4、6、8 秒 | 可选 | 首帧和尾帧 |
| google/veo-3.1-fast | 720p、1080p、4K | 4、6、8 秒 | 可选 | 首帧和尾帧 |
| google/veo-3.1-lite | 720p、1080p | 4、6、8 秒 | 可选 | 首帧和尾帧 |
| bytedance/seedance-2.5 | 480p、720p | 4 到 30 秒 | 可选 | 首帧和尾帧 |
| bytedance/seedance-2.0 | 480p、720p、1080p、4K | 4 到 15 秒 | 可选 | 首帧和尾帧 |
| bytedance/seedance-2.0-fast | 480p、720p | 4 到 15 秒 | 可选 | 首帧和尾帧 |
| bytedance/seedance-2.0-mini | 480p、720p | 4 到 15 秒 | 可选 | 首帧和尾帧 |
| kwaivgi/kling-v3.0-pro | 720p | 3 到 15 秒 | 可选 | 首帧和尾帧 |
| kwaivgi/kling-v3.0-std | 720p | 3 到 15 秒 | 可选 | 首帧和尾帧 |
| kwaivgi/kling-video-o1 | 720p | 5 或 10 秒 | 可选 | 首帧和尾帧 |
| x-ai/grok-imagine-video-1.5 | 480p、720p、1080p | 1 到 15 秒 | 是 | 仅首帧 |
| x-ai/grok-imagine-video | 480p、720p | 1 到 15 秒 | 未列出 | 仅首帧 |
参考输入和价格
| 模型 | 参考输入 | 价格 |
|---|---|---|
| google/veo-3.1 | 未列出 | $0.20/秒 到 $0.60/秒 |
| google/veo-3.1-fast | 未列出 | $0.08/秒 到 $0.30/秒 |
| google/veo-3.1-lite | 未列出 | $0.03/秒 到 $0.08/秒 |
| bytedance/seedance-2.5 | 最多 50 个图像、视频和音频素材 | 480p 起 $0.1028/秒 |
| bytedance/seedance-2.0 | 图像、视频和音频 | 480p 起 $0.06726/秒 |
| bytedance/seedance-2.0-fast | 图像、视频和音频 | 480p 起 $0.04035/秒 |
| bytedance/seedance-2.0-mini | 图像、视频和音频 | 480p 起 $0.03363/秒 |
| kwaivgi/kling-v3.0-pro | 未列出 | 无音频 $0.112/秒,有音频 $0.168/秒 |
| kwaivgi/kling-v3.0-std | 未列出 | 无音频 $0.084/秒,有音频 $0.126/秒 |
| kwaivgi/kling-video-o1 | 未列出 | $0.112/秒 |
| x-ai/grok-imagine-video-1.5 | 未列出 | $0.08/秒 到 $0.25/秒,外加每张输入图像 $0.01 |
| x-ai/grok-imagine-video | 最多 7 张图像 | $0.05/秒 到 $0.07/秒,外加每张输入图像 $0.002 |
关于阅读这些表格的三点说明。
- 可选音频意味着模型公开了
generate_audio请求参数。Grok Imagine Video 模型没有公开该参数。Grok Imagine Video 1.5 的描述称该模型会生成音效、环境音和对话,因此表格将其标记为“是”。较早的 Grok Imagine Video 描述未提及音频,因此表格将其标记为“未列出”。 - 参考输入反映的是模型在其 OpenRouter 页面上的描述所述内容。未列出意味着描述未提及参考图像、视频或音频。这并不意味着我们测试后发现参考会被拒绝。reference-to-video cookbook 说明了如何在你基于此构建之前确认支持情况。
- Seedance 价格是按视频 token 计费,而不是按秒计费。Seedance 2.0 模型页面说明,token 数量为高度乘以宽度乘以时长乘以 24,再除以 1,024。表格中的每秒数字是模型页面针对 480p 输出显示的起始费率。Seedance 2.5 列出每百万视频 token $10.70,Seedance 2.0 在 480p 和 720p 下列出 $7.00,1080p 和 4K 另有费率,Fast 列出 $4.20,Mini 列出 $3.50。带视频输入的请求使用更低的每 token 费率。
因为大多数模型按秒计费,时长也是一项成本决策。按 Seedance 2.5 每秒 $0.1028 的起价计算,一段 4 秒片段起价约 $0.41,一段 30 秒片段起价约 $3.08。在 720p 或不同输入配置下费用更高。
如何选择
时长和帧控制会先缩小候选范围。一旦你确定了片段必须多长,以及是否需要固定首帧、尾帧或两者都要,就可以在剩余模型之间比较音频、分辨率和成本。
8 秒及以下且带生成音频的片段
Veo 3.1、Veo 3.1 Fast 和 Veo 3.1 Lite 可生成 4、6 或 8 秒片段,支持 16:9 或 9:16,具备首帧和尾帧控制,并提供 generate_audio 选项。Veo 3.1 和 Fast 支持 720p、1080p 和 4K。Lite 支持 720p 和 1080p。
Lite 在 720p 无音频时起价为每秒 $0.03,Veo 3.1 在无音频时起价为每秒 $0.20,因此在提示词和运动仍在调整时,Lite 或 Fast 成本更低。image-to-video cookbook 正是出于这个原因使用了 google/veo-3.1-lite。
Veo 3.1 Fast 和 Lite 的模型描述中列出了 SynthID 水印,这是 Google 为 AI 生成内容添加的不可感知标记。如果你的工作流有来源或水印要求,请查看你计划使用的 Veo 变体的模型描述。
最长 30 秒的片段和大量参考素材
Seedance 2.5 可生成 4 到 30 秒片段,支持 480p 或 720p,接受首帧和尾帧,并最多可接受 50 个图像、视频和音频参考素材。它是本次比较中唯一能在一次生成中产出 20 或 30 秒镜头的模型。
Seedance 2.0 系列以更低的起价覆盖 4 到 15 秒。Seedance 2.0 支持 480p、720p、1080p 和 4K。Fast 和 Mini 支持 480p 和 720p。三者的描述中都列出了图像、视频和音频参考。
如果你不需要 30 秒窗口或 50 个素材的额度,2.0 系列以更低的价格覆盖相同的首帧和尾帧工作流。
所有 Seedance 模型都仅通过托管 API 运行。我们没有找到其中任何模型的公开权重或模型许可证,因此它们都无法在本地或气隙环境中运行。
3 到 15 秒的首帧和尾帧控制
Kling v3.0 Standard 和 Pro 可生成 3 到 15 秒片段,支持 720p、16:9、9:16 或 1:1,并具备首帧和尾帧控制。音频为可选。Standard 无音频时每秒 $0.084,带音频时每秒 $0.126。Pro 分别为 $0.112 和 $0.168。快手将 Pro 描述为更高视觉质量层级。
Kling Video O1 可生成 5 或 10 秒片段,支持 720p,具有相同的帧角色,费用为每秒 $0.112。当这两个时长之一已经适合该镜头时使用它。
一个起始帧和最长 15 秒的片段
Grok Imagine Video 1.5 可生成 1 到 15 秒片段,支持 480p、720p 或 1080p,以及七种宽高比。它的 supported_frame_images 数组只列出 first_frame,因此你可以固定开场图像,但不能固定结尾图像。模型描述称其可生成音效、环境音和对话。
更早的 Grok Imagine Video 最高支持 720p,且每秒成本更低。其描述列出了最多七张参考图像的 reference-to-video,而 1.5 的描述未提及这一点。
如果片段必须以第二张精确图像结束,请改用 Veo、Seedance 或 Kling。
提交 image-to-video 任务
选定模型后,请检查源图像是否可通过稳定、可直接下载的 HTTPS URL 访问,以及该模型是否支持你需要的帧角色。
URL 在浏览器中能正常访问,但提供商抓取时仍可能失败,例如它依赖会话 cookie、通过 HTML 页面重定向,或位于机器人检测之后。在花费额度进行生成之前,请先直接检查该 URL。
curl -I "$FIRST_FRAME_URL"你需要一个 200 状态和一个图像内容类型,例如 image/jpeg、image/png 或 image/webp。
下面的示例使用 google/veo-3.1-lite 生成一段 4 秒 720p 的片段,将提供的图像作为第一帧并关闭音频。REST API 使用 snake_case 字段名,TypeScript SDK 会将其映射为 camelCase。frame_images 变为 frameImages,frame_type 变为 frameType,image_url 变为 imageUrl,generate_audio 变为 generateAudio。诸如 first_frame 和 image_url 这样的值保持不变。
该示例还将 { retries: { strategy: "none" } } 作为第二个参数传给 generate。默认情况下,SDK 会对返回 5XX 状态的请求进行重试,采用指数退避,最长持续一小时。视频提交会启动计费工作,因此如果服务器接受了任务,但在你收到任务 ID 之前返回了瞬时错误,自动重试会提交第二个付费任务,而客户端只能看到第二个。提交时关闭重试后,失败的提交会以错误形式暴露出来,由你决定是否重新提交。按调用设置的选项会让只读的 getGeneration 轮询调用保留默认重试,这些调用可以安全地重复执行。
import { OpenRouter } from "@openrouter/sdk";
const apiKey = process.env.OPENROUTER_API_KEY;
const firstFrameUrl = process.env.FIRST_FRAME_URL;
if (!apiKey) {
throw new Error("Set OPENROUTER_API_KEY first.");
}
if (!firstFrameUrl) {
throw new Error("Set FIRST_FRAME_URL to a directly downloadable image URL.");
}
const openRouter = new OpenRouter({ apiKey });
const job = await openRouter.videoGeneration.generate(
{
videoGenerationRequest: {
model: "google/veo-3.1-lite",
prompt:
"The camera slowly pushes in as the subject turns toward warm window light, cinematic, realistic motion",
duration: 4,
resolution: "720p",
aspectRatio: "16:9",
generateAudio: false,
frameImages: [
{
type: "image_url",
imageUrl: { url: firstFrameUrl },
frameType: "first_frame",
},
],
},
},
{ retries: { strategy: "none" } },
);
console.log(job.id, job.status);成功提交后返回的是一个任务,而不是完成的 MP4。存储任务 ID 并轮询 GET /api/v1/videos/{jobId},直到状态为 completed,然后从任务的 unsigned_urls 数组中下载视频(SDK 将其暴露为 unsignedUrls),并在 Authorization 请求头中带上你的 API 密钥。在 failed、cancelled 或 expired 时停止轮询。我们的视频生成指南建议轮询间隔为 30 秒。
let current = job;
while (!["completed", "failed", "cancelled", "expired"].includes(current.status)) {
await new Promise((resolve) => setTimeout(resolve, 30_000));
current = await openRouter.videoGeneration.getGeneration({ jobId: job.id });
}
if (current.status !== "completed") {
throw new Error(current.error ?? `Video generation ${current.status}.`);
}如果模型支持提供最后一帧,请添加第二个 frameImages 条目,并设置 frameType: "last_frame"。
frameImages: [
{
type: "image_url",
imageUrl: { url: firstFrameUrl },
frameType: "first_frame",
},
{
type: "image_url",
imageUrl: { url: lastFrameUrl },
frameType: "last_frame",
},
],如果你的应用允许用户切换模型,请在构建请求之前查询 GET /api/v1/videos/models。响应包含每个模型的 supported_durations、supported_resolutions、supported_aspect_ratios、supported_frame_images、generate_audio 标志以及 pricing_skus。如果请求包含不受支持的时长、分辨率或宽高比,会返回一个 400,其中列出支持的值。
常见问题
OpenRouter 上有哪些图生视频模型可用?
视频目录包括 Veo 3.1 及其 Fast 和 Lite 变体、Seedance 2.5 和 Seedance 2.0 系列、Kling v3.0 Standard 和 Pro、Kling Video O1,以及 Grok Imagine Video 1.5 及其前代产品等。视频模型合集和 GET /api/v1/videos/models 列出了当前可用的集合。
图生视频和参考生视频有什么区别?
图生视频使用 frame_images。图像会成为确切的第一帧、最后一帧,或两者兼有。参考生视频使用 input_references。模型将图像、视频或音频用作指导,而不将它们放在固定帧上。如果请求同时包含这两个字段,frame_images 优先,我们会将该请求视为图生视频。
图生视频生成费用是多少?
大多数视频模型按输出秒数计费,费率可能随分辨率、是否生成音频以及请求是否包含视频输入而变化。Seedance 模型则按视频 token 计费。每个模型页面都会列出当前费率,GET /api/v1/videos/models 会返回每个模型的定价 SKU。
图生视频任务需要多长时间?
视频生成是异步的。POST /api/v1/videos 会立即返回一个任务,你轮询 GET /api/v1/videos/{jobId} 直到状态为 completed。我们的文档建议轮询间隔为 30 秒。周转时间因模型、时长和分辨率而异。
如果视频生成任务失败会怎样?
任务可能以 failed、cancelled 或 expired 结束。当状态达到其中任一值时停止轮询,并读取 error 字段。轮询请求本身的瞬时错误并不代表任务失败,因此应针对同一任务 ID 重试状态请求,而不是提交新的付费生成。
来源:OpenRouter:Announcements · openrouter.ai