模型指南

Kling Motion Control API:让角色模仿视频中的动作

Kling Motion Control 把一张图片里的角色放进真实视频的动作中。本指南介绍要发送什么、按秒计费如何运作,以及如何通过一个 API 调用 Kling 3.0 和 2.6 Motion Control。

动作控制的作用

Kling Motion Control 需要两样东西:一张角色图片和一段有人在运动的视频。它会生成一段新视频,图片中的角色会做出视频中的动作,时间节奏、手势和肢体语言都与之相同。人们用它来制作舞蹈热潮视频、吉祥物视频和产品代言人,让它们像真人演员一样动起来,而无需拍摄角色本身。

Revana 提供两个版本:

Kling Motion Control 版本对比
模型模型 id分辨率每秒价格线路
Kling 3.0 Motion Controlkling-3.0-motion-control720p, 1080p720p 下 $0.13,1080p 下 $0.17两条线路
Kling 2.6 Motion Controlkling-2.6-motion-control720p, 1080p720p 下 $0.07,1080p 下 $0.12两条线路

Kling 3.0 是较新的模型。Kling 2.6 在 720p 下的价格约为一半,所以值得先用你的素材测试一下。

要发送什么

  • image_url:角色,最好是全身、面向镜头、背景简洁。结果中出现的就是这个人物。
  • video_url:动作视频。最好是一个人、清晰可见、镜头稳定。结果会跟随它的时长。
  • resolution:720p 或 1080p。每次都要发送。
  • prompt:可选,用于描述图片中没有的场景或细节。

两个文件都必须是 API 能够获取的链接。如果要发送你电脑上的文件,请先用 POST /v1/uploads 上传(视频最大 50 MB),然后使用它返回的链接;该链接 14 天内有效。

动作控制如何计费(2026 年 10 月)

价格按视频的每秒计算,时长由你的动作视频决定,向上取整到下一个整秒。一段 7.4 秒的舞蹈视频按 8 秒计费。

Kling Motion Control 各视频时长的费用
模型分辨率5 秒视频10 秒视频15 秒视频
Kling 3.0 Motion Control720p$0.65$1.30$1.95
Kling 3.0 Motion Control1080p$0.85$1.70$2.55
Kling 2.6 Motion Control720p$0.35$0.70$1.05
Kling 2.6 Motion Control1080p$0.60$1.20$1.80

发送之前请把动作视频裁剪到你需要的部分:每多一秒都要计费。把 max_cost_usd 设为你预期该视频时长所需支付的最高金额,超过该金额的任务会被拒绝而不会运行。失败的任务不收费,额度预付 $10 起,无需订阅;见价格页面。

制作一段动作控制视频

发送 POST /v1/generations,带上两个链接,然后轮询,直到任务出现 succeeded 或 failed。使用 10 秒的动作视频、720p,费用为 $1.30。

cURL
export REVANA_API_KEY="sr_live_..."

# 1. Submit the job (returns 202 with the generation id)
curl https://api.revana.si/v1/generations \
  -H "Authorization: Bearer $REVANA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-3.0-motion-control",
    "input": {
      "prompt": "The mascot dances on a sunny rooftop, city skyline behind.",
      "image_url": "https://example.com/mascot-full-body.png",
      "video_url": "https://example.com/dance-10s.mp4",
      "resolution": "720p"
    },
    "max_cost_usd": 1.6
  }'

# 2. Poll with the id from step 1 until status is "succeeded" or "failed"
curl https://api.revana.si/v1/generations/gen_01JC2V8K5T \
  -H "Authorization: Bearer $REVANA_API_KEY"
Python
import os
import time

import requests

API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}

resp = requests.post(f"{API}/generations", headers=HEADERS, json={
    "model": "kling-3.0-motion-control",
    "input": {
        "prompt": "The mascot dances on a sunny rooftop, city skyline behind.",
        "image_url": "https://example.com/mascot-full-body.png",
        "video_url": "https://example.com/dance-10s.mp4",
        "resolution": "720p",
    },
    "max_cost_usd": 1.6,
})
resp.raise_for_status()
job = resp.json()

while job["status"] in ("queued", "running"):
    time.sleep(5)
    job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()

if job["status"] == "succeeded":
    print(job["output"]["urls"], job["cost_usd"])
else:
    print("Failed:", job["error"])
Node.js
// Node 18 or later. Save as generate.mjs and run: node generate.mjs
const API = "https://api.revana.si/v1";
const headers = {
  Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
  "Content-Type": "application/json",
};

const res = await fetch(`${API}/generations`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    model: "kling-3.0-motion-control",
    input: {
      prompt: "The mascot dances on a sunny rooftop, city skyline behind.",
      image_url: "https://example.com/mascot-full-body.png",
      video_url: "https://example.com/dance-10s.mp4",
      resolution: "720p",
    },
    max_cost_usd: 1.6,
  }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();

while (job.status === "queued" || job.status === "running") {
  await new Promise((r) => setTimeout(r, 5000));
  job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}

if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error);
响应
{
  "id": "gen_01JC2V8K5T",
  "model": "kling-3.0-motion-control",
  "status": "succeeded",
  "output": {
    "urls": [
      "https://cdn.revana.si/g/gen_01JC2V8K5T/0.mp4"
    ],
    "duration_s": 10
  },
  "cost_usd": 1.3,
  "attempts": 1,
  "error": null,
  "created_at": "2026-10-28T10:14:02Z",
  "completed_at": "2026-10-28T10:15:31Z"
}

获得干净的结果

  • 匹配取景。全身角色配全身舞蹈视频,效果远好于半身肖像配全身视频。
  • 只有一个运动者。使用只有一个人在运动的视频。人群和切镜会让模型分不清要复制哪个动作。
  • 镜头稳定。固定机位或缓慢移动的镜头能让背景保持稳定。
  • 用 720p 出草稿。先用 720p 的 Kling 2.6 检查动作迁移的效果,再用 Kling 3.0 以 1080p 渲染满意的那一条。

关于 Kling 的文生视频和图生视频模型,请参阅 Kling 3.0 API 指南。两个动作控制模型都在模型页面上,所有字段见文档。获取 API 密钥即可试用。

常见问题

Kling Motion Control 的价格是多少?

2026 年 10 月,Kling 3.0 Motion Control 在 720p 下每秒 $0.13,1080p 下 $0.17。Kling 2.6 Motion Control 为 $0.07 和 $0.12。时长由你的动作视频决定。

Kling Motion Control 需要什么?

image_url 中的一张角色图片、video_url 中的一段动作视频,以及 720p 或 1080p 的分辨率。提示词是可选的。

Kling Motion Control 的视频有多长?

与你发送的动作视频一样长。按它的每秒计费,不足一秒的向上取整到整秒。

Kling 3.0 和 Kling 2.6 Motion Control 有什么区别?

Kling 3.0 是较新的模型。Kling 2.6 每秒更便宜。两者的输入相同,都提供 720p 和 1080p。

我可以上传自己的动作视频吗?

可以。用 POST /v1/uploads 上传(视频最大 50 MB),并把返回的链接传入 video_url。

用一个密钥试用 Kling Motion Control

一个 API 密钥即可使用两个动作控制模型以及其他所有视频和图像模型。预付额度 $10 起,仅对已交付的视频收费。