Kling 2.6 动作控制上传前预检:用 30 行 Python 判断“朝向”和裁剪时长
用 Kling 2.6 动作控制做角色动画时,最容易浪费时间的往往不是生成本身,而是素材不符合要求:动作视频太长、太短,或者选了“跟随图片朝向”却拿着一段 18 秒的舞蹈视频。本文写一个很小的 Python 脚本,在上传前用 ffprobe 读出视频时长和大小,告诉你该选哪种朝向、要不要先裁剪。
规则全部来自 Kling 2.6 动作控制 页面的说明。

链接页面要点:kling4ai.io/zh/models/kling-2-6-motion-control(2026-10-30 读取)
先把规则整理清楚
页面上和上传相关的要求可以归纳为几条:
- 需要一张角色图片和一段动作视频,图片提供主体,视频提供动作,不能只靠文字开始;
- 角色图片:JPEG 或 PNG,最多 10 MB,尺寸大于 300 像素,比例 2:5 到 5:2;
- 动作视频:MP4 或 MOV,3–30 秒,最多 100 MB;
- 朝向选“图片”时,生成上限 10 秒;选“视频”时,可以到 30 秒;
- 输出可选 720p 或 1080p;提示词最多 2,500 字符,用来描述场景,不能代替素材。
其中最容易踩坑的是朝向和时长的关系:同一段动作视频,换一个朝向设置,可用时长就从 30 秒变成 10 秒。

朝向设置决定了动作视频能用多长
脚本
"""plan_mc.py —— Kling 2.6 动作控制:上传前判断“朝向”选项与是否需要裁剪动作视频"""
import json, subprocess, sys
VIDEO_MIN, VIDEO_MAX = 3, 30 # 动作视频 3–30 秒
IMAGE_MODE_MAX = 10 # 跟随图片朝向时最长 10 秒
VIDEO_MB = 100 # 动作视频不超过 100 MB
def probe(path):
out = subprocess.run(["ffprobe", "-v", "error", "-show_entries", "format=duration,size",
"-of", "json", path], capture_output=True, text=True).stdout
f = json.loads(out)["format"]
return float(f["duration"]), int(f["size"]) / 1024 / 1024
def plan(path, want_image_orientation):
dur, mb = probe(path)
print(f"{path}: {dur:.1f} 秒, {mb:.2f} MB")
if not path.lower().endswith((".mp4", ".mov")):
print(" ✗ 格式需为 MP4 或 MOV"); return
if mb > VIDEO_MB:
print(f" ✗ 超过 {VIDEO_MB} MB,先压缩"); return
if dur < VIDEO_MIN:
print(f" ✗ 短于 {VIDEO_MIN} 秒,换一段更完整的动作"); return
limit = IMAGE_MODE_MAX if want_image_orientation else VIDEO_MAX
mode = "图片朝向" if want_image_orientation else "视频朝向"
if dur <= limit:
print(f" ✓ 可直接用于「{mode}」(上限 {limit} 秒)")
else:
print(f" ! 「{mode}」上限 {limit} 秒,需要裁剪,例如:")
print(f" ffmpeg -ss 0 -t {limit} -i {path} -c copy cut_{limit}s.mp4")
if want_image_orientation and dur <= VIDEO_MAX:
print(" 或改用「视频朝向」,保留完整动作")
if __name__ == "__main__":
plan(sys.argv[1], sys.argv[2] == "image")
几点说明:
- 阈值全部写成顶部常量,页面规则变了只改这里;
- 只读
format里的时长和大小,不解码视频,速度很快; - 裁剪建议用
-c copy,不重新编码。注意它按关键帧切,实际起点可能略有偏差,需要精确起点时去掉-c copy重新编码。
运行结果
用 ffmpeg 生成三段测试视频(18 秒、6 秒、2 秒的竖屏测试图案,只用来演示脚本逻辑),分别运行:
$ python3 plan_mc.py dance18.mp4 image
dance18.mp4: 18.0 秒, 0.14 MB
! 「图片朝向」上限 10 秒,需要裁剪,例如:
ffmpeg -ss 0 -t 10 -i dance18.mp4 -c copy cut_10s.mp4
或改用「视频朝向」,保留完整动作
$ python3 plan_mc.py dance18.mp4 video
dance18.mp4: 18.0 秒, 0.14 MB
✓ 可直接用于「视频朝向」(上限 30 秒)
$ python3 plan_mc.py wave6.mp4 image
wave6.mp4: 6.0 秒, 0.05 MB
✓ 可直接用于「图片朝向」(上限 10 秒)
$ python3 plan_mc.py clip2.mov video
clip2.mov: 2.0 秒, 0.02 MB
✗ 短于 3 秒,换一段更完整的动作
同一段 18 秒视频,在两种朝向下给出了不同建议,这正是要提前判断的地方。

先预检,再决定朝向和画质,最后看报价
朝向到底怎么选
页面的解释是:图片模式让角色朝向与图片一致,视频模式让朝向与表演视频一致。实际选择时可以这样想:
- 角色图片是正面半身照,而动作视频里的人中途转身,选“视频朝向”更容易保持动作完整,但角色会跟着视频转;
- 希望角色始终保持图片里的姿态和构图,选“图片朝向”,同时把动作控制在 10 秒内;
- 需要一段 20 秒的完整表演,只能选“视频朝向”。
无论哪种,两份素材都应该清楚地拍到头部、肩膀和躯干,这是页面特别强调的。
图片也可以顺手检查
如果想把图片检查也放进脚本,用 Pillow 读尺寸即可:宽高都要大于 300 像素,宽高比在 0.4 到 2.5 之间(即 2:5 到 5:2),文件不超过 10 MB,格式为 JPEG 或 PNG。逻辑和视频部分一样,不再展开。

脚本通过之后,还需要人工看的几项
批量检查一个文件夹
素材多的时候,可以把脚本改成遍历文件夹,一次输出所有动作视频的判断结果。核心只多几行:
import pathlib
for p in sorted(pathlib.Path(sys.argv[1]).glob("*")):
if p.suffix.lower() in (".mp4", ".mov"):
plan(str(p), sys.argv[2] == "image")
这样在开始一批角色动画前,先跑一遍就知道哪些视频要裁剪、哪些要换朝向、哪些干脆不合格,整理素材的时间会少很多。需要注意的是,批量模式下所有视频都用同一个朝向判断;如果不同角色计划用不同朝向,还是按角色分文件夹分别运行更清楚。
小结
脚本能解决的是“规则类”问题:格式、大小、时长、朝向上限。动作是否清楚、手部是否被遮挡、画面里是否只有一个主体,还要自己看一遍素材。把这两步分开,提交给 Kling 2.6 动作控制的素材基本就不会因为硬性条件被打回。选好 720p 或 1080p 后,记得在提交前确认生成报价。
浙公网安备 33010602011771号