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 ProKling 2.6 ProSteady Dancer
输出文件大小13068 KB10672 KB964 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 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐