Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
Как сохранить непрерывность видео ИИ на нескольких клипах
2026/08/27

Как сохранить непрерывность видео ИИ на нескольких клипах

Расширяйте видео ИИ несколько клипов, используя реестр состояния, граничные кадры, подсказки продолжения и правила восстановления для упорядоченной работы.

Непрерывность видео ИИ улучшается, когда каждый клип завершается письменной и визуальной передачей следующему клипу. Финальный кадр — часть этой передачи, но его недостаточно. Вам также нужен реестр состояния, который записывает, где стоят персонажи, куда они смотрят, что они держат, что изменилось, и что разрешено делать следующему кадру.

Этот урок строит последовательность, которая длиннее одного вызова модели. В примере используются две генерации Seedance 2.5, потому что ByteDance документирует клипы до 30 секунд и многораундовое расширение.[1] Метод реестра состояния также применяется к более коротким моделям и отдельно отредактированным кадрам.

TL;DR

  • Спланируйте полную последовательность перед генерацией первого клипа.
  • Разделите на стабильное визуальное состояние, а не посередине самого сложного действия.
  • Записывайте идентичность, позицию, направление, реквизит, окружение, свет, камеру и неразрешённое действие в реестр состояния.
  • Запросите последний кадр первого клипа и используйте его как якорь границы.
  • Начните подсказку продолжения с переформулировки унаследованного состояния.
  • Просмотрите соединение кадр за кадром, затем в обычной скорости.
  • Восстанавливайте только граничный или затронутый клип; не регенерируйте всю историю.

Рабочий процесс непрерывности видео ИИ от главной последовательности и реестра состояния через граничный кадр, генерацию продолжения, проверку соединения и выборочное восстановление

Почему один финальный кадр не сохраняет непрерывность

Кадр показывает внешний вид и позицию в один момент времени. Он не полностью объясняет направление движения, намерение персонажа, историю реквизита, синхронизацию звука или то, что должно произойти дальше.

Представьте велосипедиста на правом краю кадра. Изображение не говорит следующей генерации, пришёл ли велосипедист слева, вот-вот выйдет вправо или остановился и развернётся. Реестр состояния предоставляет эту недостающую временную информацию.

Думайте о непрерывности как о восьми связанных состояниях:

СостояниеПример
Идентичностьодин и тот же всадник, шлем, синяя куртка, чёрный велосипед
Позициявсадник в правой трети, велосипед параллелен дороге
Направлениепутешествует слева направо, без разворота
Поза/действиеправая ступня вниз, руки на руле, замедление
Реквизиткрасный рюкзак остаётся на велосипедисте; бутылка с водой в клетке рамы
Окружениевлажная горная дорога, сосны, утренний туман
Светмягкий контровой свет с верхнего левого угла
Камера/звукнизкий вид слежения; звук шин продолжается под переходом

Стабильная последовательность сохраняет все восемь, если история не намеренно меняет одно.

Шаг 1: Спланируйте полную последовательность перед первым вызовом

Напишите полное действие простым языком. Затем разделите его на клипы на основе естественных состояний передачи.

Полная последовательность:
Велосипедист спускается через туман, тормозит перед упавшей веткой, переносит велосипед
вокруг неё, садится верхом и продолжает к залитому солнцем проёму.

Клип 1:
Спуск и торможение. Заканчивается тем, что велосипед остановлен на правой стороне дороги,
передняя шина слегка повёрнута влево, правая нога велосипедиста касается земли.

Клип 2:
Всадник спешивается, несёт велосипед вокруг ветки, садится верхом и выходит
к залитому солнцем проёму.

Разделение происходит после того, как действие торможения успокаивается. Оно не происходит во время поворота передней шины или перемещения ноги на землю. Стабильные передачи дают продолжению меньше неоднозначности.

Шаг 2: Создайте главную библию непрерывности

Библия непрерывности содержит детали, которые применяются ко всей последовательности.

{
  "character": {
    "identity": "один и тот же взрослый велосипедист",
    "wardrobe": "матовый чёрный шлем, синяя дождевая куртка, чёрные брюки",
    "fixed_details": "красный рюкзак, без перчаток"
  },
  "vehicle": {
    "type": "чёрный хардтейл горный велосипед",
    "fixed_details": "бутылка с водой в клетке нижней трубы, без заднего амортизатора"
  },
  "world": {
    "location": "влажная горная дорога через хвойный лес",
    "weather": "лёгкий туман, без активного дождя",
    "light": "мягкий утренний контровой свет с верхнего левого угла"
  },
  "camera_language": {
    "height": "низкий вид на уровне талии со слежением",
    "lens": "умеренный широкий вид",
    "movement": "плавное с небольшой естественной вибрацией",
    "screen_direction": "слева направо"
  },
  "audio": {
    "bed": "звук шин, лёгкий ветер, далёкие птицы",
    "music": "отсутствует"
  }
}

Переиспользуйте эту информацию во всех клипах. Отдельный гид по согласованности персонажей охватывает дизайн эталонной базы; реестр непрерывности записывает решения производства, которые окружают идентичность.

Шаг 3: Добавьте специфичный для клипа реестр состояния

Реестр имеет три столбца: унаследованное состояние, изменения во время этого клипа и требуемое конечное состояние.

{
  "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. Если они отличаются, вы нашли проблему непрерывности перед тратой на генерацию.

Шаг 4: Генерируйте первый клип с преднамеренной передачей

Подсказка должна уделить достаточно внимания финальному состоянию.

Один и тот же велосипедист в матовом чёрном шлеме, синей дождевой куртке, чёрных брюках и красном
рюкзаке ездит на чёрном горном велосипеде слева направо на влажной лесной
дороге. Низкий вид со слежением на уровне талии, мягкий утренний контровой свет с верхнего левого угла.

Велосипедист видит упавшую ветку, постепенно тормозит без разворота, переходит
на правую сторону дороги и останавливается. Правая нога опускается на землю, пока
левая нога остаётся на педали. Обе руки остаются на руле. Передняя шина указывает
слегка влево. Завершите стабильным низким трёхчетвертным видом с веткой в два метра впереди.
Держите точное финальное состояние одну секунду. Без разреза, изменения гардероба, дополнительного всадника
или разворота направления.

Запросите последний кадр в вызове 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]

Шаг 5: Проверьте границу перед продолжением

Не переправляйте последний кадр автоматически. Подтвердите, что он представляет написанное конечное состояние.

{
  "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"
}

Если сложное условие непрерывности не срабатывает, восстановите клип первый или выберите более ранний действительный кадр. Переправка плохой границы заставляет следующую генерацию унаследовать ошибку.

Шаг 6: Постройте запрос продолжения

Начните вторую подсказку с переформулировки унаследованного состояния, затем описывайте только новые изменения.

Начните ровно с 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_urls, video_urls или audio_urls в одном запросе. Это правило шлюза, которое должно обрабатываться при валидации запроса, а не обнаруживаться после отправки.[2]

Если вам нужны несколько эталонов идентичности вместо жёсткой роли первого кадра, используйте рабочий процесс эталонного изображения и опишите предыдущий финальный кадр как один из упорядоченных входов. Это обеспечивает больше доказательств идентичности, но более мягкую границу. Правильный выбор зависит от того, какой отказ дороже.

Шаг 7: Просмотрите соединение на трёх скоростях

Поместите клипы рядом друг с другом в редактор.

Кадр за кадром

Сравните финальный кадр клипа первого и первые кадры клипа второго для формы тела, гардероба, положения рук, положения реквизита, геометрии велосипеда, света и высоты камеры.

Половинная скорость

Проверьте, возобновляется ли движение неестественно, прыгает ли колесо, меняется ли опора конечности, или камера ускоряется при разрезе.

Обычная скорость

Судите, заметит ли зритель соединение. Небольшая разница в текстуре может быть невидима в движении; разворот направления — нет.

Используйте отчёт о границе:

{
  "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"
}

Шаг 8: Восстановите наименьший разрыв непрерывности

Не каждое несоответствие требует регенерации.

ПроблемаНаименьшее практическое восстановление
Один или два плохих граничных кадраОбрежьте до более чистой точки
Звук окружения меняетсяЗамените на один непрерывный звуковой слой в редактировании
Камера делает паузу в соединенииДобавьте короткое перекрытие или выберите стабильный разрез
Реквизит переходит с руки на рукуРегенерируйте затронутый ударный такт продолжения
Персонаж или транспортное средство меняетсяУсильте граничный/эталонный рабочий процесс и регенерируйте клип два
Направление экрана разворачиваетсяПереписьте унаследованное направление и регенерируйте клип два
Освещение немного сдвигаетсяОценка в пост-продакшене, если идентичность и геометрия проходят

Непрерывность — это не пиксельная идентичность. Цель — убедительная передача, где история, пространство и действие остаются читаемыми.

Шаг 9: Масштабируйте реестр на больше клипов

Для более длительного проекта сохраняйте одну главную библию и один реестр на клип.

/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

Агент может выполнить эту проверку согласованности автоматически. Человек должен всё ещё одобрить идентичность, чувствительные подобия, нарративное намерение и финальный разрез.

Распространённые ошибки новичков

Разделение во время быстрого действия

Выберите остановку, удержание, контакт или завершённый жест. Пограничные границы во время движения заставляют следующее поколение вывести импульс из одного изображения.

Описание только того, что меняется

Продолжение также нуждается в унаследованных фактах. Переформулируйте направление, реквизит, позицию, свет и условия камеры перед новым действием.

Переправка недействительного последнего кадра

Сначала проверьте его. Искажённая рука или отсутствующий реквизит становятся начальным доказательством для следующего клипа.

Решение визуальной непрерывности при игнорировании звука

Используйте один слой окружения через соединение, когда отдельные генерации производят тональный или изменение громкости.

Регенерация каждого клипа после позднего отказа

Заморозьте одобренные клипы. Восстановите границу или первый неудачный сюжет продолжения.

FAQ

Достаточно ли последнего кадра, чтобы продолжить видео ИИ?

Это помогает с внешним видом и позицией, но не с направлением, намерением, историей реквизита или будущим действием. Соедините это с реестром состояния и подсказкой продолжения.

Где мне разделить длинную последовательность?

Разделите после того, как действие успокоится: остановка, приземление, размещённый объект, закрытая дверь, удерживаемая поза или стабильный кадр камеры.

Сколько деталей принадлежит реестру состояния?

Записывайте всё, чьё необъяснённое изменение отвлекло бы зрителя или разорвало следующее действие. Игнорируйте декоративные детали, которые могут безопасно меняться.

Могу ли я комбинировать роль первого кадра с другими эталонами?

Нет, не на текущей поверхности запроса Seedance 2.5 reAPI. image_with_roles не может быть объединено с другими полями медиа-ссылок, поэтому выберите между жёсткой границей кадра и более широким набором эталонов.

Должен ли каждый клип использовать максимальную длительность?

Нет. Выберите продолжительность вокруг естественных действий и передач. Более короткий полный такт легче контролировать, чем длинный клип, заполненный до предела.

Заключение

Непрерывность видео ИИ — это дисциплина передачи. Спланируйте полную последовательность, завершите каждый клип на стабильном состоянии, проверьте граничный кадр и сделайте следующую подсказку унаследовать написанный реестр перед введением нового действия. Это не устраняет вариацию, но превращает «сделайте так, чтобы это продолжилось» в процесс производства, который вы можете проверить, восстановить и автоматизировать.

References

  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

Автор

avatar for reAPI Team
reAPI Team

Категории

TL;DRПочему один финальный кадр не сохраняет непрерывностьШаг 1: Спланируйте полную последовательность перед первым вызовомШаг 2: Создайте главную библию непрерывностиШаг 3: Добавьте специфичный для клипа реестр состоянияШаг 4: Генерируйте первый клип с преднамеренной передачейШаг 5: Проверьте границу перед продолжениемШаг 6: Постройте запрос продолженияШаг 7: Просмотрите соединение на трёх скоростяхКадр за кадромПоловинная скоростьОбычная скоростьШаг 8: Восстановите наименьший разрыв непрерывностиШаг 9: Масштабируйте реестр на больше клиповРаспространённые ошибки новичковРазделение во время быстрого действияОписание только того, что меняетсяПереправка недействительного последнего кадраРешение визуальной непрерывности при игнорировании звукаРегенерация каждого клипа после позднего отказаFAQДостаточно ли последнего кадра, чтобы продолжить видео ИИ?Где мне разделить длинную последовательность?Сколько деталей принадлежит реестру состояния?Могу ли я комбинировать роль первого кадра с другими эталонами?Должен ли каждый клип использовать максимальную длительность?ЗаключениеReferences