Seedance 图生视频教程:首帧、首尾帧、参考图怎么选,图会被裁多少
Seedance 图生视频先选模式:定开头用首帧,两头都定用首尾帧,只借主体用参考图。图片每边 300–6000 px、小于 30 MB,2.5 首帧比例只能 adaptive。
文章目录

Seedance 2.5 和 2.0 系列都能把一张静态图做成视频,但图片有三种互斥的用法,一次请求只能选一种:想让视频从这张图开始,用首帧(role: "first_frame",1 张);开头和结尾都要和给定的图一致,用首尾帧(first_frame 加 last_frame,2 张);只想借图里的商品、角色或画风,让模型重新构图,用参考图(reference_image,2.5 最多 30 张,2.0 系列最多 9 张)。截至 2026 年 11 月 2 日,火山方舟创建视频生成任务 API 文档(10 月 28 日更新)就是这样划分的。
上传之前先看图片本身:每条边 300–6000 px,宽高比在 0.4–2.5 之间,单张小于 30 MB,否则接口直接拒收。然后改掉两个默认值。Seedance 2.5 做首帧或首尾帧时 ratio 只能是 adaptive,输出比例跟着首帧图走;2.0 系列可以指定 16:9 之类的比例,但比例和图片不一致时会居中裁剪,4:3 的手机照片按 16:9 出片要丢掉 25% 的高度。2.5 的 duration 默认是 -1,由模型在 4–30 秒里自己定长度,想控制费用就写明 "duration": 5。
在即梦、豆包或 Dreamina 里用,只需要上传图片、写一句运动描述再生成;直接调 API 的,火山方舟、BytePlus ModelArk 和 laozhang.ai 这类兼容中转用的是同一套请求体,下文给出三种模式各自的写法。
说明:laozhang.ai 是我们自己的服务,其价格是平台报价,不是独立比较的结论。
首帧、首尾帧、参考图:按你想控制的画面选一种
三种模式的区别在于图片对成片的约束有多硬:首帧把第一帧钉死,首尾帧把开头和结尾都钉死,参考图只约束“画面里有什么、长什么样”,镜头从哪里开始由模型决定。所以先想清楚要的是哪一种结果,再选模式;三种 role 混在一个请求里,接口不接受。
| 模式 | 适合什么 | 图片数量与 role | 支持的模型 | ratio 规则 |
|---|---|---|---|---|
| 首帧 | 让商品图、插画、照片直接动起来,第一帧就是原图 | 1 张,first_frame 或不填 | 2.5、2.0 系列、1.0 pro、1.0 pro fast | 2.5 只能 adaptive;2.0 系列可指定比例 |
| 首尾帧 | 从状态 A 过渡到状态 B,比如商品特写转到成品、一个姿势换到另一个 | 2 张,first_frame 和 last_frame,role 必填,两张可以相同 | 2.5、2.0 系列、1.0 pro | 同上;两张比例不同时以首帧为准,尾帧被裁 |
| 参考图 | 保住角色、商品外观或画风,但镜头和构图交给模型 | 2.5 为 1–30 张,2.0 系列 1–9 张,每张都是 reference_image,还能加参考视频和音频 | 2.5、2.0 系列 | 两代都可指定比例,或 adaptive 由模型按提示词选 |
拿不准时这样判断:成片第一眼必须是你那张图,就用首帧;最后一帧也要落在指定画面上,就用首尾帧;你只关心“还是这个人、这件商品”,不在乎从哪个角度开拍,就用参考图。参考图模式也可以在提示词里写“图片1 作为首帧”,间接做出首尾帧的效果,但火山方舟文档的建议是,首尾帧必须和图片严格一致时,优先用首尾帧模式。
你的图片能不能用:300–6000 px、宽高比 0.4–2.5、小于 30 MB
一张图能否被接口接收,取决于格式、边长、宽高比和文件大小,任何一项不合格,任务在创建时就会失败。下表是截至 2026 年 11 月 2 日火山方舟接口文档写明的规则,最右一列是同一天本机预检时被拦下的例子;即梦、Dreamina 等产品界面可能另有自己的上传限制。
| 检查项 | 接口要求 | 被拦下的例子 |
|---|---|---|
| 格式 | jpeg、png、webp、bmp、tiff、gif;2.0 系列及以后还支持 heic、heif | — |
| 边长 | 每条边 300–6000 px | 256×256 的头像,短边不足 300 px;8000×2000 的全景图,长边超过 6000 px |
| 宽高比 | 宽 ÷ 高 在 0.4–2.5 之间 | 3000×1000 的横幅是 3.00;上面那张全景图是 4.00 |
| 单张大小 | 小于 30 MB | 6000×4000 的 BMP 扫描件 68.7 MB |
| 请求体 | 不超过 64 MB,大文件不要用 Base64 | 同一张 BMP 转成 Base64 后约 91.6 MB |
| 张数 | 首帧 1 张,首尾帧 2 张,参考图 2.5 最多 30 张、2.0 系列最多 9 张 | 2.5 首尾帧只给了 1 张 |
这些例子来自 2026 年 11 月 2 日的一次本机预检:按上表规则写了一个 Python 脚本,在 macOS 26.1、Python 3.12.1、Pillow 12.0.0 下检查了 9 张不含人物的合成测试图、15 种参数组合。脚本只对照公开规则,不调用模型,所以“通过”只说明符合文档,不代表服务端一定受理,也不涉及画质。
还有一条规则跟尺寸无关:Seedance 2.5 和 2.0 系列都不接受直接上传含真人人脸的图片,换模型版本绕不开。火山方舟允许的替代素材是部分模型生成的含人脸产物、预置的虚拟人像和已授权的真人素材;照片里有人脸被拒时,报错原文和处理办法见 Seedance 提示“输入图片可能包含真人”:2.5 人脸限制与正确处理。
画面被裁掉一块:ratio 和图片比例不一致时会居中裁剪
成片少了头顶或两侧,原因几乎都是输出比例和原图比例不一样。火山方舟文档写明,图生视频选择的宽高比与上传图片不一致时,会对图片做居中裁剪,所以图片离目标比例越远,丢得越多,而且丢的是上下两边或左右两边,不是你想裁的那一边。
2026 年 11 月 2 日的预检算出了两个常见情况。一张 4032×3024 的手机照片是 4:3,在 2.0 系列首帧里设 ratio: "16:9",只能保留 75% 的高度,上下合计裁掉 25%;一张 1179×2556 的手机竖屏截图比 9:16 还要细长,设 9:16 会裁掉 18% 的高度。如果主体靠近画面边缘,这一刀就可能切到它。
Seedance 2.5 没有这个选择:首帧和首尾帧任务只接受 adaptive,输出视频的宽高比自动和首帧图保持一致,传 "16:9" 不符合文档规则,预检里这种请求直接被拦下。代价是 2.5 的成片比例完全由你的原图决定,想要标准 16:9 或 9:16,就得在上传前自己把图裁好。
首尾帧还有一层裁剪:两张图比例不同时,以首帧为准,尾帧被自动裁剪去适配。预检用的是 2048×2048 的方形商品图做首帧、1920×1080 的横图做尾帧,尾帧会被裁成方形,只剩中间 1080×1080,宽度少了 44%。最稳的做法是两张图事先裁成同一个比例,再在 2.0 系列里选与之相同的 ratio,或者直接用 adaptive。

想在上传前批量检查,可以把这两节的规则写成几行代码。下面的函数按火山方舟文档的数值判断图片能否被接收,并在指定比例时算出居中裁剪会丢掉多少;2026 年 11 月 3 日用同一批测试图跑过,结果和上面的预检一致。HEIC 需要另装 Pillow 插件才能读取。
import base64, os
from PIL import Image
def check_image(path, ratio=None):
"""按火山方舟图生视频的输入规则检查一张图;ratio 例如 "16:9"。"""
with Image.open(path) as im:
w, h, fmt = im.width, im.height, im.format
mb = os.path.getsize(path) / 1024 / 1024
problems = []
if fmt not in {"JPEG", "PNG", "WEBP", "BMP", "TIFF", "GIF"}:
problems.append(f"格式 {fmt} 不在支持列表里")
if min(w, h) < 300 or max(w, h) > 6000:
problems.append(f"{w}×{h}:每条边要在 300–6000 px 之间")
if not 0.4 <= w / h <= 2.5:
problems.append(f"宽高比 {w / h:.2f},要在 0.4–2.5 之间")
if mb >= 30:
problems.append(f"{mb:.1f} MB,单张要小于 30 MB")
if ratio: # 只对 2.0 系列首帧、首尾帧指定比例时有意义
a, b = map(int, ratio.split(":"))
target, img = a / b, w / h
lost = 1 - (target / img if img > target else img / target)
if lost > 0.01:
side = "宽度" if img > target else "高度"
problems.append(f"按 {ratio} 居中裁剪,约丢掉 {lost:.0%} 的{side}")
return problems
def to_data_url(path):
"""小图转成 Base64 data URL,格式名必须小写。"""
with Image.open(path) as im:
fmt = im.format.lower() # jpeg、png、webp……
with open(path, "rb") as f:
data = base64.b64encode(f.read()).decode()
return f"data:image/{fmt};base64,{data}"
print(check_image("phone-photo.jpg", ratio="16:9"))
# 4032×3024 的照片会得到:['按 16:9 居中裁剪,约丢掉 25% 的高度']在 Dreamina 里做:上传图片、写运动描述、生成
用产品界面不需要设置 role、ratio 这些参数。Dreamina(CapCut 旗下的国际版)的 Dreamina Seedance 图生视频工具页截至 2026 年 11 月 2 日写的是三步:
- 打开图生视频生成器,新建一个项目。
- 上传图片,描述你希望它怎么动、给人什么感觉,可以写镜头运动、动作或风格这样的简单提示。
- 点击生成,预览结果,需要时调整后再下载。
这个页面没有写图片尺寸限制、可选时长和首尾帧选项,页面上能看到 Seedance 2.0 mini 的生成框和 Seedance 2.5 的入口,上传后出来的比例和长度以界面实际显示为准。国内用户的官方入口是即梦、豆包和火山方舟体验中心,各入口的差别和地区限制见 Seedance 2.0 怎么用:官方入口、在线使用与地区可用性(2026),具体按钮和积分以界面当天显示为准。
分辨率和时长:2.5 的 duration 默认 -1,最长 30 秒
resolution 和 duration 决定成片的像素数和帧数,也就直接决定费用。最容易踩的是 2.5 的 duration:不传或传 -1,模型会在 4–30 秒之间自己定长度,账单可能是 5 秒的好几倍。
分辨率按模型有不同的上限。2.5 可选 480p、720p、1080p,默认 720p;2.0 标准版多一个 4k;2.0 fast 和 2.0 mini 只有 480p 和 720p,预检里给 mini 选 1080p 直接被拦。另外要注意格式:2.5 的 1080p 和 2.0 的 4k 都是 10 bit 的 H.265/HEVC 编码,部分播放器不兼容,要在旧设备或旧软件上用的话,先选 720p 或者转一次码。
时长方面,2.5 可设 4–30 秒,2.0 系列 4–15 秒,两者都可以设 -1 让模型自选;2.0 设 20 秒超出范围,预检里同样被拦。火山方舟文档在这个参数旁边特意写了“视频时长与计费相关,请谨慎设置”,接口返回的 duration 是实际总帧数除以 24 后向下取整。
-1 的风险可以算出来。2026 年 11 月 2 日的预检用一张 1536×2048 的 3:4 插画做 2.5 首帧、720p:写明 5 秒时约 109,586 个 token,按 laozhang.ai 标价约 $1.32;用默认的 -1,如果模型选了最长的 30 秒,就是 721 帧、约 652,989 个 token,约 $7.84。模型不一定每次都选满,但上限摆在那里,批量跑的时候这个差距会被放大,所以每个请求都写明 duration。
说明:laozhang.ai 是我们自己的服务,其价格是平台报价,不是独立比较的结论。

一条图生视频多少钱:5 秒 720p 约 $0.43–$1.31
按 laozhang.ai 截至 2026 年 11 月 2 日的标价,16:9、5 秒、720p、不带输入视频的一条视频,最便宜的是 2.0 mini,最贵的是 2.5,相差约三倍。按火山方舟的估算公式,输入图片不计入 token 用量,所以同样的输出,用首帧、首尾帧还是参考图,费用一样,只看模型、输出分辨率和时长。
说明:laozhang.ai 是我们自己的服务,其价格是平台报价,不是独立比较的结论。
| 模型 | laozhang.ai 每百万 token | 5 秒 720p | 5 秒 1080p | 火山方舟官方示例,5 秒 720p |
|---|---|---|---|---|
| Seedance 2.5 | $12.00,1080p 为 $13.20 | 约 $1.31 | 约 $3.23 | ¥7.56 |
| Seedance 2.0 | $7.88,1080p 为 $8.74 | 约 $0.86 | 约 $2.14 | ¥4.97 |
| Seedance 2.0 fast | $6.34 | 约 $0.69 | 不支持 | ¥4.00 |
| Seedance 2.0 mini | $3.94 | 约 $0.43 | 不支持 | ¥2.48 |
表中美元价来自 laozhang.ai 的 Seedance 2.0 与 2.5 视频生成文档,是平台把火山方舟人民币原价乘以 0.1714 得到的美元标价;人民币一列是该文档引用的火山方舟模型价格页官方示例,两列币种不同,不要互相换算。
自己估算用火山方舟给的公式:token 用量 ≈(输入视频时长 + 输出视频时长)× 输出宽 × 输出高 × 帧率 ÷ 1024,再乘每百万 token 的单价。5 秒按实际输出的 121 帧算,720p 16:9 是 1280 × 720 × 121 ÷ 1024 = 108,900 个 token,乘以 2.5 每百万 token 的 $12.00,就是表里的数。比例不同像素数略有变化,4:3 的 720p 是 1112×834,比 16:9 多约 0.6%,费用几乎一样;预检里最便宜的组合是 2.0 mini、480p、1:1、5 秒,约 48,400 个 token、约 $0.19。
在 laozhang.ai 上,每个任务会出现预扣和结算两条消费日志,两条相加才是这一条视频的实际费用。火山方舟、BytePlus 和其他平台折算成每秒是多少,见 Seedance 2.5 API 价格:各渠道每秒价对比,免费额度够不够。
用 API 发图生视频请求:三种模式的请求体
三种模式的请求结构相同,区别只在 content 里放几张图、每张图的 role 是什么,以及 ratio 能不能指定。下面的例子按 laozhang.ai 文档的示例改写,示例图片地址也取自文档;直连火山方舟时换掉地址和密钥即可。
说明:laozhang.ai 是我们自己的服务,其价格是平台报价,不是独立比较的结论。
创建任务的地址有两个。直连火山方舟是 POST https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks,开通 Seedance 2.5 或 2.0 系列需要满足三个条件之一:账户余额大于 200 元、购买 200 元及以上的节省计划,或者持有还有余量的 Seedance 资源包。走 laozhang.ai 是 POST https://api.laozhang.ai/seedance/api/v3/contents/generations/tasks,路径必须带 /seedance 前缀,令牌必须在 SeeDance2 分组,模型 ID 为 doubao-seedance-2-5-260628、doubao-seedance-2-0-260128、doubao-seedance-2-0-fast-260128 和 doubao-seedance-2-0-mini-260615。BytePlus 的开通门槛和各平台模型 ID 的写法,见 Seedance 2.5 API 接入指南:模型 ID、开通门槛、Python 与 Node.js。
图片放在 image_url.url 里,有三种写法。公网可访问的图片直接填 URL,这是最省事的;本地小图可以转成 Base64,格式是 data:image/png;base64,...,png、jpeg 这类格式名必须小写,上一节的 to_data_url 函数就是做这件事的;Base64 会让数据膨胀约三分之一,大图不要用,否则请求体容易超过 64 MB。素材库里的图用 asset://<ASSET_ID>。
首帧:一张图,2.5 的 ratio 写 adaptive
export LAOZHANG_API_KEY="替换为你的密钥"
curl -s -X POST "https://api.laozhang.ai/seedance/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LAOZHANG_API_KEY" \
--data-raw '{
"model": "doubao-seedance-2-5-260628",
"content": [
{
"type": "text",
"text": "镜头缓慢推近,红苹果在木桌上轻轻转动,水珠反光,背景虚化,不出现人物。"
},
{
"type": "image_url",
"image_url": {
"url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic1.jpg"
},
"role": "first_frame"
}
],
"ratio": "adaptive",
"duration": 5,
"resolution": "720p",
"generate_audio": false,
"return_last_frame": true
}'换成 2.0 系列时,把 model 改成对应的 ID,ratio 才可以写 "16:9"、"9:16" 等固定比例,前提是接受上一节说的居中裁剪。
首尾帧:两张图,role 必填
curl -s -X POST "https://api.laozhang.ai/seedance/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LAOZHANG_API_KEY" \
--data-raw '{
"model": "doubao-seedance-2-0-260128",
"content": [
{
"type": "text",
"text": "首帧为图片1,尾帧为图片2。从红苹果产品特写顺滑过渡到苹果果茶成品杯,保持产品外观一致,不出现人物。"
},
{
"type": "image_url",
"image_url": {
"url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic1.jpg"
},
"role": "first_frame"
},
{
"type": "image_url",
"image_url": {
"url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic2.jpg"
},
"role": "last_frame"
}
],
"ratio": "adaptive",
"duration": 5,
"resolution": "720p",
"generate_audio": false
}'参考图:每张都是 reference_image,比例可以指定
curl -s -X POST "https://api.laozhang.ai/seedance/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LAOZHANG_API_KEY" \
--data-raw '{
"model": "doubao-seedance-2-0-260128",
"content": [
{
"type": "text",
"text": "参考图片1的苹果和图片2的果茶杯,生成一段竖屏广告:苹果切块落入杯中,最后停在成品杯特写,明亮清爽,不出现人物。"
},
{
"type": "image_url",
"image_url": {
"url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic1.jpg"
},
"role": "reference_image"
},
{
"type": "image_url",
"image_url": {
"url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic2.jpg"
},
"role": "reference_image"
}
],
"ratio": "9:16",
"duration": 5,
"resolution": "720p"
}'几个默认值值得留意。generate_audio 在 2.x 上默认是 true,会生成双声道的有声视频,只要画面就设成 false;watermark 默认 false,设成 true 会在右下角加“AI 生成”字样;seed 和 camera_fixed 只适用于 Seedance 1.0 pro 和 1.0 pro fast。参数也可以写在提示词末尾,如 --rs 720p --rt 16:9 --dur 5,但那是弱校验,写错了可能被忽略,放在请求体里才会严格校验并报错。
创建成功后响应里只有任务 id,之后用 GET .../contents/generations/tasks/{id} 轮询,status 从 queued、running 变成 succeeded 后,从 content.video_url 下载视频。laozhang.ai 文档说结果链接通常 24 小时内有效,成功后尽快转存。完整的轮询和下载代码见 Seedance 2.5 API 接入指南:模型 ID、开通门槛、Python 与 Node.js;任务一直排队、失败或过期,按 Seedance 2.5 报错、排队和超时排查:先确认任务是否受理 一步步查。
laozhang.ai 返回 “no available channels”:令牌不在 SeeDance2 分组
这个 503 不是图片的问题,而是令牌分组不对:laozhang.ai 的 Seedance 模型只开放在 SeeDance2 分组,default 等其他分组的令牌会被直接拒绝。修法只有一个,在令牌管理里新建一个分组选 SeeDance2 的令牌,再用它发请求。
说明:laozhang.ai 是我们自己的服务,其价格是平台报价,不是独立比较的结论。
2026 年 11 月 2 日,用两个 default 分组的 laozhang.ai 令牌向上面的创建任务地址发了首帧请求,每个令牌对 2.0 和 2.5 各发一次,共 4 次,全部返回 HTTP 503。按次计费的那个令牌收到的是:
Current group default has no available channels for model doubao-seedance-2-0-260128 under billing mode [pay-per-request]2.5 的报错只是模型 ID 换成了 doubao-seedance-2-5-260628。另一个是按用量计费的令牌,它的两次请求都返回同样的报错,只是括号里写的是 [pay-as-you-go, pay-per-request]。这 4 次请求里放的都是同一张 100×100 px 的图,按规则本该因为边长不足被拒,却没有出现任何图片相关的报错,说明分组检查发生在检查图片之前;请求没有到达模型,也没有扣费。所以看到这条报错时,先别去改图片或参数,换对令牌再说。
想让下一段接着上一段拍:用 return_last_frame 取尾帧
把 return_last_frame 设为 true,任务成功后会额外返回这段视频的最后一帧,再把它当作下一个任务的首帧,就能一段接一段地拼出连续镜头。火山方舟文档把这个用法写在参数说明里,返回的尾帧是 JPEG,宽高和视频一致,没有水印。
具体做法是:第一段的请求体加上 "return_last_frame": true(上面首帧示例里已经加了),任务成功后从查询结果的 content.last_frame_url 拿到尾帧地址,把它填进第二段请求的 first_frame,提示词写下一段要发生的动作。用 2.5 做首帧时比例自动跟随这张尾帧,各段画幅天然一致;用 2.0 系列时,每段都写同一个 ratio。尾帧链接和视频链接一样是临时地址,要在失效前用掉或转存。如果总长不超过 30 秒,也可以直接让 2.5 一次生成,少一次衔接。
Seedance 图生视频的其他问题
运动描述(提示词)该怎么写?
Seedance 的所有模型都支持中文提示词,火山方舟建议中文不超过 500 字。图生视频的提示词重点写镜头怎么动、主体做什么动作,参考图模式下用“图片1”“图片2”指明每张图的用途;镜头脚本和参考素材编号的写法见 Seedance 2 提示词指南:分镜、参考素材与 2.5 编辑示例。
Seedance 图生视频能免费用吗?
产品端可以试:截至 2026 年 11 月 2 日,Dreamina 的 Seedance 图生视频页面说 Seedance 2.0 提供免费试用积分,可以不花钱把图片做成视频,但没有写一条视频扣多少积分。API 按 token 计费,各渠道的价格和有没有免费额度,见 Seedance 2.5 API 价格:各渠道每秒价对比,免费额度够不够。





