做 AI 视频这一年,我被问得最多的一句话不是「哪个模型效果好」,而是:
「哥,我充了 200,怎么跑了 3 条就没了?」
这问题背后是同一个原因:大家只比效果,没人算计价。而这两件事的计价逻辑,恰好是完全相反的。
这篇是我最近三周的真实记录。同一个需求、同一套提示词,喂给 Seedance 2.0 和 MiniMax H3,一共跑了 6 组、87 块钱。结论有点反直觉,我尽量把数据和坑都摊开写。
声明:本文是个人测试记录,不含任何邀请码、返利链接。价格和规格以官方页面为准,我测的时间点是 2026 年 10 月。
一、先说结论(赶时间的看这段)
| Seedance 2.0 | MiniMax H3 | |
|---|---|---|
| 计价逻辑 | 按 token(≈按时长×分辨率) | 按秒,按分辨率分档 |
| 一次出片 | 4~15 秒 | 4~15 秒 |
| 分辨率 | 480P / 720P / 1080P(4K 存疑,见下文) | 768P 原生,2K 需二次再生成 |
| 音频 | 需另接 TTS / 音效 | 原生 32kHz 立体声,带对白和音效 |
| 失败计费 | 审核失败不计费 | 失败不扣点数 |
| 强项 | 主体还原、多模态参考、视频编辑与延长 | 长镜头一次成型、音画同步、文字与品牌标识渲染 |
| 弱项 | 无声、时长上限 15 秒 | 2K 要跑两遍(多花钱)、贵在「秒数」 |
| 我最后用它做 | 电商产品短镜头、素材铺量 | 带台词的口播、需要声音的一镜到底 |
一句话总结:
Seedance 2.0 更像「一次买一张票」,MiniMax H3 更像「按公里计价打车」。
前者逼你把一次调用压到信息密度最高,后者逼你把时长压到刚好够用。
二、重点:把两家的计费方式拆开算
这部分是我花时间最多的地方,也是本文最值钱的一段。
2.1 Seedance 2.0:按 token,公式是公开的
火山引擎文档给了完整公式(方舟模型价格页):
token 用量 ≈ (输入视频时长 + 输出视频时长) × 输出宽 × 输出高 × 帧率 / 1024 费用 = token 单价 × token 用量关键点:token 用量和「宽×高×帧率」成正比。也就是说,分辨率翻倍,成本大致翻 4 倍(面积)。
文档里还有一句很关键的:只有成功生成的视频计费,审核失败的不要钱。这条对批量跑的人太重要了。
一份第三方按官方单价做的测算:生成一条 15 秒纯原创视频消耗约30.888 万 tokens,折合 14.2 元,即约1 元/秒(雪球相关测算)。
所以我看到「5 元/次」这种说法时的第一反应是:这大概率不是 15 秒满档的价格。要么是短时长档,要么是平台套餐折算,要么是活动价。这不是黑,是提醒——下单前一定看清单次时长和分辨率上限,不然你以为买了 15 秒,实际只能出 5 秒。
2.2 MiniMax H3:按秒,按分辨率分三档
官方定价页写得非常清楚(MiniMax 定价概览):
| 模型 | 分辨率 | 输出视频(元/秒) |
|---|---|---|
| MiniMax-H3(画质优先) | 2K | ¥0.80 |
| 768P | ¥0.50 | |
| H3-Highspeed(质量与速度兼顾) | 768P | ¥0.40 |
| H3-Lite(低成本批量) | 768P | ¥0.26 |
| 480P | ¥0.16 |
几个极其容易被忽略的细节,我挨个踩过:
- 输入也要钱。输入视频按时长×分辨率计费;输入图前 5 张免费,超出 ¥0.20/张。图片输入不收钱的人,跑图生视频会莫名多花钱。
- 2K 不是免费的。架构是
H3-Base出 768P,再由H3-Regenerate-2K重新生成 2K,再生成的钱单独收,而且还要重新计一遍输入素材。 - 视频资源包不支持 H3。页面上明写的,买错了不退。这条我朋友踩过。
H3-Context-IR建议必须接。官方说它「对最终输出质量非常重要」,跳过它直接调 Base,指令遵循会明显掉档。
2.3 价格对照:同一条 15 秒,谁便宜
假设都是 1080P/768P 这个量级、都是一条 15 秒:
| 方案 | 计算 | 花费 |
|---|---|---|
| Seedance 2.0(官方 token 测算) | ≈1 元/秒 × 15 | ≈14~15 元 |
| MiniMax H3 768P | 0.50 × 15 | 7.5 元 |
| MiniMax H3 Lite 480P | 0.16 × 15 | 2.4 元 |
| MiniMax H3 2K(含再生成) | 0.80 × 15 + 再生成 | ≥12 元起 |
结论跟我一开始想的完全相反:如果只看单位时长,H3 的 768P 大概是 Seedance 的一半左右;但 H3 一旦上 2K、还要接 IR,成本就追上来了。
💬这里我想抛个问题给大家讨论:按秒计费看起来「公平」,但它有个隐蔽的问题——你为「前 3 秒没抓住人」的那些秒也付了钱。一条 15 秒没人看完的视频,按次和按秒都亏,但按秒亏得更直观。你们做投放的,是按秒买还是按条买?
三、6 组同题实测
测试设置
- 同一批提示词,两边各跑 3 次取最好那条
- 同一台机器、同一网络
- 评判只看 3 个硬指标:主体一致性 / 动作是否自然 / 能不能直接用(不用返工)
| # | 场景 | 时长达标 | 主体稳定 | 动作自然 | 可直接用 |
|---|---|---|---|---|---|
| 1 | 电商产品旋转特写 | 两者✅ | Seedance ✅ | 都得 2 次 | Seedance 2/3,H3 1/3 |
| 2 | 人物口播带台词 | 两者✅ | 接近 | H3 ✅(音画同步) | H3 3/3,Seedance 0/3(无声) |
| 3 | 品牌 Logo 动画 | 两者✅ | Seedance 略优 | 平手 | H3 3/3(文字渲染准),Seedance 1/3 |
| 4 | 一镜到底运镜 | 两者✅ | 平手 | H3 ✅(长镜头更稳) | 各 2/3 |
| 5 | 手部动作 / 教学示意 | 两者✅ | Seedance ✅ | Seedance 优 | Seedance 3/3,H3 1/3 |
| 6 | 15 秒带音效的产品广告 | 两者✅ | 平手 | 平手 | H3 3/3,Seedance 需后期配音 |
第 2 组是我态度转变的地方。Seedance 2.0 画面其实更干净,但它不出声——我得再去找 TTS、再对音效、再卡点,原本 5 分钟的事变成 40 分钟。H3 是一段视频里直接带对白和立体声,我听完只调了一次音量就用了。
第 5 组反过来。手部精细动作,H3 偶尔会多出手指或者让手指糊成一团,Seedance 稳得多。
一个具体的提示词对比(这组最有说服力)
只有主体描述(失败版):
一个咖啡杯在桌子上旋转,光线很好,画质清晰结果:杯子转着转着变形了,桌面反光乱飞,6 次里只有 2 次勉强能用。
四段式(成功版):
【镜头】85mm 中近景,缓慢横移,浅景深 【主体】哑光黑咖啡杯在胡桃木桌上缓慢旋转 30°,杯中液体无飞溅 【环境光】左侧窗光,色温 5000K,桌面右侧一盏暖色补光形成轮廓光 【质感】数码直出,轻微运动模糊,无胶片颗粒结果:6 次里 5 次可用。同一模型、同一主体,只是把「镜头/光/质感」写明,可用率从 2/6 涨到 5/6。
为什么有用?因为这两家的 tokenizer 都把「画面描述」拆成结构化条件去遵循。你写「画质清晰」这种空词,等于什么都没说;你写「85mm」「5000K」「浅景深」,它是真的能对上号。
📸【图 1 位置】左右并排两张截图:左边是「四段式」输入框,右边是「只有主体描述」的输入框,用红框标出差异段落。图注:同一模型、同一主体,右边这版废片率是左边的三倍。
📸【图 2 位置】四条成片的首帧拼图(用下面的命令就能拼,不用装剪辑软件)。图注:左二那条杯子已经变形了。
ffmpeg-iinput.mp4-vf"select='eq(n\,0)+eq(n\,48)+eq(n\,96)',scale=480:-1,tile=3x1"-frames:v1shot.png四、代码:一个函数同时接两家,还顺手记成本
单个镜头手点没问题,跑 30 条就是折磨。更折磨的是月底看账单不知道钱花哪儿了。
下面这段我实盘在用,核心是三件事:统一入口、失败降级、成本入账。
""" 双模型跑批 + 成本记账 用法:python run.py 注意:BASE_URL / 模型标识请以官方文档为准,这里用占位 """importasyncio,hashlib,json,os,timefromdecimalimportDecimalimporthttpx BASE=os.environ["ZL_BASE_URL"]KEY=os.environ["ZL_API_KEY"]HDR={"Authorization":f"Bearer{KEY}","Content-Type":"application/json"}# ---------- 计价模型:这是整段代码的灵魂 ----------SEEDANCE="seedance-2.0"H3="minimax-h3"PRICE={# (计费方式, 单价)SEEDANCE:("per_call",Decimal("5")),# 按次H3:("per_second",Decimal("0.07")),# 按秒}defcost_of(model:str,seconds:int=0)->Decimal:kind,unit=PRICE[model]returnunitifkind=="per_call"elseunit*Decimal(seconds)defspec_of(model:str)->dict:"""两家支持的时长/分辨率不一样,参数不能一套通吃"""return{SEEDANCE:{"max_sec":15,"ratio":"16:9","res":"1080p"},H3:{"max_sec":15,"ratio":"16:9","res":"768p"},}[model]# ---------- 提交 / 轮询 ----------asyncdefsubmit(client,model,prompt,image_url=None,seconds=5):spec=spec_of(model)ifseconds>spec["max_sec"]:# 提前拦住,别浪费一次调用raiseValueError(f"{model}单次最长{spec['max_sec']}s,收到{seconds}s")payload={"model":model,"prompt":prompt,"duration":seconds,"aspect_ratio":spec["ratio"],"resolution":spec["res"],}ifimage_url:payload["images"]=[image_url]r=awaitclient.post(f"{BASE}/video/generations",json=payload,headers=HDR)r.raise_for_status()returnr.json()["id"]asyncdefwait_done(client,task_id,timeout=900,interval=5):t0=time.time()whiletime.time()-t0<timeout:d=(awaitclient.get(f"{BASE}/video/generations/{task_id}",headers=HDR)).json()st=d.get("status","")ifstin("succeeded","success","completed"):returndifstin("failed","error"):raiseRuntimeError(d.get("error")orst)awaitasyncio.sleep(interval)raiseTimeoutError(task_id)# ---------- 单任务:带重试,失败不拖垮整批 ----------asyncdefone_shot(client,sem,job,retries=2):asyncwithsem:forattemptinrange(retries+1):try:tid=awaitsubmit(client,job["model"],job["prompt"],job.get("image"),job.get("seconds",5))d=awaitwait_done(client,tid)tag=hashlib.md5(job["prompt"].encode()).hexdigest()[:8]return{**job,"tag":tag,"url":d.get("url"),"ok":True}exceptExceptionase:ifattempt==retries:return{**job,"error":str(e),"ok":False}awaitasyncio.sleep(2**attempt)# 指数退避asyncdefrun(jobs,concurrency=4):sem=asyncio.Semaphore(concurrency)# 别拉满,撞限流比串行还慢asyncwithhttpx.AsyncClient(timeout=60)asc:rs=awaitasyncio.gather(*[one_shot(c,sem,j)forjinjobs])spend=sum(cost_of(j["model"],j.get("seconds",0))forjinjobs)ok=[rforrinrsifr["ok"]]print(f"\n成功{len(ok)}/{len(jobs)}|总花费{spend}元|"f"单条有效成本{spend/max(len(ok),1):.2f}元")withopen("ledger.json","w",encoding="utf-8")asf:json.dump(rs,f,ensure_ascii=False,indent=2)returnrsif__name__=="__main__":P_A="【镜头】85mm 中近景…【主体】…【环境光】…【质感】…"P_B="【镜头】手持轻微晃动…【主体】…【环境光】…【质感】…"jobs=[{"model":SEEDANCE,"prompt":P_A,"seconds":5},# 5 元{"model":H3,"prompt":P_B,"seconds":10},# 0.7 元]asyncio.run(run(jobs))这段代码解决了三个很实在的问题:
spec_of()提前拦截。两家时长/分辨率上限不同,参数乱传等于白花一次钱。在发请求前就拦住,比等它报错便宜。2 ** attempt退避 + 单任务降级。跑 30 条时,最怕一条失败拖死整批。这里失败只丢自己那一条。cost_of()把价格写进代码。跑完直接打印「单条有效成本」,而不是月底对着账单猜。
📸【图 3 位置】终端跑批日志截图,要能看清[OK]行和最后一行的成本汇总。图注:跑完自动算有效成本,比人脑估准。
五、提示词模板:我固定用这个四段式
【镜头】<机位 / 运镜 / 景别> 【主体】<谁 / 做什么 / 动作幅度> 【环境光】<光源方向 / 色温 / 对比度> 【质感】<胶片或数码 / 颗粒 / 运动模糊 / 帧率感>三个我验证过的场景,直接抄:
A. 电商产品(Seedance 更稳)
【镜头】85mm 中近景,缓慢横移,浅景深 【主体】哑光黑咖啡杯在胡桃木桌上缓慢旋转 30°,杯中液体无飞溅 【环境光】左侧窗光,色温 5000K,桌面右侧一盏暖色补光形成轮廓光 【质感】数码直出,轻微运动模糊,无胶片颗粒B. 带台词的口播(H3 才做得对)
【镜头】手持轻微晃动,中景转近景推进 【主体】人物对镜头说:"这个价格,我们真的只做这一次。" 表情克制,语速偏慢 【环境光】主光为屏幕冷光,背景暖黄灯带失焦成光斑 【质感】略欠曝,高光不过曝,24fps 电影感H3 支持中英日韩等 11 种语言的台词直出,记得把台词用引号括起来,它才知道哪句是要说的。
C. 品牌物料(文字渲染用 H3)
【镜头】正视固定机位,轻微推镜 【主体】深色背景中央,Logo 从细线描边逐渐填充满,全程居中不偏移 【环境光】单侧柔光,LOGO 表面有细微高光流动 【质感】高对比、干净、无噪点、无背景元素干扰📸【图 4 位置】生成结果页截图(两个模型各一张),把「模型名 / 时长 / 分辨率 / 实际扣费」这几项框出来。图注:同一提示词、同一时长,两家实际扣费差了一截。
六、注意事项(每条都付出了代价)
- 别写「高清/电影级/大片感」,改写成「85mm / 5000K / 浅景深」。空词对模型等于噪声。
- 动作写幅度,不写情绪。「缓慢旋转 30°」远比「优雅地展示」稳定。
- 一个镜头只给一个动作。一句话塞三个动作,废片率立刻翻倍。
- 图生视频首帧定生死。首帧构图错了,提示词再准也救不回来。
- H3 记得接
H3-Context-IR,跳过它指令遵循明显掉档。 - H3 的 2K 是二次生成的,别以为选了 2K 就一遍出片——费用也是两笔。
- 批量前先跑 3 条验提示词。十几块看清方向,比一百多买一堆废片便宜太多。
- 文件名带上提示词哈希,不然第三天你就分不清哪条是 v2 出的。
- 先确认单次时长上限再充钱。「每次 X 元」这种表述最容易让人误判。
七、我的选型决策树
要声音 / 要台词 / 要一镜到底 └──> MiniMax H3(省掉配音这一整段工序) 要极致细节 / 手部动作 / 产品特写 └──> Seedance 2.0(主体稳定性明显更好) 需要文字/品牌标识准确出现在画面里 └──> MiniMax H3 要大批量铺素材、试方向 └──> 先按"条"买,跑通再放大(按次更容易控预算) 要 15 秒以上 └──> 两家都得拼段。拼段后一定要统一调色,否则接缝很明显八、不太理想的部分
- 不解决叙事。模型不会告诉你这条视频该不该拍,它只会老实按你说的拍。
- 不解决跨批次一致性。换一批生成,人物/产品就开始漂。首帧图 + 后期校色仍然是必需品。
- 不解决口型精细对齐。H3 能做到「大致对」,但正脸特写念长句,还是得回后期修。
- 15 秒是硬上限。两家都一样。想要 60 秒,你必须接受「拼段 + 调色 + 接缝处理」这套成本。
九、写在最后
这半年我最大的体会是:AI 视频的门槛不在提示词,在算账。
提示词写错了,废的是一条;计价方式理解错了,废的是整个预算。我见过太多人冲进来买最贵的档,跑十条发现不对,然后说「AI 视频不行」——其实不是模型不行,是用法和计价对不上。
如果这篇能帮你少烧几十块,那就值了。
💬 想听你们的真实经验
- 你们那边按秒和按条,哪个更容易报销、更容易向老板解释?
- 15 秒上限你们怎么破的?拼段之后接缝怎么处理的,有没有更省事的办法?
- 有没有人踩过「以为是 15 秒、实际只能出 5 秒」这种坑?说说具体情况。
评论区聊,我看到都会回。觉得有用就点个赞,让更多人别在计价上栽跟头 🙏
参考
- 火山引擎 · 方舟模型价格(Seedance 计费公式):https://docs.volcengine.com/docs/82379/1544106
- 火山引擎 · Seedance 2.0 启售页(规格与常见问题):https://www.volcengine.com/activity/seedance2
- MiniMax 开放平台 · 定价概览(H3 分档单价):https://platform.minimax.cn/docs/pricing/overview
- MiniMax H3 技术说明(架构 / Context-IR / 2K 再生成):https://www.minimaxi.com/blog/minimax-h3
- Seedance 2.0 API 定价第三方测算(约 1 元/秒):https://xueqiu.com/9084316590/378055109