Войти

Seedance 2.5 Video Extend

Продление входного ролика: модель продолжает сцену с конца исходного видео по текстовому описанию. Контекст — до последних 30 с; длина нового сегмента 4–30 с. Разрешение до 4K.

Ввод
Опишите, что должно произойти после конца исходного ролика: действие, движение камеры, свет, настроение и атмосфера.
Входной ролик для продления. Модель использует до последних 30 с как контекст и продолжает сцену с конца.
Готово: 1
Длина нового сегмента: от 4 до 30 секунд.
8
Выберите качество выходного видео: 480p, 720p, 1080p или 4k.
Разрешение

О модели Seedance 2.5 Video Extend

Обзор

Seedance 2.5 от ByteDance Seed официально представлена в июле 2026 года (анонс Seed Team — 31 июля 2026). Режим Video Extend — video-to-video endpoint линейки 2.5 для продления готового ролика: модель берёт до последних 30 с как контекст и продолжает сцену с конца по текстовому описанию нового сегмента (4–30 с); разрешение — 480p, 720p, 1080p или 4K; соотношение сторон наследуется от входа. В отличие от Seedance 2.5 Video Edit здесь задача — нарастить таймлайн, а не править тот же клип: официально линейка 2.5 усиливает multi-round extensions для длинных историй с сохранением персонажей, локации и темпа. Пользователь загружает video, описывает действие, камеру и атмосферу после конца исходника, выбирает длину нового сегмента, resolution и режим аудио (сгенерировать синхронный звук для продолжения или без генерации). Самое важное: это endpoint для пошагового наращивания ролика до минутной длины без склейки разрозненных клипов. Ограничения: aspect ratio залочен входом; шов на стыке сегментов и сложные смены сцены стоит проверять после каждого раунда; pixel-identical стык не гарантируется.

Сильные стороны

Критерий Оценка Комментарий
Верность референсам Верность референсу — основа endpoint'а: входное видео задаёт субъект, движение, стиль и аудиоконтекст (используется до последних ~30 с), а промпт направляет продолжение. Мелкие признаки и сильный сюжетный разрыв с финалом исходника всё ещё могут давать приближение, а не буквальное копирование.
Согласованность персонажа и объекта Согласованность персонажа и объекта — ключевая сила Video Extend: ByteDance Seed заявляет удержание главных героев, окружения и ритма при multi-round extension. На плотных многоперсонажных продолжениях и после нескольких раундов возможен дрейф периферийных признаков.
Плавность движения Плавность движения — сильная сторона продолжения: модель опирается на недавнее движение и аудиоконтекст финала, сглаживая переходы между шотами. На быстрых экшенах и сложной хореографии возможны локальные рывки и морфинг.
Согласованность между кадрами Согласованность между кадрами — ключевая цель Video Extend: субъект, фон и непрерывность удерживаются от финала исходника через весь новый сегмент до 30 с. На очень длинных multi-round цепочках и многоперсонажных сценах возможны небольшие сдвиги деталей.
Качество отдельного кадра Качество отдельного кадра у Seedance 2.5 Video Extend высокое: продолжение наследует улучшения линейки 2.5 по материалам, коже, свету и насыщенности вплоть до 4K. На стыке с исходным роликом и в перегруженных крупных планах возможны локальные артефакты.
Эстетика и композиция Эстетика и композиция сильные: endpoint продолжает кинематографичный язык исходного клипа и развивает «смотрибельность» на сегментах до 30 с. В сложных многошотных продолжениях композиция требует ясной режиссуры в промпте продолжения.
Устойчивость к цепочке правок Устойчивость к цепочке продолжений — главная специализация endpoint'а: multi-round extension рассчитан на наращивание ролика до минут при удержании персонажей, среды и аудиовизуального языка. После многих агрессивных раундов на плотных сценах всё же накапливаются дрейф и артефакты.

Сценари использования (use cases)

Ограничения и недостатки

Советы

FAQ

Когда выбирать Seedance 2.5 Video Extend, а когда Video Edit?

Video Extend берите, когда исходный дубль уже удачный и нужно продолжить сцену после его конца: модель стыкует новый сегмент к последнему кадру и даёт задать длину добавки. Video Edit — когда нужно точечно изменить содержимое внутри уже снятого клипа (добавить, убрать, заменить, скорректировать), сохранив примерно ту же длительность. У обоих режимов соотношение сторон наследуется от входа; у Edit длительность почти зафиксирована, у Extend — свободно задаётся длина нового отрезка.

Как писать промпт, чтобы стык продления не был заметен?

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

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

ByteDance Seed заявляет multi-round extension с удержанием персонажей, среды и темпа, но на практике каждое следующее продолжение наследует мелкие ошибки предыдущего выхода. В независимых тестах простые сцены продлеваются чисто, а плотные мультиперсонажные дают заметный дрейф уже на втором–третьем раунде. Относитесь к каждому сегменту как к отдельной сцене с явным стыком, проверяйте шов до следующего раунда и не перегружайте один проход сменой локации, света и несколькими героями сразу.

Гарантирует ли продление пиксельное совпадение стыка с последним кадром исходника?

Нет. Гайды по video extension Seedance 2.5 прямо говорят: boundary-кадры должны стыковаться естественно на визуальном уровне, но не обязаны быть пиксельно идентичными. Поэтому судите шов по непрерывности позы, движения, света и звука по обе стороны границы, а не по одному «среднему» кадру. Если исходник заканчивается хаотичным финалом или резким скачком ракурса, заметный стык вероятнее — сначала стабилизируйте конец дубля, потом продлевайте.

Длительность в Video Extend — это длина нового сегмента или всего ролика? Можно ли сменить формат кадра?

Параметр длительности задаёт только добавленный отрезок (у этой операции — от 4 до 30 секунд), а не суммарную длину исходник+продолжение. Соотношение сторон при video extension автоматически наследуется от входного видео и отдельно не задаётся: вертикальный или горизонтальный мастер готовят до продления. Разрешение выхода выбирается отдельно, но пропорции кадра от исходника не «переломаешь» одним extend-проходом.

Цены

Цена при активной подписке

Стоимость необязательной подписки 299 ₽/месяц Подробнее

API

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

Параметры

Поля тела JSON-запроса, которые используются в Playground и доступны для настройки через API. Порядок совпадает с формой на странице.

Параметр Тип Обязательный По умолчанию Допустимые значения Описание
prompt string Да длина 1–8000 символов Опишите, что должно произойти после конца исходного ролика: действие, движение камеры, свет, настроение и атмосфера.
video string Да от 8 символов Входной ролик для продления. Модель использует до последних 30 с как контекст и продолжает сцену с конца. Выберите с диска или перетащите сюда
duration integer Нет 5 4–30 Длина нового сегмента: от 4 до 30 секунд.
resolution string Нет 720p 480p, 720p, 1080p, 4k Выберите качество выходного видео: 480p, 720p, 1080p или 4k.
generate_audio boolean Нет true Вкл. — сгенерировать синхронный звук для нового сегмента (аудио исходного ролика сохраняется). Выкл. — без генерации аудио.

Запрос

Асинхронный запуск: POST https://api.flixa.io/v1/video/seedance-2.5/video-extend с заголовком Authorization: Bearer $FLIXA_API_KEY и телом JSON. Ниже — пример с полями из Playground.

curl -X POST "https://api.flixa.io/v1/video/seedance-2.5/video-extend" \
  -H "Authorization: Bearer $FLIXA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "video": "https://uploads.flixa.io/media/bb34caa767a28d798ffb6e5bfb95fba515883dd6daca3c4651eada0bcebda7bf.mp4",
  "prompt": "Превратите это фото товара в премиальную студийную рекламу: мягкий кинематографический свет, чистый бежевый фон, лёгкие тени, реалистичные отражения и эстетика люксового бренда.",
  "duration": 8,
  "resolution": "720p",
  "generate_audio": true
}'
import json
import os
import requests

url = "https://api.flixa.io/v1/video/seedance-2.5/video-extend"
payload = json.loads({"duration": 8, "generate_audio": true, "prompt": "\u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0435 \u044d\u0442\u043e \u0444\u043e\u0442\u043e \u0442\u043e\u0432\u0430\u0440\u0430 \u0432 \u043f\u0440\u0435\u043c\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0443\u0434\u0438\u0439\u043d\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443: \u043c\u044f\u0433\u043a\u0438\u0439 \u043a\u0438\u043d\u0435\u043c\u0430\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0432\u0435\u0442, \u0447\u0438\u0441\u0442\u044b\u0439 \u0431\u0435\u0436\u0435\u0432\u044b\u0439 \u0444\u043e\u043d, \u043b\u0451\u0433\u043a\u0438\u0435 \u0442\u0435\u043d\u0438, \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0430 \u043b\u044e\u043a\u0441\u043e\u0432\u043e\u0433\u043e \u0431\u0440\u0435\u043d\u0434\u0430.", "resolution": "720p", "video": "https://uploads.flixa.io/media/bb34caa767a28d798ffb6e5bfb95fba515883dd6daca3c4651eada0bcebda7bf.mp4"})

response = requests.post(
    url,
    headers={"Authorization": f"Bearer {os.environ['FLIXA_API_KEY']}"},
    json=payload,
    timeout=120,
)
print(response.json())
const response = await fetch(
  "https://api.flixa.io/v1/video/seedance-2.5/video-extend",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.FLIXA_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({"duration": 8, "generate_audio": true, "prompt": "\u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0435 \u044d\u0442\u043e \u0444\u043e\u0442\u043e \u0442\u043e\u0432\u0430\u0440\u0430 \u0432 \u043f\u0440\u0435\u043c\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0443\u0434\u0438\u0439\u043d\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443: \u043c\u044f\u0433\u043a\u0438\u0439 \u043a\u0438\u043d\u0435\u043c\u0430\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0432\u0435\u0442, \u0447\u0438\u0441\u0442\u044b\u0439 \u0431\u0435\u0436\u0435\u0432\u044b\u0439 \u0444\u043e\u043d, \u043b\u0451\u0433\u043a\u0438\u0435 \u0442\u0435\u043d\u0438, \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0430 \u043b\u044e\u043a\u0441\u043e\u0432\u043e\u0433\u043e \u0431\u0440\u0435\u043d\u0434\u0430.", "resolution": "720p", "video": "https://uploads.flixa.io/media/bb34caa767a28d798ffb6e5bfb95fba515883dd6daca3c4651eada0bcebda7bf.mp4"}),
  }
);

console.log(await response.json());

Пример ответа

Сразу после POST приходит объект с идентификатором задачи и статусом (queued или processing). Готовый результат — в поле outputs после завершения.

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "created_at": "2026-05-22T12:00:00Z"
}

После успешного завершения:

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "completed",
  "outputs": [
    { "url": "https://storage.example/result.png", "type": "image" }
  ]
}

Поллинг

Пока задача в работе, опрашивайте GET https://api.flixa.io/v1/predictions/{id}/result с тем же API-ключом. Рекомендуемый интервал — 1–2 секунды; остановитесь при completed, failed или cancelled.

  • queued / processing — продолжайте опрос.
  • completed — заберите URL из outputs.
  • failed — смотрите error в теле ответа.
curl "https://api.flixa.io/v1/predictions/{id}/result" \
  -H "Authorization: Bearer $FLIXA_API_KEY"