Skip to main content

Краткий ответ

Seedance считывает только role каждого элемента в запросе. Он не видит, какие переключатели вы выбрали в своем инструменте, и не читает для этого ваш prompt. Изображение без role обрабатывается как первый кадр (image-to-video). Добавьте к этому референсное видео, и запрос превратится в «первый кадр + референсный медиафайл», что отклоняется провайдером. Обычно при отправке возвращается ошибка 400. Задача не создается, и тарификация не производится:
Решение: отправляйте запрос через нативный эндпоинт Seedance POST /seedance/api/v3/contents/generations/tasks, укажите "role": "reference_image" для изображений и "role": "reference_video" для видео, а видео передавайте в виде публичного URL, который провайдер сможет скачать напрямую, либо зарегистрируйте его в библиотеке ассетов и ссылайтесь на него как на asset://.

Реальный пример

Клиент использовал собственный локальный инструмент для творчества. Он передал изображение одного персонажа и одно видео, отметил флажок «omni reference», оставил флажок «first/last frame» неотмеченным и даже написал в prompt: «image 1 is not the first frame, do not use first/last frame mode». Тем не менее каждый запуск завершался приведенной выше ошибкой. Мы перехватили исходный запрос на стороне шлюза (Base64 изображения сокращен):
У запроса две проблемы. Любой из них достаточно, чтобы привести к сбою: В консоли браузера клиента также отображалось 415 Unsupported Media Type для того же mp4, поступавшее от собственного локального эндпоинта предпросмотра инструмента (/api/media-preview/... на localhost). Инструмент не смог преобразовать видео в пригодный для использования адрес и передал локальный путь в запрос как есть.

Не отправляйте запросы для Seedance через универсальные эндпоинты для видео

/v2/videos/generations (а также /v1/videos, /v1/video/generations) — это универсальные эндпоинты шлюза для видео. Их поля представляют собой общее подмножество параметров нескольких видеомоделей, и они не могут выразить режимы ввода Seedance:
  • Отсутствует role: они не могут различить первый кадр, первый/последний кадр и мультимодальный референс, поэтому одно изображение и одно видео всегда интерпретируются как «первый кадр + референс»
  • Разрешение передается не полностью: в наших тестах при запросе 2.5 с разрешением 480p результат был в 720p, а для серии 2.0 при запросе 1080p результат также составил 720p, при этом тарификация рассчитывается по фактически сгенерированному разрешению
  • Параметры, уникальные для 2.5 (omni_reference_task_type, output_format и так далее), не имеют соответствующего поля
Поэтому для Seedance всегда используйте нативные эндпоинты: Если вы используете сторонний инструмент, проверьте, поддерживает ли его канал для Seedance «нативный» формат или формат «Volcengine Ark». Инструмент, который работает только с универсальным API для видео, не может выполнять задачи с референсным видео.

Правильный способ: задавайте role для каждого элемента

Ключевые моменты:
  • Три режима ввода взаимоисключающи: первый/последний кадр (2 изображения, first_frame / last_frame), первый кадр (1 изображение) и мультимодальный референс (reference_image / reference_video / reference_audio). Как только появляется референсное видео или референсное аудио, каждое изображение должно быть reference_image
  • Отсутствие role означает первый кадр: одно изображение без role эквивалентно first_frame
  • В prompt ссылайтесь на элементы в том порядке, в котором они были переданы, например @image1 и @video1
  • Лимиты на референсы: до 9 изображений + 3 видео + 3 аудиоклипа для серии 2.0 и до 30 изображений + 10 видео + 10 аудиоклипов для 2.5

Как передать референсное видео

Провайдер скачивает ваши медиафайлы на свои серверы, поэтому видео должно находиться по адресу, к которому у провайдера есть прямой доступ. Перед отправкой вы можете проверить ссылку с любого компьютера с доступом в интернет (замените <URL> на ссылку на ваше видео):
Вы должны увидеть code=200, type со значением video/mp4 или video/quicktime и size, соответствующий исходному файлу. HTML-страница, тело JSON или любой код 4xx означают, что провайдер не сможет использовать эту ссылку. Инструкцию по полной проверке ссылок на изображения см. в руководстве Ссылка на изображение открывается, но возникает ошибка.

Связанная документация

API генерации видео

Нативный эндпоинт, а также структура контента и значения ролей для каждого режима ввода

Рабочий процесс с приоритетом ассетов

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