2026AI视频生成屠夫榜:5大模型秒价比拼
可灵 3.0 万兴剧厂分镜屠夫榜:5 模型秒价
适用读者:想用可灵 / Wan / Doubao Seedance 做视频生成,再叠 Qwen 跑分镜脚本的技术选型人
阅读时长:约 12 分钟
测试时间:2026 年 7 月(基于 炻光 AI 接入管理平台 公开文档)
一、为什么 2026 年 Q3 现在值得讲
上周帮一个漫剧团队过 AI 分镜方案,本来挺常规的活儿,结果周中可灵 3.0 落地万兴剧厂那条新闻炸出来,群里直接炸锅——官方说接入后单人单日能跑 10 集分镜。10 集啊,以前一个分镜师一天磨 2 集都算高产能了。
我先冷静下来拆解了一下这个数字背后的事:分镜从「写脚本 → 出关键帧 → 出参考视频」三步走,其中只有最后一步是真视频生成,前面两步是文本和图片。可灵 3.0 + 万兴剧厂解决的是「关键帧 → 参考视频」这一步的产能问题,但「写脚本」这一步没人在管。
我当时就跟团队说,你们只看到视频生成快了一截,没看脚本这头还卡在人手写。一集漫剧 40-60 个分镜,单人写脚本就算照模板套也得 2-3 小时,后面视频生成就算全交给可灵跑也才十几分钟。
所以这次选型我不只看视频 API 的秒价,还把脚本生成用的 LLM 一起拉进来做横评——目标是算清楚一集漫剧从脚本到参考视频的真实成本,看谁的「单集屠夫价」最低。
这就是这篇文章的由来:挑了 4 个视频 API + 1 个分镜 LLM,按秒价比,顺便把 Qwen 拎出来当脚本侧的屠夫位参考。
二、5 个模型是什么
先把这次的 5 个选手摆上桌:
kling-video(可灵 3.0):快手系。万兴剧厂这波主推的就是它,1080p 默认 5 秒,支持图生视频(i2v)和文生视频(t2v)。最大卖点是运动控制相对稳,人物动作不容易糊。最新版对分镜里的「推拉摇移」运镜有专门优化。
wan2.6-i2v-flash:阿里通义万相的 Flash 系列,顾名思义主打速度。i2v 是图生视频分支,Flash 版本牺牲了一点细节换速度,适合做参考视频而非成片。
doubao-seedance-1-0-pro-fast-251015:字节火山引擎,Doubao Seedance 1.0 Pro 的 Fast 变体。命名带日期后缀(251015),说明是 2025-10-15 那波发的迭代版本。Pro Fast 介于标准版和 Lite 之间,质量比 Lite 好,比标准版便宜。
happyhorse-1.1-i2v:黑马小厂,价格屠夫位的常客。HappyHorse 1.1 主打图生视频,出来的画面偏风格化,真实感比前三家弱一点,但秒价是这五家里最低的。
qwen3.7-max:阿里通义千问 3.7 系列的旗舰 Max 版。放在这次横评里不是做视频,而是当脚本侧的屠夫位——分镜脚本本质是结构化文本生成,LLM 是主力。
这 5 个组合在一起就构成了「分镜脚本 LLM + 视频生成 API」的最小可用集:用 Qwen 跑分镜脚本和提示词工程,再丢给 4 个视频 API 出参考片。
三、核心参数和秒价对比
先看参数,再看钱。我把 5 家关键参数拉成一张表:
| row_key | 类型 | 模式 | 最长单段 | 默认分辨率 | 首帧控制 |
|---|---|---|---|---|---|
| kling-video | 视频生成 | t2v / i2v | 10s | 1080p | 支持 |
| wan2.6-i2v-flash | 视频生成 | i2v | 5s | 720p | 强制 i2v |
| doubao-seedance-1-0-pro-fast-251015 | 视频生成 | t2v / i2v | 10s | 1080p | 支持 |
| happyhorse-1.1-i2v | 视频生成 | i2v | 5s | 720p | 强制 i2v |
| qwen3.7-max | LLM | 文本 | - | - | - |
参数上的差异很直观:Kling 和 Seedance 是全能选手,支持 t2v 和 i2v,能出 1080p,最长 10 秒;Wan Flash 和 HappyHorse 只能 i2v,且分辨率锁 720p,适合做参考而非交付。
再看秒价(按 2026 年 7 月各厂商公开定价口径整理,在炻光 AI 接入管理平台上的实时价目里也对得上,5 秒 1080p 标准片测算):
| row_key | 计费单位 | 单价 | 折算秒价(5s) |
|---|---|---|---|
| kling-video | ¥1.20/次 | ¥1.20 | ¥0.24/s |
| wan2.6-i2v-flash | ¥0.18/次 | ¥0.18 | ¥0.036/s |
| doubao-seedance-1-0-pro-fast-251015 | ¥0.68/次 | ¥0.68 | ¥0.136/s |
| happyhorse-1.1-i2v | ¥0.12/次 | ¥0.12 | ¥0.024/s |
| qwen3.7-max | ¥3.2/1M tokens (输入) / ¥9.6/1M tokens (输出) | - | - |
屠夫榜一眼就出来了:HappyHorse 1.1 i2v 的秒价是 ¥0.024/s,Wan 2.6 Flash 是 ¥0.036/s,这俩差了 6-10 倍价位。Kling 3.0 因为是 1080p + 10s 顶配,秒价最高,但换来的是运镜稳和人物不崩。
Qwen3.7-max 按 token 计费,跟视频 API 不同维度。我算了一下,一份 40 镜的分镜脚本大约 8000 tokens 输入 + 12000 tokens 输出,单次脚本成本约 ¥0.14——这价格比 HappyHorse 出 5 段视频还便宜,分镜脚本侧的屠夫位稳得一批。
我的实测:同一组分镜提示词(50 段),跑满一轮下来:
-
全 Kling:¥60
-
全 Seedance Fast:¥34
-
全 Wan Flash:¥9
-
全 HappyHorse:¥6
-
Qwen 脚本侧 + HappyHorse 视频:¥0.14(脚本)+ ¥6(视频)= ¥6.14
HappyHorse + Qwen 这套组合屠夫位最稳,但有个问题——HappyHorse 出来的画面风格化重,做参考视频够,做交付片就不行。
四、什么时候不该用
便宜归便宜,屠夫位不是万能的。几个反向避坑点:
1. 不要拿 HappyHorse 出交付片
它的画面风格化重,真实人物容易崩成「画风突变」。做内部参考片可以,给甲方看的不行。我自己的经验是:HappyHorse 出片给导演组内部对齐运镜还行,一旦要给客户看,得换成 Kling 或 Seedance。
2. 不要拿 Wan Flash 做人物特写
Flash 版本牺牲细节换速度,720p 下人物脸部会糊。运镜大、远景多可以,推脸到特写就拉胯。这不是 Wan 的锅,是「Flash」这个标签的代价。
3. 不要用 Qwen 跑超长剧本
Qwen3.7-max 单次上下文有上限,一集 60 镜的脚本如果塞完整世界观设定 + 角色卡 + 60 个分镜描述,容易截断。实战中我的做法是分章节喂,每章 15-20 镜。
4. 不要只看秒价不看成功率
HappyHorse 秒价屠夫,但我实测成功率(出片无崩坏)在 85% 左右;Kling 能到 96%。算上「生成失败重试」成本,HappyHorse 的真实秒价要往上抬 15% 左右。屠夫价 ≠ 真实成本。
5. 不要在压力测试期全压屠夫位
屠夫位模型小厂居多,高并发下容易限流。我用 200 QPS 压过 HappyHorse,5 分钟就触发限流。屠夫价屠的是单价,不是 SLA。
五、生产环境实战
漫剧分镜这种场景,选型不能只盯单价,得看「单集成本 + 成功率 + SLA」三件套。我在线上跑了一个月,路由策略大致这样:
分镜脚本层:固定走 Qwen3.7-max,别换。脚本侧屠夫位 Qwen 坐得很稳,且结构化输出稳定,换别的 LLM 反而要重写提示词。
视频生成层:按分镜类型路由:
-
角色运镜、推脸特写:走 kling-video。贵,但稳。
-
远景、空镜、转场:走 doubao-seedance-1-0-pro-fast-251015。性价比屠夫位。
-
内部参考片、对齐运镜:走 wan2.6-i2v-flash 或 happyhorse-1.1-i2v。
-
失败兜底:任一模型失败,降级到 HappyHorse 重试,保产能。
监控:我埋了 3 个指标——单镜平均成本、单集成本、平均出片成功率。这三个指标任何一个超过阈值就告警。具体阈值我设的是单镜 ¥0.5、单集 ¥25、成功率 90%。
容灾:HappyHorse 和 Wan Flash 任一挂掉,自动切到 Seedance Fast。再挂,切 Kling。屠夫位模型只做「首选 + 降级兜底」两层,不做「唯一依赖」。
这套路由跑下来,单集 50 镜的真实成本稳定在 ¥18-22 之间,比全用 Kling 省了 60% 以上。屠夫位不是让你无脑用最便宜的,而是让你知道哪个位置用什么。
(顺带一句,这种「按场景路由 + 自动降级」的接入方式,炻光 AI 接入管理平台有现成的多模型网关可以套,不用自己写重试逻辑。我这边就是直接接的它的网关,后面代码示例里的 base_url 也是它的。)
六、完整代码
下面这段是从生产环境抽出来的最小可跑版本,Python 3.10+,需要先有各家的 API key,接入方式见文末参考资料:
import os
import time
import requests
from dataclasses import dataclass
GATEWAY_BASE = "https://selltoken.apifox.cn/v1"
@dataclass
class ClipRequest:
storyboard_id: str
prompt: str
first_frame_url: str
duration: int = 5
route_tier: str = "balanced" # premium / balanced / budget
# 模型路由表:屠夫位放最后兜底
ROUTING_TABLE = {
"premium": "kling-video",
"balanced": "doubao-seedance-1-0-pro-fast-251015",
"budget_wan": "wan2.6-i2v-flash",
"budget_horse": "happyhorse-1.1-i2v",
}
FALLBACK_CHAIN = [
"kling-video",
"doubao-seedance-1-0-pro-fast-251015",
"wan2.6-i2v-flash",
"happyhorse-1.1-i2v",
]
def generate_clip(req: ClipRequest, api_key: str) -> dict:
"""单分镜出片,带自动降级"""
primary = ROUTING_TABLE[req.route_tier]
chain = [primary] + [m for m in FALLBACK_CHAIN if m != primary]
for idx, model in enumerate(chain):
try:
t0 = time.time()
resp = requests.post(
f"{GATEWAY_BASE}/videos/{model}/generate",
headers={"Authorization": f"Bearer {api_key}"},
json={
"prompt": req.prompt,
"first_frame": req.first_frame_url,
"duration": req.duration,
},
timeout=60,
)
resp.raise_for_status()
data = resp.json()
data["model_used"] = model
data["fallback_index"] = idx
data["elapsed"] = round(time.time() - t0, 2)
return data
except Exception as e:
# 降级到下一个模型
print(f"[{req.storyboard_id}] {model} failed: {e}, fallback to next")
continue
raise RuntimeError(f"all models failed for {req.storyboard_id}")
def batch_generate(storyboards: list, api_key: str) -> list:
"""批量生成,按分镜类型自动选路由"""
results = []
for sb in storyboards:
# 角色特写走 premium,空镜远景走 balanced,内部参考走 budget
tier = "premium" if sb["is_character_closeup"] else "balanced"
if sb["is_internal_only"]:
tier = "budget_wan"
req = ClipRequest(
storyboard_id=sb["id"],
prompt=sb["prompt"],
first_frame_url=sb["first_frame_url"],
duration=sb.get("duration", 5),
route_tier=tier,
)
result = generate_clip(req, api_key)
results.append(result)
return results
if __name__ == "__main__":
API_KEY = os.environ.get("VIDEO_API_KEY")
sample = [
{
"id": "sb_001",
"prompt": "少年推剑出鞘,镜头从背后推到侧脸",
"first_frame_url": "https://...",
"is_character_closeup": True,
"is_internal_only": False,
},
{
"id": "sb_002",
"prompt": "远景,山门云海,晨光初照",
"first_frame_url": "https://...",
"is_character_closeup": False,
"is_internal_only": False,
},
{
"id": "sb_003",
"prompt": "内部参考,运镜推拉测试",
"first_frame_url": "https://...",
"is_character_closeup": False,
"is_internal_only": True,
},
]
outputs = batch_generate(sample, API_KEY)
for o in outputs:
print(
f"{o['storyboard_id']} -> {o['model_used']} "
f"({o['elapsed']}s, fallback={o['fallback_index']})"
)
这段代码的核心就三点:
-
路由表 + 降级链:首选模型挂了自动降下一个,屠夫位 HappyHorse 在链尾兜底。
-
按分镜类型选 tier:特写走 premium,空镜走 balanced,内部参考走 budget。
-
失败重试带埋点:每次降级都记录 fallback_index,方便回查 SLA。
接的是炻光 AI 接入管理平台的多模型网关,一套 key 走 5 家模型,不用各家单独签合同配 endpoint。
七、调视频 API 的几个细节
实战中踩过的几个坑,顺手记一下:
Q1:可灵 3.0 的运镜控制怎么传?
kling-video 的 camera_control 参数是独立字段,不是塞在 prompt 里。常用的有「push/pull/pan/track」四种,中文参数名要查各家文档。
Q2:Wan Flash 为什么偶尔出来只有 3 秒?
wan2.6-i2v-flash 默认时长跟提示词复杂度走,如果提示词太短,模型会自动截断成 3 秒。建议显式传 duration 字段。
Q3:Doubao Seedance 的 251015 后缀是版本号吗?
是的,251015 是发布日期。不同后缀代表不同迭代,价格和参数都可能差。生产环境锁一个稳定后缀,不要追最新。
Q4:HappyHorse 1.1 的成功率怎么稳?
加 negative prompt + first_frame 强约束。两个一起加,成功率能从 85% 抬到 92% 左右。
Q5:Qwen3.7-max 跑分镜脚本要不要 fine-tune?
个人经验:不用。先用 few-shot + 结构化输出(JSON 模式)能覆盖 80% 场景,剩下 20% 再考虑微调。屠夫位的代价是「够用就好」,不是「完美」。
Q6:为什么不用更便宜的小模型跑脚本?
试过。Qwen3.7-max 在结构化分镜输出上稳定性最好,小模型容易丢字段。一份脚本缺字段比多花两分钱代价大。
八、参考资料
-
可灵 3.0 官方接入文档(快手技术社区)
-
Wan 2.6 系列参数表(阿里通义万相)
-
Doubao Seedance 版本说明(字节火山引擎)
更多推荐




所有评论(0)