使用 Seedance 原始产物继续生成含人像视频
Seedance 2.5 和 Seedance 2.0 系列不接受未经授权、直接上传的真人人脸参考图或参考视频。对于已经通过素材审核生成的视频,可以在同一火山账号和信任有效期内继续使用。通过 Modelink 调用时,应在请求中显式传入源任务 ID,让平台将续创任务绑定到生成源视频的渠道。
本教程演示以下流程:
已有的已审核人像素材
→ asset://<asset-id> 调用 Seedance 2.0
→ 保存源任务 ID(qvideo-* 或 cgt-*)
→ reference_video + reference_video_task_id 交给 Seedance 2.5
→ extend 模式生成 30 秒视频警告
使用真实人物照片前,必须取得必要授权,并满足适用的肖像权、隐私和内容合规要求。普通素人照片可以按本文使用 AIGC 虚拟人像素材流程;明星、公众人物或需要本人认证的形象应改用火山协议 · 真人人像素材管理。
视频产物的信任条件
源视频任务可能返回 qvideo-* 或 cgt-* 格式的任务 ID。两种任务 ID 都可以通过
reference_video_task_id 显式指定源任务,平台据此锁定生成源视频的同一火山账号;视频 URL
本身不会再被解析为任务 ID。
火山对含人脸模型产物的信任有以下限制:
- 输入必须是同一火山账号下受支持模型生成的原始产物;
- 产物生成时间必须在近 30 天内;
- 不支持跨平台、跨账号使用;
- 下载后重新编码、剪辑、压缩或转发可能使信任失效;
- 信任只用于放行符合条件的输入,输出仍需经过安全审核。
因此,不能把普通上传的视频伪装成可信产物,也不能跨火山账号使用。短期续写可以直接使用源任务返回的 URL;需要长期保存时,可以将文件逐字节转存到可被供应商访问的对象存储(例如 TOS 或 Modelink 默认 Kodo),但不得下载后转码、剪辑、压缩或重新封装。
使用 reference_video_task_id 绑定源任务
reference_video_task_id 是 Seedance 请求参数中的可选字符串字段(在部分 SDK 中位于
seedance_params 对象内),用于明确指定
reference_video 对应的已完成 Seedance 源任务。字段值必须是 qvideo-* 或 cgt-* 任务
ID。平台会校验源任务属于当前租户、供应商为
Seedance、任务已成功完成,并将续创请求路由到生成源视频的同一火山账号。
仅有视频 URL 时,平台不会根据 URL 路径中的 qvideo-* 片段推断源任务。开启
auto_create_assets=true 后,HTTP 参考视频由临时素材流程处理,reference_video_task_id
不会参与渠道绑定。
下面示例使用 qvideo-* ID;如果源任务返回的是 cgt-* ID,将 SOURCE_TASK_ID 替换为
对应的值即可。
EXTEND_CREATE_RESPONSE="$(
curl -sS "$TASKS_URL" \
-X POST \
-H "Authorization: Bearer $MODELINK_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg task_id "$SOURCE_TASK_ID" --arg video_url "$SOURCE_VIDEO_URL" '{
model: "bytedance/doubao-seedance-2-5-260628",
content: [
{type: "text", text: "向后延长视频1:保持同一人物、服装和场景连续性,无字幕。"},
{type: "video_url", video_url: {url: $video_url}, role: "reference_video"}
],
reference_video_task_id: $task_id,
omni_reference_task_type: "extend",
ratio: "adaptive",
duration: 30,
generate_audio: false,
watermark: false
}')"
)"准备环境
export MODELINK_API_KEY="替换为你的 Modelink API Key"
export MODELINK_BASE_URL="https://api.qnaigc.com"
export TASKS_URL="$MODELINK_BASE_URL/v3/contents/generations/tasks"海外接入点使用:
export MODELINK_BASE_URL="https://api.modelink.ai"
export TASKS_URL="$MODELINK_BASE_URL/v3/contents/generations/tasks"命令示例使用 jq 读取 JSON。本文假设你已经拥有可用的 asset://<asset-id> 人像素材;素材创建和审核流程不属于本教程范围。
完整操作流程
使用 Seedance 2.0 生成 15 秒源视频
使用已经审核通过的
asset://素材引用。将素材 ID 设置为环境变量后,保存响应中的源任务 ID 和视频 URL:export ASSET_ID="asset-20260818120000-example" SOURCE_CREATE_RESPONSE="$( curl -sS "$TASKS_URL" \ -X POST \ -H "Authorization: Bearer $MODELINK_API_KEY" \ -H "Content-Type: application/json" \ -d "$(jq -n --arg asset_id "$ASSET_ID" '{ model: "bytedance/doubao-seedance-2-0-260128", content: [ { type: "text", text: "图片1中的人物在明亮的现代画廊中自然行走,镜头平稳跟随,保持人物外貌和真实摄影风格,无字幕。" }, { type: "image_url", image_url: {url: ("asset://" + $asset_id)}, role: "reference_image" } ], generate_audio: false, resolution: "720p", ratio: "adaptive", duration: 15, watermark: false }')" )" export SOURCE_TASK_ID="$(jq -r '.id' <<<"$SOURCE_CREATE_RESPONSE")" echo "$SOURCE_TASK_ID"创建成功后保存返回的任务 ID(可能是
qvideo-*或cgt-*)以及content.video_url。查询 2.0 任务并保存视频 URL
查询任务时只需使用 Bearer 鉴权:
curl -sS "$TASKS_URL/$SOURCE_TASK_ID" \ -H "Authorization: Bearer $MODELINK_API_KEY"持续轮询,直到
status进入终态:status处理方式 queued等待后继续查询 creating_assets创建素材中,继续查询 running正在生成,继续查询 succeeded保存 content.video_url,进入下一步failed查看 error.code和error.message成功后直接读取原始 URL:
SOURCE_RESULT="$( curl -sS "$TASKS_URL/$SOURCE_TASK_ID" \ -H "Authorization: Bearer $MODELINK_API_KEY" )" export SOURCE_VIDEO_URL="$(jq -r '.content.video_url' <<<"$SOURCE_RESULT")"使用响应中的视频 URL。无论 URL 位于哪种对象存储,都不要转码、剪辑、压缩或重新封装。
将 2.0 视频交给 Seedance 2.5 延长至 30 秒
把
$SOURCE_VIDEO_URL直接放入reference_video。视频延长任务需要:omni_reference_task_type设置为extend;ratio设置为adaptive;- 提示词明确包含“向前延长”“向后延长”“延续”或“续写”等意图;
duration设置为希望得到的完整输出时长,本例为 30 秒。
EXTEND_CREATE_RESPONSE="$( curl -sS "$TASKS_URL" \ -X POST \ -H "Authorization: Bearer $MODELINK_API_KEY" \ -H "Content-Type: application/json" \ -d "$(jq -n --arg source_task_id "$SOURCE_TASK_ID" --arg video_url "$SOURCE_VIDEO_URL" '{ model: "bytedance/doubao-seedance-2-5-260628", content: [ { type: "text", text: "向后延长视频1:保持同一人物、外貌、服装和真实摄影风格,人物继续走入画廊并在抽象画前回头微笑,镜头平稳跟随,无字幕。" }, { type: "video_url", video_url: {url: $video_url}, role: "reference_video" } ], omni_reference_task_type: "extend", reference_video_task_id: $source_task_id, generate_audio: false, resolution: "720p", ratio: "adaptive", duration: 30, watermark: false }')" )" export EXTEND_TASK_ID="$(jq -r '.id' <<<"$EXTEND_CREATE_RESPONSE")" echo "$EXTEND_TASK_ID"查询 2.5 任务结果
与 2.0 相同,查询请求只需要 Bearer 鉴权:
curl -sS "$TASKS_URL/$EXTEND_TASK_ID" \ -H "Authorization: Bearer $MODELINK_API_KEY"任务成功后,响应中的
duration应为30,content.video_url为 Seedance 2.5 的视频地址。
正确与错误链路对比
| 参考视频来源 | 含人像输入能否受信 | 说明 |
|---|---|---|
| 同一火山账号下 Seedance 2.0 返回的原始 URL | 可以 | 保留供应商原始产物身份,满足近 30 天且未经加工等条件 |
| 同渠道的 Modelink 默认 Kodo 转存 URL | 可以 | 本次调研已验证;续创请求应显式传入源任务 ID |
| TOS 或 Kodo 中逐字节一致的转存文件 | 可以 | 仍需同一火山账号、有效期和供应商可访问 URL |
| 下载、剪辑、转码或重新上传后的文件 | 不保证 | 文件处理可能破坏原始产物信任 |
| 其他平台或其他火山账号生成的视频 | 不可以 | 不满足同一火山账号条件 |
平台转存 URL 会保留原始视频字节,不会因转存本身破坏 Seedance 产物信任。传入有效的
reference_video_task_id 后,平台会根据源任务自动路由到生成该视频的同一火山账号。
如果未传入有效的源任务 ID,平台无法确定源任务和火山账号,含人像参考可能触发以下异步错误:
InputVideoSensitiveContentDetected.PrivacyInformation
The request failed because the input video may contain real person.该错误不是 reference_video 字段格式错误,而是输入未命中火山的含人像原始产物信任。
故障排查
原始 URL 仍触发真人输入审核
依次确认:
- 传给 2.5 的 URL 可被供应商访问,且未经过下载、转码、剪辑、压缩或重新封装;
reference_video_task_id与源视频任务 ID 完全一致(qvideo-*或cgt-*);- 源任务属于当前租户、供应商为 Seedance 且状态为成功;
reference_video_task_id使平台将续创任务路由到生成源视频的同一火山账号;- 原始产物生成时间未超过 30 天,签名 URL 尚未过期。
2.5 提示任务类型或参数不匹配
视频延长必须使用 omni_reference_task_type=extend 和 ratio=adaptive,并在提示词中明确表达延长或续写意图。duration 支持 [4, 30] 或 -1;本教程设置为 30。