使用 Seedance 原始产物继续生成含人像视频
Seedance 2.5 和 Seedance 2.0 系列不接受未经授权、直接上传的真人人脸参考图或参考视频。对于已经通过素材审核生成的视频,可以保留火山原始产物 URL,再把它直接作为下一次 Seedance 任务的参考视频,实现含人像视频的跨模型续写。
本教程演示以下流程:
公网人像图片
→ 火山素材接口创建 AIGC 素材并等待 Active
→ asset://<asset-id> 调用 Seedance 2.0
→ origin 模式取得 15 秒火山原始视频 URL
→ 原始 URL 直接作为 Seedance 2.5 reference_video
→ extend 模式生成 30 秒视频警告
使用真实人物照片前,必须取得必要授权,并满足适用的肖像权、隐私和内容合规要求。普通素人照片可以按本文使用 AIGC 虚拟人像素材流程;明星、公众人物或需要本人认证的形象应改用火山协议 · 真人人像素材管理。
为什么必须使用 origin
创建视频任务时,请设置:
X-Qiniu-Video-API-Format: origin该请求头会让创建接口返回 cgt-* 格式的任务 ID,并在任务成功后返回火山原始生成物 URL。省略该请求头时,接口返回 qvideo-* 任务 ID 和 Modelink 平台转存 URL。
火山对含人脸模型产物的信任有以下限制:
- 输入必须是同一火山账号下受支持模型生成的原始产物;
- 产物生成时间必须在近 30 天内;
- 不支持跨平台、跨账号使用;
- 下载后重新编码、剪辑、压缩或转发可能使信任失效;
- 信任只用于放行符合条件的输入,输出仍需经过安全审核。
因此,不能先下载 2.0 视频再上传到其他对象存储,也不能把平台转存 URL 当作火山原始产物。应把 2.0 成功响应中的原始 URL 原样传给 2.5。
信息
为确保两次任务都只使用支持火山原始产物的渠道,本教程在 Seedance 2.0 和
Seedance 2.5 的创建请求中都设置 origin。查询任务时无需重复传入该请求头。
准备环境
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。火山素材 Action 还需要 V4 签名;完整签名规则和素材请求示例见火山协议 · 虚拟人像素材管理。
完整操作流程
创建并审核人像素材
先调用
GET /v1/asset-projects,选择supported_asset_types包含aigc的ProjectName。然后通过火山兼容 Action 依次调用:CreateAssetGroup创建GroupType=AIGC的素材组;CreateAsset上传公网可访问的人像图片;GetAsset轮询处理状态。
只有素材达到
Status=Active后才可以继续。保存CreateAsset返回的Result.Id:export ASSET_ID="asset-20260818120000-example"后续视频请求使用
asset://<asset-id>格式,例如asset://asset-20260818120000-example。不要使用GetAsset返回的临时下载 URL 替代素材 ID。使用 Seedance 2.0 生成 15 秒原始视频
创建任务时同时传入
asset://素材引用和origin请求头:SOURCE_CREATE_RESPONSE="$( curl -sS "$TASKS_URL" \ -X POST \ -H "Authorization: Bearer $MODELINK_API_KEY" \ -H "Content-Type: application/json" \ -H "X-Qiniu-Video-API-Format: origin" \ -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"创建成功后应得到
cgt-*格式的任务 ID。如果仍返回qvideo-*,请检查请求头名称和值是否正确。查询 2.0 任务并保存原始 URL
查询任务时无需重复传入
X-Qiniu-Video-API-Format:curl -sS "$TASKS_URL/$SOURCE_TASK_ID" \ -H "Authorization: Bearer $MODELINK_API_KEY"持续轮询,直到
status进入终态:status处理方式 queued等待后继续查询 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 通常是火山 TOS 的限时签名地址。请立即用于下一步,不要下载、转码或转存。
将 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" \ -H "X-Qiniu-Video-API-Format: origin" \ -d "$(jq -n --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", 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 天且未经加工等条件 |
省略 origin 后得到的 Modelink 平台转存 URL | 不可以 | 已不是火山原始产物,含真人时可能触发输入审核 |
| 下载、剪辑、转码或重新上传后的文件 | 不保证 | 文件处理可能破坏原始产物信任 |
| 其他平台或其他火山账号生成的视频 | 不可以 | 不满足同一火山账号条件 |
平台转存 URL 作为参考视频时,常见异步失败为:
InputVideoSensitiveContentDetected.PrivacyInformation
The request failed because the input video may contain real person.该错误不是 reference_video 字段格式错误,而是输入未命中火山的含人像原始产物信任。
故障排查
创建请求返回 qvideo-* 而不是 cgt-*
检查是否在创建任务时准确传入:
X-Qiniu-Video-API-Format: origin唯一支持的非空值是 origin。其他值会返回 HTTP 400。
任务失败并提示 no_original_vendor_output_url_channel
当前模型没有可返回供应商原始 URL 的可用渠道。请联系 Modelink 支持确认 Seedance 原始产物渠道配置;不要改用平台转存 URL 绕过,因为后续含人像参考仍可能被拦截。
原始 URL 仍触发真人输入审核
依次确认:
- 素材已达到
Status=Active; - 2.0 请求使用
asset://引用,并在创建时启用origin; - 传给 2.5 的 URL 就是 2.0 成功响应中的原始 URL,未经过下载或转存;
- 2.5 创建请求也启用了
origin; - 两次调用使用同一个 Modelink API Key,且后端渠道映射到同一火山账号;
- 原始产物生成时间未超过 30 天,签名 URL 尚未过期。
2.5 提示任务类型或参数不匹配
视频延长必须使用 omni_reference_task_type=extend 和 ratio=adaptive,并在提示词中明确表达延长或续写意图。duration 支持 [4, 30] 或 -1;本教程设置为 30。