AI 运动控制这个能力,最近在短视频圈子里传得挺火。简单说就是:给一张人物照片,再给一段舞蹈视频做参考,AI 把舞蹈动作"迁移"到照片里的人身上。听起来像是 deepfake 的变种,但技术路线完全不同——它不是换脸,是让静态人物"动起来"。

目前 API 层面能做到什么程度?手臂交叉、快速转身这种复杂动作能不能扛住?不同模型跑同一段参考视频,差距有多大?拿了 Kling 3.0 Pro、Kling 2.6 Pro 和 Steady Dancer 三个模型跑了一轮。

运动控制和普通图生视频有什么区别

运动控制多了一个输入:参考视频。普通 I2V 是给一张图加一段 prompt,模型自己决定怎么动。运动控制是从参考视频里提取人体骨骼关键点的运动轨迹,然后把这些运动"贴"到你给的人物图片上。

输入两个东西:一张人物图片(角色图),一段参考视频(动作源)。输出一段视频:图片里的人做出参考视频里的动作。

技术难点不少。手臂交叉的时候骨骼点会重叠,模型容易搞混左右手。快速运动导致帧间不连贯。衣服和头发的物理模拟也是个问题——参考视频里穿短袖,角色图穿长裙,裙摆怎么动?

测试用的素材长什么样

角色图用 Seedream 5.0 Lite 生成,舞蹈室里的女性半身照,黑色背心灰色运动裤,马尾辫,干净白墙背景:

请添加图片描述

参考舞蹈视频用 Wan 2.7 T2V 生成,5 秒街舞片段,有手臂交叉和快速转身动作。下面是四帧截图:

请添加图片描述

Kling 3.0 Pro Motion Control 怎么调

Kling 的运动控制在 WaveSpeed 上有好几个版本。最新的是 Kling 3.0,有 Pro 和 Standard 两个档次。

import os
import wavespeed
from dotenv import load_dotenv
load_dotenv()

os.environ["WAVESPEED_API_KEY"] = "你的key"

# 先上传角色图和参考视频
character_url = wavespeed.upload("character.jpg")
dance_url = wavespeed.upload("dance_reference.mp4")

# Kling 3.0 Pro Motion Control
result = wavespeed.run(
    "kwaivgi/kling-v3.0-pro/motion-control",
    {
        "image": character_url,
        "video": dance_url,
        "prompt": "A young woman performing street dance moves in a bright studio, dynamic movement, smooth motion"
    },
    timeout=1200.0
)

print(f"视频URL: {result['outputs'][0]}")

参考视频的时长会影响输出时长。Kling 3.0 Pro 支持 5 秒和 10 秒两种输出,参考视频太长模型会自动截取。prompt 在运动控制模式下作用比较弱——动作主要由参考视频决定,prompt 更多是控制画面风格和环境。

Kling 3.0 Pro 跑出来的四帧截图:

Kling 2.6 Pro 有什么不同

Kling 2.6 Pro 的运动控制多了一个必填参数:character_orientation,值是 "image""video"。告诉模型角色的朝向以角色图为准还是以参考视频为准。

# Kling 2.6 Pro Motion Control
result = wavespeed.run(
    "kwaivgi/kling-v2.6-pro/m![请添加图片描述](https://i-blog.csdnimg.cn/direct/e9a3ec4378fa46c8b3e61d6c647eefe4.jpeg)
otion-control",
    {
        "image": character_url,
        "video": dance_url,
        "prompt": "A young woman performing street dance moves in a bright studio",
        "character_orientation": "image"
    },
    timeout=1200.0
)

"image" 的话,输出视频里角色的初始朝向和角色图一致。选 "video" 的话,角色会先转到参考视频第一帧的朝向。大多数情况下选 "image" 就行。不填这个参数直接报 400,这是 2.6 和 3.0 的一个区别。

Steady Dancer 又是什么

Steady Dancer 是 WaveSpeed 自己的运动控制模型。参数和 Kling 差不多,也是传角色图 + 参考视频 + prompt。

# Steady Dancer
result = wavespeed.run(
    "wavespeed-ai/steady-dancer",
    {
        "image": character_url,
        "video": dance_url,
        "prompt": "A young woman performing street dance moves in a bright studio, dynamic movement, smooth motion"
    },
    timeout=1200.0
)

三个模型跑同一段舞蹈,差多少

用同一张角色图和同一段参考视频,分别跑了三个模型。下面是三个模型在视频中间帧的对比:

请添加图片描述

对比维度 Kling 3.0 Pro Kling 2.6 Pro Steady Dancer
输出文件大小 13068 KB 10672 KB 964 KB
额外必填参数 character_orientation
模型提供方 快手 快手 WaveSpeed

Kling 3.0 Pro 输出 13MB,Kling 2.6 Pro 输出 10MB,Steady Dancer 只有 964KB。文件大小差了十几倍,画面细节和分辨率差距明显。Kling 3.0 是目前三个里面输出质量最高的,2.6 稍逊但也不错,Steady Dancer 更轻量,适合快速预览或者对画质要求不高的场景。

三个模型的 API 调用方式几乎一样,切换模型只需要改模型 ID。这是用聚合 API 平台的好处——不用对接三套不同的 API。

适合什么场景用

运动控制目前比较适合这几种场景:

短视频创作。拍一段舞蹈参考视频,然后让 AI 生成的虚拟角色来跳。省去了真人出镜的麻烦。

数字人内容。给品牌吉祥物或虚拟形象加上真人动作,做产品展示或者互动内容。

动画预览。动画师可以先用真人拍一段动作参考,快速生成角色动画的预览版本,确认动作没问题再精修。

但也有明显的局限。多人场景目前基本不行。遮挡严重的动作(比如背对镜头再转回来)容易出问题。衣服物理模拟还比较粗糙。

几个要注意的地方

角色图的姿势最好和参考视频的起始帧接近。如果角色图是正面站立,参考视频第一帧是侧身,模型需要先"转"过去,这个过渡容易出瑕疵。

参考视频的背景尽量干净。复杂背景会干扰骨骼点检测。

prompt 写不写都行,但如果写了,不要和参考视频的动作矛盾。比如参考视频是跳舞,prompt 别写"a person standing still"。

Kling 2.6 的 character_orientation 参数别忘了填,不填直接报 400。3.0 版本和 Steady Dancer 不需要这个参数。

视频生成耗时比较长,SDK 的 timeout 建议设到 1200 秒。我跑 Kling 3.0 Pro 的时候等了大概 10 分钟。

具体的模型参数和最新版本,去 WaveSpeed 官网确认:wavespeed.ai/models

相关链接:
Kling Motion Control 模型集合:https://wavespeed.ai/collections/kling
WaveSpeed API 文档:https://wavespeed.ai/docs/rest-api

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐