使用 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> 人像素材;素材创建和审核流程不属于本教程范围。

完整操作流程

  1. 使用 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. 查询 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 位于哪种对象存储,都不要转码、剪辑、压缩或重新封装。

  3. 将 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"
  4. 查询 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 仍触发真人输入审核

依次确认:

  1. 传给 2.5 的 URL 可被供应商访问,且未经过下载、转码、剪辑、压缩或重新封装;
  2. reference_video_task_id 与源视频任务 ID 完全一致(qvideo-* 或 cgt-*);
  3. 源任务属于当前租户、供应商为 Seedance 且状态为成功;
  4. reference_video_task_id 使平台将续创任务路由到生成源视频的同一火山账号;
  5. 原始产物生成时间未超过 30 天,签名 URL 尚未过期。

2.5 提示任务类型或参数不匹配

视频延长必须使用 omni_reference_task_type=extend 和 ratio=adaptive,并在提示词中明确表达延长或续写意图。duration 支持 [4, 30] 或 -1;本教程设置为 30。