Введение
Video Character Swap принимает идентификатор задачи анализа, выбранные по его превью позиции и от одной до трёх референсных фотографий для каждой и возвращает ролик с заменёнными людьми. Фигура меняется целиком, вместе с одеждой и сложением; декорация, движение камеры, хореография и исходная звуковая дорожка остаются такими, какими их сняли. Люди, которых нет в списке, остаются нетронутыми.
Video Character Swap работает в два вызова. Первый отслеживает каждого человека в ролике длиной от 5 до 30 секунд и возвращает по одному превью на человека в фиксированном порядке. Второй принимает выбранные позиции и от одной до трёх референсных фотографий для каждой и возвращает ролик, в котором эти люди заменены, а исходная звуковая дорожка сохранена.
Анализ видео Character Swap → Редактирование видео Character Swap
Ключевые возможности и особенности
Кого менять — решаете вы
Большинству эндпоинтов такого рода приходится догадываться, кого именно вы имели в виду. Здесь первый вызов показывает каждого найденного человека с номером, а второй трогает только те номера, которые вы вернули. В сцене с четырьмя людьми можно заменить одного, а остальные трое останутся ровно такими, какими их сняли.
Дайте модели что-то ниже шеи
Video Character Swap — это не один эндпоинт, а пара. Первый вызов, video-analyze, отслеживает всех людей в ролике длиной от 5 до 30 секунд и возвращает по одному превью на человека в фиксированном порядке; оплата фиксированная за запрос, независимо от длины ролика и количества найденных людей. Второй вызов, video-edit, принимает идентификатор задачи этого анализа, выбранные позиции и от одной до трёх референсных фотографий для каждой и возвращает один ролик с нетронутой исходной звуковой дорожкой, оплачиваемый посекундно в 480p или 720p. Если пара head swap меняет только голову, то эта заменяет фигуру целиком, вместе с одеждой и сложением, а декорация, движение камеры и хореография остаются такими, какими их сняли. Сами данные трекинга до вас не доходят: вы работаете со своим идентификатором задачи и с позициями, нумерованными с нуля.
Параметры запроса
| Параметр | Обязательно | Описание |
|---|---|---|
analysis_task_id | Да | Идентификатор задачи вызова анализа для этого ролика. Его превью перечислены в том же порядке, что и |
swap_targets | Да | По одной записи на каждого заменяемого человека; те, кого нет в списке, не затрагиваются. Не менее 1 элементов · Не более 10 элементов |
video_url | Нет | Необязателен. Если опустить, берётся видео из анализа. Не менее 1 символов |
resolution | Нет | Должно совпадать с разрешением, в котором выполнялся анализ. Это же поле определяет ценовую ступень. |
seed | Нет | Случайное зерно; ноль запрашивает случайное значение. Одно и то же зерно позволяет сравнивать на равных, когда вы меняете что-то одно, но не обещает покадрово идентичный результат. |
Стоимость
Оплата взимается полными блоками по 5 секунд исходного клипа: клип длиной 6 секунд стоит столько же, сколько 10 секунд. Оценка перед отправкой рассчитывается по реальной длине загруженного клипа, а для ссылки на видео — по максимуму в 30 секунд; разница, если есть, освобождается при списании.
| Спецификация | Стоимость |
|---|---|
| $0.064 / секунду |
| $0.12 / секунду |
Сценарии использования
Сменить исполнителя, не переснимая кадр
Декорация, движение камеры и хореография уже такие, как надо. Вместо того чтобы пересобирать весь кадр и заново выстраивать изображение, замените только фигуру, которая его играет.
Любой сюжет — с согласия исполнителя
Что бы ни было в материале, в запросе не меняется ничего. Требование о правах, описанное ниже, тоже не меняется: это жёсткое условие, а не формальность.
Один персонаж через всю сгенерированную серию
Сгенерируйте партию роликов любой видеомоделью, проанализируйте каждый и проведите одного и того же персонажа через все, чтобы серия читалась как один исполнитель.
Толпа, в которой меняется только один
Проанализируйте сцену с несколькими людьми в кадре, посмотрите превью и верните только нужную позицию. Все остальные останутся нетронутыми.
Руководство по промптам и практические советы
Подтвердите права на каждого задействованного человека
И в материале, и на референсных фотографиях присутствуют люди. Разрешение нужно и на изображение, которое вы переносите, и на материал, в который вы его помещаете. Храните разрешение вместе с записью о задаче.
Сначала анализ, затем чтение порядка превью
Анализ возвращает превью в фиксированном порядке. Первое изображение — object_index 0, второе — 1, и так далее. Эта позиция — единственная зацепка, которая вам нужна: её вы и возвращаете в swap_targets.
Дайте модели что-то ниже шеи
Этот эндпоинт заменяет фигуру целиком, поэтому поясной портрет оставляет сложение и одежду на догадки. Две-три фотографии в полный рост под разными углами полезнее, чем один очень резкий крупный план.
Быстрый старт API
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "spicyapi/character-swap-v1/video-edit",
"input": {
"analysis_task_id": "example",
"resolution": "720p",
"swap_targets": [
{
"image_urls": [
"example"
],
"object_index": 0
}
]
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
Аутентификация, полная схема, опрос статуса и обработка ошибок описаны в справочнике API.
