Документация API
Llumi Cut — это HTTP-сервис. Вы загружаете медиафайлы, отправляете таймлайн в JSON и скачиваете результат. Здесь кратко описаны поля; полная проверенная схема доступна по адресу /openapi.json в каждой установке.
Аутентификация
У каждой установки свой ключ. Передавайте его в каждом запросе к /v1:
Authorization: Bearer <ваш-ключ>Порядок работы
- Загрузите каждый файл через
POST /v1/assets?kind=image|video|audio, передав файл в теле запроса в двоичном виде. Ответ:{"id": "…"}. - Поставьте монтаж в очередь через
POST /v1/renders, передав таймлайн в JSON. Используйте заголовокIdempotency-Key, чтобы повторный запрос не создал второй рендер. - Опрашивайте
GET /v1/renders/{id}, покаstatusне станетcompleted, затем скачайте каждый файл изresult.files.
Эндпоинты
| Метод | Путь | Что делает |
|---|---|---|
| GET | /health | Состояние сервиса |
| POST | /v1/assets?kind=image|video|audio | Загружает двоичный файл и возвращает его ID |
| POST | /v1/renders | Проверяет таймлайн и ставит его в очередь |
| GET | /v1/renders | Последние 100 рендеров |
| GET | /v1/renders/{id} | Статус, прогресс, события и ошибки |
| POST | /v1/renders/{id}/cancel | Отменяет рендер в очереди или в работе |
| POST | /v1/renders/{id}/retry | Повторяет остановленный рендер |
| DELETE | /v1/renders/{id} | Удаляет остановленный рендер и его файлы |
| GET | /v1/renders/{id}/files/{name} | Скачивает результат |
| POST | /v1/maintenance/purge?older_than_days=N | Удаляет остановленные рендеры старше N дней |
Таймлайн
Обязательны только title, duration и clips. Сумма длительностей планов должна равняться duration.
| Поле | Значения |
|---|---|
duration | 3–600 с |
width · aspect | 640, 1280 или 1920 (длинная сторона) · 16:9, 9:16, 1:1 |
fps | 24 или 30 |
background | Цвет полей вокруг кадра, #RRGGBB |
transition · transition_duration | cut, fade, fadeblack, fadewhite, dissolve, slideleft, slideright, wipeleft, wiperight, smoothleft, smoothright, circleopen, circleclose · 0,1–2 с |
image_motion | none, zoom_in, zoom_out, pan_left, pan_right, auto |
fade_in · fade_out | Плавное появление и затухание всего видео и звука, 0–5 с |
audio_asset_id · pauses | Необязательная основная песня и до десяти пауз цифровой тишины |
Планы (clips[])
| Поле | Значения |
|---|---|
asset_id · duration | Изображение или видео · до 60 с |
trim_start · speed | Секунда начала в исходнике · 0,25–4 |
volume | Собственный звук клипа, 0–2 (0 — без звука) |
fit | contain (с полями) или cover (заполняет кадр с обрезкой) |
freeze · motion | Замораживает первый кадр · движение Ken Burns |
effects | До шести из grayscale, sepia, vintage, noir, warm, cool, blur, sharpen, vignette, invert, mirror, flip |
brightness · contrast · saturation | −0,5–0,5 · 0,3–2 · 0–3 |
transition · transition_duration | Переход от предыдущего плана |
Звук (audio_tracks[])
asset_id, start, trim_start, duration, volume (0–2), fade_in, fade_out, loop и duck. Дорожка с duck: true становится тише примерно на 10 dB, пока звучит песня, голос или звук клипа.
Титры (texts[])
text (до пяти строк), start, end, position (девять позиций) или x/y в долях кадра, size, color, outline_color, outline, box, box_color, box_opacity, font, bold, italic и animation (none, fade, slide_up, slide_left, pop, typewriter).
Слои (overlays[])
asset_id (изображение или видео), start, end, position или x/y, width, height (если заданы оба, область заполняется целиком: разделённый экран и сетки), margin, opacity, trim_start, volume, fade, border и border_color.
Субтитры (captions[])
start, end и text. Экспортируются в SRT и WebVTT, а с burn_subtitles: true впечатываются в изображение.
Результаты
video.mp4 (H.264 + AAC), audio.wav (итоговая звуковая дорожка), song.wav (только при основной песне), subtitles.srt, subtitles.vtt, qc.json (длительность, разрешение, источники звука, предупреждения) и manifest.json.
Ограничения
- Файлы до 250 МБ, изображения до 8192 × 8192, медиафайлы до 610 с.
- До 150 планов, 20 аудиодорожек, 20 слоёв, 100 титров и 500 субтитров.
- Титры, слои и субтитры должны заканчиваться в пределах видео. Переход не может быть длиннее половины любого из соединяемых планов.
- Пути на диске, URL и плейлисты в качестве медиафайлов не принимаются.