Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
AI 视频连续性维护:跨片段的状态账本方法
2026/08/27

AI 视频连续性维护:跨片段的状态账本方法

掌握状态账本、边界帧、延续提示词、API 调用、连续性检查和修复规则,在多个 AI 生成的视频片段中保持并维护完整连续性。

当每个片段都以书面和视觉形式向下一个片段递交时,AI 视频的连续性表现最佳。 最后一帧是这种递交的一部分,但还不够。你还需要一份状态账本,记录角色的位置、朝向、手持物品、发生的变化,以及下一个镜头允许做什么。

本教程构建一个超过单一模型调用长度的序列。示例使用两个 Seedance 2.5 生成,因为字节跳动文档记录了长达 30 秒的片段和多轮扩展。[1] 状态账本方法也适用于较短的模型和独立的镜头编辑。

速读版

  • 在生成第一个片段前规划完整序列。
  • 在稳定的视觉状态处分割,不要在最激烈的动作中间分割。
  • 在状态账本中记录身份、位置、方向、道具、环境、光线、摄像机和未解决的动作。
  • 请求第一个片段的最后一帧,并将其用作边界锚点。
  • 延续提示从重述继承的状态开始。
  • 逐帧审查接缝,然后以正常速度审查。
  • 仅修复边界或受影响的片段;不要重新生成整个故事。

长形式 AI 视频连续性工作流,从主序列和状态账本经过边界帧、延续生成、接缝审查到选择性修复

为什么仅凭最后一帧无法保持连续性

一帧显示的是某个时刻的外观和位置。它无法充分解释运动方向、角色意图、道具历史、音频时序,或接下来必须发生的事情。

想象一个骑自行车的人在画面右边缘。图像无法告诉下一代 AI,骑手是从左边来的、将要向右离开、还是已经停下来会掉头。状态账本提供了缺失的时间信息。

把连续性想象为八个相连的状态:

状态示例
身份同一个骑手、头盔、蓝色夹克、黑色自行车
位置骑手在右三分之一处,自行车平行于道路
方向从左向右行进,无反向
姿态/动作右脚着地,双手握把手,减速中
道具红色背包留在骑手身上;饮水瓶在车架笼中
环境潮湿的山地道路、松树、早晨雾气
光线来自左上方的柔和逆光
摄像机/音频低位跟踪视图;轮胎噪音在切口下继续

稳定的序列保持所有八个状态,除非故事刻意改变其中一个。

第一步:在第一次调用前规划完整序列

用纯文本写出完整动作。然后根据自然递交状态将其分割成片段。

完整序列:
骑手下降通过雾气,在掉落的树枝前刹车,扛着自行车绕过它,重新上车,并继续朝向阳光明媚的开口。

片段 1:
下降和刹车。以自行车停在道路右侧、前轮略微向左转、骑手右脚着地结尾。

片段 2:
骑手下车,扛起自行车绕过树枝,重新上车,向阳光开口骑去。

分割发生在刹车动作停止后。它不发生在前轮转动或脚向地面移动时。稳定的递交给延续生成的歧义更少。

第二步:创建主连续性圣经

连续性圣经包含适用于整个序列的细节。

{
  "character": {
    "identity": "同一个成人骑手",
    "wardrobe": "哑光黑色头盔、蓝色雨夹克、黑色裤子",
    "fixed_details": "红色背包、无手套"
  },
  "vehicle": {
    "type": "黑色硬尾山地车",
    "fixed_details": "下管笼中有饮水瓶、无后悬挂"
  },
  "world": {
    "location": "通过松林的潮湿山地道路",
    "weather": "轻雾、无活跃降雨",
    "light": "来自左上方的柔和晨间逆光"
  },
  "camera_language": {
    "height": "低腰部高度跟踪",
    "lens": "中等广角外观",
    "movement": "光滑,有微小自然振动",
    "screen_direction": "左到右"
  },
  "audio": {
    "bed": "轮胎噪音、轻风、远处鸟鸣",
    "music": "无"
  }
}

在每个片段中重用此信息。单独的角色一致性指南涵盖参考设计;连续性圣经记录围绕身份的制作决定。

第三步:添加片段特定状态账本

账本有三列:继承状态、此片段期间的变化和必需的结束状态。

{
  "clip_id": "01-descent-and-stop",
  "inherits": {
    "rider_position": "left third",
    "direction": "left to right",
    "speed": "moderate downhill",
    "hands": "both on handlebars",
    "bike": "upright and rolling"
  },
  "changes": [
    "fallen branch becomes visible",
    "rider brakes without reversing",
    "bike moves to right side of road",
    "right foot lowers to ground"
  ],
  "end_state": {
    "rider_position": "right third",
    "direction": "still facing right",
    "speed": "stopped",
    "right_foot": "on ground",
    "left_foot": "on pedal",
    "front_wheel": "turned slightly left",
    "hands": "both on handlebars",
    "branch": "two meters ahead",
    "camera": "stable low three-quarter view",
    "hold": "one second"
  }
}

下一个片段的 inherits 对象应该匹配此 end_state。如果它们不同,你已经在花费生成成本前发现了一个连续性问题。

第四步:用刻意的递交生成第一个片段

提示应该足够关注最终状态。

同一个骑手穿着哑光黑色头盔、蓝色雨夹克、黑色裤子和红色背包,骑着黑色硬尾山地车从左到右在潮湿的森林道路上行进。低腰部高度跟踪摄像机,来自左上方的柔和早晨逆光。

骑手看到一根掉落的树枝,逐渐刹车而不反向,移向道路右侧并停止。右脚降低到地面,同时左脚留在踏板上。双手留在把手上。前轮略微指向左侧。以稳定的低三分之一视图结尾,树枝两米远处。持握确切的最终状态一秒钟。无切口、服装变化、额外骑手或方向反向。

在 API 调用中请求最后一帧:

curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.5-face",
    "prompt": "The cyclist rides left to right, brakes before a fallen branch, and stops on the right side of the road. Right foot on ground, left foot on pedal, both hands on handlebars, front wheel slightly left. Hold the exact final state for one second. Preserve rider, bicycle, wardrobe, road, light, and direction.",
    "image_urls": ["https://example.com/rider-and-bike-reference.jpg"],
    "resolution": "720p",
    "size": "16:9",
    "duration": 12,
    "generate_audio": true,
    "return_last_frame": true
  }'

任务完成后,reAPI 返回生成的视频 URL,当请求时,返回 output.last_frame_url[2]

第五步:在继续前审核边界

不要自动转发最后一帧。确认它代表书面的结束状态。

{
  "identity": "pass",
  "screen_direction": "pass",
  "right_foot_grounded": "pass",
  "left_foot_on_pedal": "repair",
  "both_hands_on_handlebars": "pass",
  "front_wheel_direction": "pass",
  "branch_distance": "pass",
  "stable_hold": "pass"
}

如果硬连续性条件失败,修复第一个片段或选择更早的有效帧。转发坏的边界会让下一代继承该错误。

第六步:构建延续请求

通过重述继承状态开始第二个提示,然后仅描述新的变化。

从 Image 1 开始。同一个骑手停在潮湿道路的右侧,面向右。右脚在地上,左脚在踏板上,双手握住把手,前轮略微指向左侧,掉落的树枝在两米远处。保持相同的骑手、头盔、蓝色夹克、红色背包、黑色自行车、饮水瓶、雾气和光线方向。

骑手向左侧下车,不转向自行车,用车架提起自行车,走过树枝的近端,将两个轮子放回面向右的道路,重新上车,朝亮处开口骑去。保持左到右屏幕方向。以骑手从右离开画面结尾。无新道具、服装变化、天气变化或切口。

使用返回的图像作为显式第一帧:

curl https://reapi.ai/api/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.5-face",
    "prompt": "Begin exactly from Image 1. Preserve rider, wardrobe, bicycle, prop placement, fog, light, and left-to-right direction. The rider dismounts, carries the bicycle around the branch without reversing it, remounts, and exits frame right. No cuts or new objects.",
    "image_with_roles": [
      {
        "url": "LAST_FRAME_URL_FROM_CLIP_1",
        "role": "first_frame"
      }
    ],
    "resolution": "720p",
    "size": "adaptive",
    "duration": 14,
    "generate_audio": true,
    "return_last_frame": true
  }'

在当前 reAPI 路由上,第一帧角色使用 image_with_roles,需要自适应大小,不能与 image_urlsvideo_urlsaudio_urls 在同一请求中混合。这是一条网关规则,应该在请求验证中处理,而不是在提交后发现。[2]

如果你需要几个身份参考而不是硬第一帧角色,使用参考图像工作流并将前一个最后帧描述为有序输入之一。这提供了更多的身份证据,但边界更软。正确的选择取决于哪个失败更昂贵。

第七步:以三个速度审查接缝

在编辑器中并排放置片段。

逐帧

比较第一个片段的最后一帧和第二个片段的第一帧的身体形状、服装、手位置、道具位置、自行车几何、光线和摄像机高度。

半速

检查运动是否不自然重启,轮子是否跳跃,肢体是否改变支撑,或摄像机在切口处是否加速。

正常速度

判断观众是否注意到接缝。微小纹理差异在运动中可能看不见;方向反向则不会。

使用边界报告:

{
  "visual_match": "pass",
  "screen_direction": "pass",
  "action_continuation": "repair",
  "camera_velocity": "pass",
  "audio_bed": "repair in edit",
  "note": "clip 2 lifts the left foot before the hands shift to the frame"
}

第八步:修复最小的连续性中断

不是每个不匹配都需要重新生成。

问题最小实用修复
一个或两个坏边界帧修剪到更干净的点
音频环境变化在编辑中用一个连续的音床替换
摄像机在接缝处暂停添加短重叠或选择稳定的切口
道具在手之间切换重新生成受影响的延续拍子
角色或车辆变化加强边界/参考工作流并重新生成第二个片段
屏幕方向反向重写继承方向并重新生成第二个片段
光线略微变化如果身份和几何通过,在后期制作中分级

连续性不是像素身份。目标是一个可信的递交,其中故事、空间和动作保持可读。

第九步:扩展账本到更多片段

对于更长的项目,存储一个主圣经和每个片段一个账本。

/sequence
  master-continuity.json
  clip-01-ledger.json
  clip-02-ledger.json
  clip-03-ledger.json
  /references
  /boundary-frames
  /generated
  /approved

在生成第三个片段前,比较:

clip-02.end_state == clip-03.inherits

一个代理可以自动执行此一致性检查。人类应该仍然批准身份、敏感肖像、叙述意图和最终剪辑。

常见初学者错误

在快速动作中分割

选择停止、保持、接触或完成的姿态。中动作边界迫使下一代从一个图像推断动量。

仅描述变化

延续也需要继承事实。在新动作前重述方向、道具、位置、光线和摄像机条件。

转发无效最后帧

先审查它。扭曲的手或缺失的道具成为下一个片段的起始证据。

解决视觉连续性同时忽视音频

当独立生成产生音调或音量变化时,在接缝上使用一个环境床。

在晚期失败后重新生成每个片段

冻结已批准的片段。修复边界或第一个失败的延续。

常见问题

最后一帧足以继续 AI 视频吗?

它有助于外观和位置,但不能帮助方向、意图、道具历史或未来动作。将其与状态账本和延续提示相配对。

我应该在哪里分割长序列?

在动作稳定后分割:停止、着地、放置的物体、关闭的门、保持的姿态或稳定的摄像机帧。

多少细节属于状态账本?

记录任何其解释的变化都会分散观众注意力或破坏下一个动作的东西。忽视可以安全变化的装饰性细节。

我可以将第一帧角色与其他参考结合吗?

不能在当前 reAPI Seedance 2.5 请求表面。image_with_roles 不能与其他媒体参考字段结合,所以在硬帧边界和更广泛的参考集之间选择。

每个片段都应该使用最大时长吗?

不。围绕自然动作和递交选择时长。较短的完整拍子比用其限制填充的长片段更容易控制。

结论

AI 视频连续性是一个递交纪律。规划完整序列,以稳定状态结束每个片段,验证边界帧,让下一个提示在引入新动作前继承一个书面账本。这并不能消除变化,但它把"让它继续"变成了一个可以检查、修复和自动化的生产过程。

参考文献

  1. ByteDance Seed. One-take Creation, Flexible Referencing: Introducing Seedance 2.5. July 31, 2026. seed.bytedance.com
  2. reAPI. Seedance 2.5 API — Parameters, Modes & Billing. Retrieved August 27, 2026. reapi.ai
  3. ByteDance Seed. Seedance 2.0 Official Launch. February 12, 2026. seed.bytedance.com