Видео
Замена персонажа через Videos API — отправьте клип и изображение нового персонажа и получите тот же кадр с этим персонажем, сохранив движение, композицию и голос, — а также видеокадры по промпту с отмеченными персонажами и сценами. Запросы, опрос статуса, цены, регионы и ограничения.
Lovely Router создаёт видео через Videos API, устроенный по образцу OpenAI: POST /v1/videos запускает задание и возвращает объект видео, вы опрашиваете его, пока он не станет completed, а затем скачиваете mp4 из /v1/videos/{id}/content. Попробуйте без кода в песочнице: загрузите клип или найдите его в X, загрузите изображение или попросите любую модель изображений нарисовать его, а выбранная вами чат-модель улучшит промпты персонажа и сцены — каждый шаг списывается с баланса так же, как соответствующий вызов API.
О видео, которое продолжается, пока вы смотрите, см. раздел Видео в реальном времени; о том, как превратить песню в клип, — раздел Музыкальные клипы.
Модели#
| Модель | Цена | Что делает |
|---|---|---|
minimax-h3-character-swap | $0.10 за секунду полученного видео | Переснимает клип с новым персонажем: лицо, волосы, тело и одежда берутся из изображения, а движение, композиция, камера и звуковая дорожка — из клипа. До 10 с на клип. |
minimax-h3-aftermidnight | $0.12 за секунду полученного видео | Та же замена персонажа с NSFW-LoRA (AfterMidnight) для сцен для взрослых: более богатое и интимное окружение и тела без цензуры. До 10 с на клип. |
minimax-h3-video | $0.13 за отрендеренную секунду + $0.06 за секунду за каждое изображение после первого | Создаёт видеокадры по промпту с отмеченными персонажами и сценами, со звуком и диалогами; бесплатно склеивает кадры в одно видео. 5–15 с на кадр. |
Все модели работают на MiniMax H3 и запускаются на наших собственных GPU в группе каналов creative-hosted. На них распространяются условия MiniMax H3: каждый запрос передаёт consent: true, принимая эти условия — в том числе запрет на использование в ЕС, Великобритании, Южной Корее и США — и ответственность за их соблюдение.
Замена персонажа#
Отправьте исходный клип в video, а изображение нового персонажа — в input_reference, файлами (multipart) или как URL (http(s) или data:, в JSON или текстовыми полями multipart).
curl https://lovelyrouter.com/v1/videos \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-F model=minimax-h3-character-swap \
-F video=@clip.mp4 \
-F input_reference=@character.png \
-F prompt="In front of a weathered concrete wall, soft window light" \
-F consent=trueРендер 5-секундного клипа занимает около минуты, 10-секундного — две-три минуты (кадры большего размера обрабатываются дольше). Если модель какое-то время не использовалась, добавьте примерно минуту на пробуждение GPU. Задания продолжают выполняться, даже если вы отключитесь.
Поля запроса#
Параметры тела запроса
modelstringОбязательноminimax-h3-character-swap.
videofileОбязательноИсходный клип: MP4, MOV или WebM, до 80 МБ, файлом или как URL http(s) / data:. Его движение, композиция, камера и звуковая дорожка сохраняются; используется до 10 секунд начиная с start.
input_referencefileИзображение нового персонажа: PNG, JPEG или WebP, до 20 МБ, файлом или как URL. Лучше всего подходит один человек с видимым лицом, равномерно освещённый, на однотонном фоне.
character_idstringСохранённый персонаж вашей учётной записи вместо input_reference: изображением служит его лист разворота. Передайте ровно одно из двух полей.
consentbooleanОбязательноtrue подтверждает, что вы принимаете условия MiniMax H3 и ответственность за их соблюдение (включая территориальное ограничение), а также что всем, кто изображён на видео и картинке, исполнилось 18 лет и они согласились на такое использование своего облика.
promptstringСцена: место, освещение, настроение (до 4000 символов). Из клипа переносится только движение, поэтому описанная сцена сохраняет свой вид; без описания модель выбирает простой фон.
secondsnumberСколько секунд клипа использовать максимум, от 3 до 10. По умолчанию — весь клип, но не больше 10.
startnumberС какого места клипа начинать, в секундах (0–3600; задаётся инструментом обрезки в песочнице). По умолчанию: 0.
backgroundstringnew (по умолчанию): из клипа переносится только движение, а место описывает prompt. keep: фон, объекты и освещение клипа сохраняются, заменяется только человек; prompt не нужен. Цена та же.
seedintegerПовторите рендер с тем же сидом (0–2147483647). По умолчанию — случайный.
?wait=0–300 в POST-запросе удерживает запрос до готовности видео (тогда ответ — 200), иначе возвращается 202 с объектом в очереди.
Сохранённый персонаж#
Нового персонажа можно передавать в каждом вызове или брать из ваших сохранённых персонажей:
- Разово:
input_reference— изображение файлом или как URL (см. выше). - Сохранённый:
character_id— персонаж, сохранённый черезPOST /v1/characters; изображением служит его лист разворота. Он указан в полеcharacter_idобъекта видео.
curl https://lovelyrouter.com/v1/videos \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-F model=minimax-h3-character-swap \
-F video=@clip.mp4 \
-F character_id=chr_3b9e1f0c7a2d4e58b6c1a9f2 \
-F consent=trueЕсли передать оба поля или чужой character_id, запрос будет отклонён (400 / 404).
Целые видео#
POST /v1/videos/replacements принимает целое видео — до 3 минут, с монтажными склейками и несколькими людьми. Сначала в нём находятся кадры и все люди ($0.01 за секунду); затем вы сопоставляете каждому человеку персонажа (или оставляете его как есть) и выбираете замену всего человека или только головы (лицо, волосы и всё, что на голове). Каждый кадр с заменённым человеком рендерится заново, и кадры склеиваются обратно поверх исходного звука; оплата — за секунду замены ($0.20 за секунду для SFW-модели, рендер на FastH3 Omni; AfterMidnight — $0.12). Весь процесс описан на странице эндпоинтов замены в видео. Песочница использует его для любого клипа, короткого или длинного.
Видеокадры#
minimax-h3-video создаёт видео с нуля: POST /v1/videos/shots принимает промпт, в котором отмечены ваши сохранённые персонажи и сцены (@Mia_Wong, @[Night Café]), и каждый отмеченный элемент становится референсным изображением — до 9 на кадр. Слова в кавычках произносит персонаж, отмеченный последним перед ними. Рендерите кадры истории по одному, а затем склейте их через POST /v1/videos/joins (бесплатно). Все поля, цены и API проектов, который песочница использует для раскадровок, описаны на странице эндпоинтов видеокадров. Персонаж с голосом говорит им (до 3 голосов на кадр). Местоимения вне диалогов перед рендером заменяются нужной отметкой (проверка промпта).
curl https://lovelyrouter.com/v1/videos/shots \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{"model": "minimax-h3-video", "consent": true, "seconds": 5,
"prompt": "In @[Night Café], @Leo looks up as @Mia_Wong sits down: \"You came.\"",
"characters": ["chr_3b9e1f0c7a2d4e58b6c1a9f2", "chr_1e4b7d0a9c3f2e5b8a6d0c1f"],
"scenes": ["scn_5b2d9e0c1a7f4b3e8d6c2a1f"]}'Объект видео#
{
"id": "video_4f9d0c2b8e1a47d6a3c5b7e2",
"object": "video",
"model": "minimax-h3-character-swap",
"status": "completed",
"progress": 100,
"created_at": 1792915200,
"completed_at": 1792915288,
"expires_at": 1793520088,
"seconds": "5.17",
"size": "768x1376",
"prompt": "In front of a weathered concrete wall, soft window light",
"character_id": null,
"error": null,
"url": "https://lovelyrouter.com/v1/videos/video_4f9d0c2b8e1a47d6a3c5b7e2/content",
"charge_usd": 0.3875,
"powered_by": "MiniMax H3"
}status принимает значения queued, in_progress, completed, failed или cancelled. У неудавшегося видео есть error: {code, message}, и оно ничего не стоит. size повторяет ориентацию клипа с короткой стороной 768 пикселей; частота кадров — 24 fps.
Эндпоинты#
| Запрос | Что делает |
|---|---|
POST /v1/videos | Запускает видео. |
GET /v1/videos/{id} | Объект видео. ?wait=1–300 удерживает запрос, пока статус не сменится с queued/in_progress или не истечёт время. |
GET /v1/videos/{id}/content | Файл mp4 (поддерживаются запросы Range, так что плееры могут перематывать). Хранится 7 дней. |
GET /v1/videos | Ваши недавние видео, начиная с новых: ?limit=1–100, ?after=<id> для следующей страницы. |
DELETE /v1/videos/{id} | Отменяет видео в очереди (ничего не списывается) или удаляет файл готового видео. |
Цены#
Вы платите за каждую секунду полученного видео, от 3 до 10 секунд на клип (более короткий результат оплачивается как 3 секунды): клип длиной 5,2 секунды стоит $0.52. При запуске видео на балансе резервируется его максимальная стоимость ($1.00 или seconds × цена); разница возвращается после завершения. Неудавшиеся и отменённые видео ничего не стоят.
Как получить хороший результат#
- Клип: один человек, хорошо видимый, движется в естественном темпе. Быстрые действия и сильные перекрытия даются сложнее. Речь остаётся синхронной, потому что звуковая дорожка сохраняется и управляет движением губ.
- Изображение: человек один, лицо видно, освещение равномерное, фон однотонный. Освещение и фон изображения не копируются, но яркий цветной свет может просочиться. Лист персонажа — один и тот же человек анфас, в три четверти, в профиль и со спины на одном изображении — лучше всего работает, когда камера движется вокруг него; в кадре всё равно будет один человек.
- Сцена: опишите место в
prompt, чтобы оно оставалось близким к оригиналу, например «обветренная бетонная стена, мягкий свет из окна». - Форма причёски берётся из клипа (коса в клипе останется косой); цвет волос, лицо и одежда — из изображения.
Ошибки#
| Статус | code / type | Причина |
|---|---|---|
400 | consent_required | consent не равно true. |
400 | invalid_request_error | Файл отсутствует, не читается или слишком велик, seconds вне допустимого диапазона, переданы одновременно input_reference и character_id. |
402 | insufficient_quota | Баланса не хватает на резерв. |
404 | not_found_error | Неизвестная модель или видео, модель, которая не создаёт видео, или character_id, которого нет среди ваших сохранённых персонажей. |
429 | rate_limit_exceeded | В вашей учётной записи уже пять видео в очереди или в рендере, либо достигнут лимит частоты запросов ключа. |
Сообщить о злоупотреблении можно на странице /report.