mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(docs-i18n): translate all documentation into 20 languages
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Додавання суцільнокольорових смуг для відповідності цільовому співвідношенню сторін."
|
||||
i18n_source_hash: b8e17dffc341
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 71994d39b099
|
||||
---
|
||||
|
||||
# Aspect Pad {#aspect-pad}
|
||||
|
||||
Додавайте суцільнокольорові смуги (леттербокс або пілларбокс), щоб вписати відео в цільове співвідношення сторін без обрізання.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/aspect-pad`
|
||||
|
||||
Приймає багаточастинні (multipart) дані форми з відеофайлом та полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| target | string | No | `"9:16"` | Цільове співвідношення сторін: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
|
||||
| color | string | No | `"#000000"` | Шістнадцятковий колір для смуг заповнення (наприклад `"#000000"` для чорного) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/aspect-pad \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"target": "1:1", "color": "#ffffff"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 13200000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Якщо відео вже відповідає цільовому співвідношенню сторін, файл повертається без змін.
|
||||
- Використовуйте `9:16` для вертикальних/портретних форматів соціальних мереж (TikTok, Reels, Shorts).
|
||||
- Для розмитого заповнення замість суцільного кольору використовуйте інструмент Blur Pad.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Генерація файлів субтитрів з аудіодоріжок відео за допомогою ШІ."
|
||||
i18n_source_hash: 35b1e78501ad
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ef1491af47fc
|
||||
---
|
||||
|
||||
# Auto Subtitles {#auto-subtitles}
|
||||
|
||||
Генеруйте файли субтитрів з аудіодоріжки відео за допомогою розпізнавання мовлення на основі ШІ (faster-whisper). Підтримує автовизначення та 10 явних мов.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/auto-subtitles`
|
||||
|
||||
Приймає багаточастинні (multipart) дані форми з відеофайлом та полем JSON `settings`. Це асинхронна кінцева точка - вона одразу повертає `202 Accepted`, а перебіг транслюється через SSE за адресою `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| language | string | No | `"auto"` | Мова мовлення: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
|
||||
| format | string | No | `"srt"` | Вихідний формат субтитрів: `srt`, `vtt` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/auto-subtitles \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"language": "en", "format": "srt"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Це інструмент на основі ШІ, який потребує встановлення набору функцій **transcription**. Якщо набір не встановлено, API повертає `501 Feature Not Installed` з інструкціями щодо його встановлення через адмінінтерфейс.
|
||||
- Мовний варіант `auto` використовує вбудоване визначення мови whisper. Явне вказання мови підвищує точність та швидкість.
|
||||
- SRT є найбільш широко підтримуваним форматом субтитрів. VTT (WebVTT) є стандартом для вебплеєрів відео.
|
||||
- Оновлення перебігу доступні через SSE за адресою `GET /api/v1/jobs/{jobId}/progress` до завершення завдання.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Заповнення смуг розмитою копією відео."
|
||||
i18n_source_hash: 0c72aaefc6de
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 90e2ef531bad
|
||||
---
|
||||
|
||||
# Blur Pad {#blur-pad}
|
||||
|
||||
Впишіть відео в цільове співвідношення сторін, заповнюючи область заповнення розмитою масштабованою копією відео замість суцільнокольорових смуг.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/blur-pad`
|
||||
|
||||
Приймає багаточастинні (multipart) дані форми з відеофайлом та полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| target | string | No | `"16:9"` | Цільове співвідношення сторін: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
|
||||
| blur | number | No | `20` | Сигма гаусового розмиття для фону (2-50) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/blur-pad \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"target": "16:9", "blur": 30}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 14100000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Вищі значення розмиття дають м'якший, абстрактніший фон. Нижчі значення зберігають більше видимих деталей.
|
||||
- Якщо відео вже відповідає цільовому співвідношенню сторін, файл повертається без змін.
|
||||
- Для суцільнокольорового заповнення використовуйте натомість інструмент Aspect Pad.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Назавжди вбудовує субтитри в кадри відео."
|
||||
i18n_source_hash: 2d3111589db0
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 4f03202f912e
|
||||
---
|
||||
|
||||
# Burn Subtitles {#burn-subtitles}
|
||||
|
||||
Назавжди рендерить (жорстко вбудовує) субтитри з файлу SRT, VTT або ASS у кожен кадр відео.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/burn-subtitles`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і файлом субтитрів. Це асинхронний ендпоінт: він одразу повертає `202 Accepted`, а прогрес передається через SSE за адресою `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fontSize | integer | No | `24` | Розмір шрифту субтитрів у пікселях (8-72) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/burn-subtitles \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F "file=@subtitles.srt" \
|
||||
-F 'settings={"fontSize": 28}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Завантажте два файли: перший має бути відео, другий має бути файлом субтитрів (.srt, .vtt або .ass).
|
||||
- Вбудовані субтитри назавжди стають частиною відео, і глядач не може їх вимкнути. Для перемикних субтитрів використовуйте натомість інструмент Embed Subtitles.
|
||||
- Оновлення прогресу доступні через SSE за адресою `GET /api/v1/jobs/{jobId}/progress` до завершення завдання.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Змінює частоту кадрів відео."
|
||||
i18n_source_hash: 2bffbd04a1cb
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d2642d1c519d
|
||||
---
|
||||
|
||||
# Change FPS {#change-fps}
|
||||
|
||||
Змінює частоту кадрів відео на цільове значення в діапазоні від 1 до 120 fps.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/change-fps`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | number | No | `30` | Цільова частота кадрів (1-120) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/change-fps \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"fps": 24}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 10200000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Зниження частоти кадрів відкидає кадри й зменшує розмір файлу. Підвищення дублює кадри, щоб заповнити прогалину, але не додає реальної деталізації руху.
|
||||
- Поширені цільові значення: 24 (кіно), 30 (веб/мовлення), 60 (плавне відтворення).
|
||||
- Аудіодоріжка зберігається з її вихідною частотою дискретизації.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Зменшує розмір відеофайлу з контролем якості."
|
||||
i18n_source_hash: 9cc1f1acf74e
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a3c685346697
|
||||
---
|
||||
|
||||
# Compress Video {#compress-video}
|
||||
|
||||
Зменшує розмір відеофайлу за допомогою налаштовуваної сили стиснення та необов'язкового зменшення роздільної здатності.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/compress-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`. Це асинхронний ендпоінт: він одразу повертає `202 Accepted`, а прогрес передається через SSE за адресою `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| quality | string | No | `"balanced"` | Сила стиснення: `light`, `balanced`, `strong` |
|
||||
| resolution | string | No | `"original"` | Вихідна роздільна здатність: `original`, `1080p`, `720p`, `480p` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/compress-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"quality": "strong", "resolution": "720p"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Пресет `light` зберігає якість, близьку до оригінальної. Пресет `strong` агресивно зменшує розмір файлу за рахунок візуальної точності.
|
||||
- Зменшення роздільної здатності (наприклад, з 4K до 720p) поєднується зі стисненням для значного зменшення розміру.
|
||||
- Оновлення прогресу доступні через SSE за адресою `GET /api/v1/jobs/{jobId}/progress` до завершення завдання.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Конвертує відео між MP4, MOV, WebM, AVI та MKV."
|
||||
i18n_source_hash: 8f9e6418b1c6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 4ba1d103b4d3
|
||||
---
|
||||
|
||||
# Convert Video {#convert-video}
|
||||
|
||||
Конвертує відео між форматами MP4, MOV, WebM, AVI та MKV із налаштовуваними пресетами якості.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/convert-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`. Це асинхронний ендпоінт: він одразу повертає `202 Accepted`, а прогрес передається через SSE за адресою `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | No | `"mp4"` | Вихідний формат: `mp4`, `mov`, `webm`, `avi`, `mkv` |
|
||||
| quality | string | No | `"balanced"` | Пресет якості: `high`, `balanced`, `small` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/convert-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"format": "webm", "quality": "balanced"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Пресет якості `high` дає найкращу візуальну точність, але більші файли. Пресет `small` агресивно стискає для мінімального розміру файлу.
|
||||
- Вихід у WebM використовує кодування VP9. MP4 і MOV використовують H.264. AVI та MKV доступні для застарілих або архівних робочих процесів.
|
||||
- Оновлення прогресу доступні через SSE за адресою `GET /api/v1/jobs/{jobId}/progress` до завершення завдання.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Обрізає ділянку з відео."
|
||||
i18n_source_hash: fab11f71a202
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: bbc443a72186
|
||||
---
|
||||
|
||||
# Crop Video {#crop-video}
|
||||
|
||||
Обрізає прямокутну ділянку з відео, задаючи розмір і положення ділянки.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/crop-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | Yes | - | Ширина ділянки обрізання в пікселях (мінімум 16) |
|
||||
| height | integer | Yes | - | Висота ділянки обрізання в пікселях (мінімум 16) |
|
||||
| x | integer | No | `0` | Горизонтальне зміщення від верхнього лівого кута |
|
||||
| y | integer | No | `0` | Вертикальне зміщення від верхнього лівого кута |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/crop-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"width": 640, "height": 480, "x": 100, "y": 50}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 5200000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Ділянка обрізання має вміщатися в розміри відео. Якщо `x + width` або `y + height` перевищує розмір джерела, запит повертає помилку 400.
|
||||
- Мінімальний розмір обрізання - 16x16 пікселів.
|
||||
- Розміри округлюються до парних чисел, як цього вимагає більшість відеокодеків.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Додає доріжку субтитрів у відеоконтейнер."
|
||||
i18n_source_hash: be272730fff5
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e2900a849e17
|
||||
---
|
||||
|
||||
# Embed Subtitles {#embed-subtitles}
|
||||
|
||||
Додає файл субтитрів у відеоконтейнер як програмну доріжку субтитрів, яку глядачі можуть вмикати чи вимикати.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/embed-subtitles`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і файлом субтитрів, а також полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| language | string | No | `"eng"` | Код мови за ISO 639-2/B (3 малі літери, наприклад `"eng"`, `"fra"`, `"deu"`) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/embed-subtitles \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F "file=@subtitles.srt" \
|
||||
-F 'settings={"language": "fra"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 12520000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Завантажте два файли: перший має бути відео, другий має бути файлом субтитрів (.srt, .vtt або .ass).
|
||||
- Вбудовані (програмні) субтитри глядач може перемикати у своєму медіапрогравачі. Для постійно видимих субтитрів використовуйте натомість інструмент Burn Subtitles.
|
||||
- Код мови зберігається як метадані в контейнері й допомагає медіапрогравачам маркувати доріжку субтитрів.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Витягує аудіодоріжку з відео."
|
||||
i18n_source_hash: f5b8330a5f89
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 1ac630bdf2fd
|
||||
---
|
||||
|
||||
# Extract Audio {#extract-audio}
|
||||
|
||||
Витягує аудіодоріжку з відеофайлу й зберігає її як MP3, WAV, M4A або OGG.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/extract-audio`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | No | `"mp3"` | Вихідний формат аудіо: `mp3`, `wav`, `m4a`, `ogg` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/extract-audio \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"format": "mp3"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp3",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 3200000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Якщо у відео немає аудіодоріжки, запит повертає помилку 400.
|
||||
- MP3 із втратами, але широко сумісний. WAV без втрат, але великий. M4A (AAC) забезпечує гарний баланс якості та розміру. OGG доступний для робочих процесів із відкритими кодеками.
|
||||
- Коли вихідне аудіо вже в AAC, а вихідний формат M4A, аудіопотік копіюється без перекодування.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Витягує доріжку субтитрів із відео як файл SRT."
|
||||
i18n_source_hash: 48db860f6676
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 1a56be3f8b20
|
||||
---
|
||||
|
||||
# Extract Subtitles {#extract-subtitles}
|
||||
|
||||
Витягує вбудовану доріжку субтитрів із відеоконтейнера й завантажує її як файл SRT.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/extract-subtitles`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом. Цей інструмент не має налаштувань.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Цей інструмент не має параметрів. Він витягує першу знайдену доріжку субтитрів у відеоконтейнері.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/extract-subtitles \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.srt",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 4500
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Відео має містити вбудовану доріжку субтитрів. Якщо доріжку субтитрів не знайдено, запит повертає помилку 400.
|
||||
- Якщо відео має кілька доріжок субтитрів, витягується перша.
|
||||
- Вихідний формат - SRT, незалежно від оригінального формату субтитрів у контейнері.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Конвертує анімований GIF у відео MP4, WebM або MOV."
|
||||
i18n_source_hash: c3737b31146d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: cb1eee881be8
|
||||
---
|
||||
|
||||
# GIF to Video {#gif-to-video}
|
||||
|
||||
Конвертує анімований GIF у компактний відеофайл MP4, WebM або MOV.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/gif-to-video`
|
||||
|
||||
Приймає дані форми multipart із файлом GIF і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | No | `"mp4"` | Вихідний формат: `mp4`, `webm`, `mov` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/gif-to-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@animation.gif" \
|
||||
-F 'settings={"format": "mp4"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/animation.mp4",
|
||||
"originalSize": 8500000,
|
||||
"processedSize": 950000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Конвертація GIF у відео зазвичай зменшує розмір файлу на 80-90%, зберігаючи ту саму візуальну якість.
|
||||
- Приймаються лише анімовані файли GIF. Для статичних зображень слід використовувати інструмент Convert для зображень.
|
||||
- MP4 і MOV використовують кодування H.264, WebM використовує VP9.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Перетворює набір зображень на відео-слайдшоу."
|
||||
i18n_source_hash: 2c6f183feb6d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: efae969c6890
|
||||
---
|
||||
|
||||
# Images to Video {#images-to-video}
|
||||
|
||||
Перетворює набір зображень на відео-слайдшоу з налаштовуваною тривалістю на зображення, роздільною здатністю та частотою кадрів.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/images-to-video`
|
||||
|
||||
Приймає дані форми multipart із двома або більше файлами зображень і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| secondsPerImage | number | No | `2` | Тривалість показу кожного зображення в секундах (0.5-10) |
|
||||
| resolution | string | No | `"720p"` | Вихідна роздільна здатність: `1080p`, `720p`, `square` |
|
||||
| fps | integer | No | `30` | Вихідна частота кадрів (10-60) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/images-to-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@slide1.jpg" \
|
||||
-F "file=@slide2.jpg" \
|
||||
-F "file=@slide3.jpg" \
|
||||
-F "file=@slide4.jpg" \
|
||||
-F 'settings={"secondsPerImage": 3, "resolution": "1080p"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/slideshow.mp4",
|
||||
"originalSize": 3500000,
|
||||
"processedSize": 1200000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Приймає 2-60 файлів зображень на запит. Зображення з'являються у відео в порядку завантаження.
|
||||
- Зображення масштабуються й доповнюються полями, щоб вміститися в цільову роздільну здатність зі збереженням співвідношення сторін.
|
||||
- Опція роздільної здатності `square` створює відео 1080x1080, зручне для соціальних мереж.
|
||||
- Вихідний формат завжди MP4 (H.264).
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Об'єднує кілька відеокліпів в один файл."
|
||||
i18n_source_hash: 90463dfbb580
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 9b1aee2b28e1
|
||||
---
|
||||
|
||||
# Merge Videos {#merge-videos}
|
||||
|
||||
Об'єднує кілька відеокліпів в один файл MP4. Усі вхідні файли приводяться до роздільної здатності першого відео та 30 fps.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/merge-videos`
|
||||
|
||||
Приймає дані форми multipart із двома або більше відеофайлами. Це асинхронний ендпоінт: він одразу повертає `202 Accepted`, а прогрес передається через SSE за адресою `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Цей інструмент не має параметрів налаштувань. Завантажте 2-10 відеофайлів як кілька частин `file`.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/merge-videos \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@intro.mp4" \
|
||||
-F "file=@main.mp4" \
|
||||
-F "file=@outro.mp4"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Кліпи об'єднуються в порядку їхнього завантаження.
|
||||
- Усі кліпи перекодовуються для відповідності роздільній здатності першого кліпа, частоті кадрів (30 fps) і кодеку (H.264). Невідповідні вхідні файли автоматично приводяться до єдиного вигляду.
|
||||
- Приймає 2-10 відеофайлів на запит.
|
||||
- Оновлення прогресу доступні через SSE за адресою `GET /api/v1/jobs/{jobId}/progress` до завершення завдання.
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Видаляє аудіодоріжку з відео."
|
||||
i18n_source_hash: 9a0c60bbcaa3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 53b9bf84d469
|
||||
---
|
||||
|
||||
# Mute Video {#mute-video}
|
||||
|
||||
Видаляє аудіодоріжку з відео, залишаючи лише візуальний потік.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/mute-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом. Цей інструмент не має налаштувань.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Цей інструмент не має параметрів. Він видаляє аудіодоріжку із завантаженого відео.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/mute-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 8900000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Відеопотік копіюється без перекодування, тому втрати якості немає.
|
||||
- Якщо вхідне відео не має аудіодоріжки, файл повертається без змін.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Замінює аудіодоріжку відео іншим файлом."
|
||||
i18n_source_hash: fabc2a953103
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e6e3c8690f9b
|
||||
---
|
||||
|
||||
# Replace Audio {#replace-audio}
|
||||
|
||||
Замінює аудіодоріжку відео аудіофайлом. Завантажте і відео, і аудіофайл.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/replace-audio`
|
||||
|
||||
Приймає дані форми multipart рівно з двома файлами: відеофайлом, за яким іде аудіофайл.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Цей інструмент не має параметрів налаштувань. Завантажте відеофайл і аудіофайл як дві частини `file`.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/replace-audio \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F "file=@voiceover.mp3"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 13100000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Треба завантажити рівно два файли: перший має бути відео, другий має бути аудіофайлом.
|
||||
- Якщо аудіофайл довший за відео, він обрізається до тривалості відео. Якщо коротший, решта відео відтворюється в тиші.
|
||||
- Відеопотік копіюється без перекодування, тому втрати якості відео немає.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "Масштабує відео до нової роздільної здатності або пресетного розміру."
|
||||
i18n_source_hash: bb1f67871fea
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d8c1f289668b
|
||||
---
|
||||
|
||||
# Resize Video {#resize-video}
|
||||
|
||||
Масштабує відео до нової роздільної здатності, використовуючи власні піксельні розміри або стандартний пресет.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/resize-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | No | - | Цільова ширина в пікселях (16-7680) |
|
||||
| height | integer | No | - | Цільова висота в пікселях (16-4320) |
|
||||
| preset | string | No | `"custom"` | Пресет роздільної здатності: `custom`, `2160p`, `1440p`, `1080p`, `720p`, `480p`, `360p` |
|
||||
|
||||
Коли `preset` дорівнює `"custom"`, має бути вказано принаймні одне з `width` або `height`. Інший вимір масштабується пропорційно.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/resize-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"preset": "720p"}'
|
||||
```
|
||||
|
||||
Змінити розмір до власних вимірів:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/resize-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"width": 1280, "height": 720}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 25000000,
|
||||
"processedSize": 8500000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Значення пресетів відповідають стандартним висотам (наприклад, `720p` = 1280x720, `1080p` = 1920x1080). Ширина масштабується пропорційно до співвідношення сторін джерела.
|
||||
- Розміри округлюються до парних чисел, як цього вимагає більшість відеокодеків.
|
||||
- Максимальна підтримувана роздільна здатність - 7680x4320 (8K UHD).
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Відтворює відеокліп у зворотному напрямку."
|
||||
i18n_source_hash: 98226f4e092d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: fb06e79e27dd
|
||||
---
|
||||
|
||||
# Reverse Video {#reverse-video}
|
||||
|
||||
Відтворює відеокліп у зворотному напрямку. Аудіодоріжка також реверсується.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/reverse-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом. Цей інструмент не має налаштувань.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Цей інструмент не має параметрів. Він реверсує все відео.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/reverse-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 12600000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Обмежено кліпами тривалістю до 5 хвилин. Довші відео відхиляються з помилкою 400.
|
||||
- Реверсуються і відео-, і аудіодоріжки. Щоб реверсувати відео без аудіо, спершу заглушіть його.
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
description: "Обертає або віддзеркалює відео."
|
||||
i18n_source_hash: cf9620ca62c7
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 986c5b07052b
|
||||
---
|
||||
|
||||
# Rotate Video {#rotate-video}
|
||||
|
||||
Обертає відео на 90, 180 або 270 градусів чи віддзеркалює його горизонтально або вертикально.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/rotate-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| transform | string | Yes | - | Перетворення для застосування: `cw90`, `ccw90`, `180`, `hflip`, `vflip` |
|
||||
|
||||
### Transform Values {#transform-values}
|
||||
|
||||
- **cw90** - Обернути на 90 градусів за годинниковою стрілкою
|
||||
- **ccw90** - Обернути на 90 градусів проти годинникової стрілки
|
||||
- **180** - Обернути на 180 градусів
|
||||
- **hflip** - Віддзеркалити горизонтально (дзеркало)
|
||||
- **vflip** - Віддзеркалити вертикально
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/rotate-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"transform": "cw90"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 12400000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Обертання на 90 або 270 градусів міняє місцями ширину й висоту відео.
|
||||
- Операції віддзеркалення (hflip, vflip) не змінюють розміри відео.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Зменшує тремтіння камери за допомогою двопрохідної стабілізації."
|
||||
i18n_source_hash: ec908e91a752
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d10b375e1bda
|
||||
---
|
||||
|
||||
# Stabilize Video {#stabilize-video}
|
||||
|
||||
Зменшує тремтіння камери в зйомці з рук за допомогою двопрохідної стабілізації vidstab у FFmpeg.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/stabilize-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`. Це асинхронний ендпоінт: він одразу повертає `202 Accepted`, а прогрес передається через SSE за адресою `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| smoothing | integer | No | `15` | Розмір вікна згладжування в кадрах (5-60). Вищі значення дають плавніший рух |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/stabilize-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"smoothing": 30}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Стабілізація - це двопрохідний процес: перший прохід аналізує рух камери, а другий застосовує корекцію. Це займає приблизно вдвічі більше часу, ніж однопрохідні інструменти.
|
||||
- Вищі значення згладжування усувають більше тремтіння, але можуть спричинити невелике збільшення з обрізанням по краях.
|
||||
- Оновлення прогресу доступні через SSE за адресою `GET /api/v1/jobs/{jobId}/progress` до завершення завдання.
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
description: "Вирізає кліп із відео, задаючи час початку та кінця."
|
||||
i18n_source_hash: c84481641979
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 330238137e74
|
||||
---
|
||||
|
||||
# Trim Video {#trim-video}
|
||||
|
||||
Вирізає кліп із відео, задаючи час початку та кінця в секундах, з можливістю покадрово точного розрізання.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/trim-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| startS | number | No | `0` | Час початку в секундах (має бути >= 0) |
|
||||
| endS | number | Yes | - | Час кінця в секундах (має бути після startS) |
|
||||
| precise | boolean | No | `false` | Перекодувати для покадрово точного розрізання замість пошуку за ключовими кадрами |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/trim-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"startS": 5, "endS": 30, "precise": true}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 4200000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Коли `precise` дорівнює `false` (за замовчуванням), інструмент використовує пошук за ключовими кадрами, який швидкий, але може починатися на кілька кадрів раніше запитаного часу.
|
||||
- Встановлення `precise` у `true` перекодовує сегмент для точних меж кадрів, але триває довше.
|
||||
- Значення `endS` має бути більшим за `startS`.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Регулює яскравість, контраст, насиченість і гаму відео."
|
||||
i18n_source_hash: 40483b79d44b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: afe49a72f359
|
||||
---
|
||||
|
||||
# Video Color {#video-color}
|
||||
|
||||
Регулює яскравість, контраст, насиченість і гамма-корекцію відео.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-color`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| brightness | number | No | `0` | Регулювання яскравості (-1 до 1) |
|
||||
| contrast | number | No | `1` | Множник контрасту (0-4) |
|
||||
| saturation | number | No | `1` | Множник насиченості (0-3). Встановіть 0 для відтінків сірого |
|
||||
| gamma | number | No | `1` | Гамма-корекція (0.1-10) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/video-color \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"brightness": 0.1, "contrast": 1.2, "saturation": 1.5}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 12300000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Усі значення за замовчуванням (яскравість 0, контраст 1, насиченість 1, гама 1) не дають жодних змін.
|
||||
- Встановлення насиченості в `0` перетворює відео на відтінки сірого.
|
||||
- Значення гами нижче 1 висвітлюють тіні, тоді як значення вище 1 їх затемнюють.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Нормалізує гучність аудіо відео до стандарту мовлення."
|
||||
i18n_source_hash: 078f1e819c9a
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 5fceeac77e8e
|
||||
---
|
||||
|
||||
# Normalize Audio {#normalize-audio}
|
||||
|
||||
Нормалізує гучність аудіо відео до стандарту гучності мовлення EBU R128.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-loudnorm`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом. Цей інструмент не має налаштувань.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Цей інструмент не має параметрів. Він застосовує нормалізацію гучності EBU R128 до аудіодоріжки.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/video-loudnorm \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 12500000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Використовує фільтр FFmpeg `loudnorm` з цільовою інтегральною гучністю -16 LUFS, істинним піком -1.5 dBTP і діапазоном гучності 11 LU (стандарт мовлення EBU R128).
|
||||
- Частота дискретизації вихідного аудіо зберігається у вихідному файлі.
|
||||
- Якщо у відео немає аудіодоріжки, запит повертає помилку 400.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Видаляє метадані з відео та повідомляє, що було знайдено."
|
||||
i18n_source_hash: 69621bfb98ca
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c80552678ac9
|
||||
---
|
||||
|
||||
# Clean Video Metadata {#clean-video-metadata}
|
||||
|
||||
Видаляє метадані (дата створення, GPS-координати, модель камери, теги програмного забезпечення тощо) з відео та повідомляє, що було видалено.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-metadata`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом. Цей інструмент не має налаштувань.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Цей інструмент не має параметрів. Він видаляє всі метадані з відеоконтейнера.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/video-metadata \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip_clean.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 12480000,
|
||||
"metadata": {
|
||||
"container": "mov,mp4,m4a,3gp,3g2,mj2",
|
||||
"durationS": 42.5,
|
||||
"bitrateKbps": 2350,
|
||||
"streams": [
|
||||
{ "type": "video", "codec": "h264", "width": 1920, "height": 1080 },
|
||||
{ "type": "audio", "codec": "aac", "sampleRate": 48000 }
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Видалені метадані включають мітки часу створення, дані GPS/розташування, інформацію про камеру/пристрій і теги програмного забезпечення.
|
||||
- Відео- та аудіопотоки копіюються без перекодування, тому втрати якості немає.
|
||||
- Корисно для приватності перед публічним поширенням відео.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Прискорює або сповільнює відео."
|
||||
i18n_source_hash: 98dfc75c0507
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 3f27161c0020
|
||||
---
|
||||
|
||||
# Video Speed {#video-speed}
|
||||
|
||||
Прискорює або сповільнює відео з можливістю збереження висоти тону аудіо.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-speed`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| factor | number | No | `2` | Множник швидкості (0.25-4). Значення вище 1 прискорюють, нижче 1 сповільнюють |
|
||||
| keepPitch | boolean | No | `true` | Зберігати висоту тону аудіо при зміні швидкості |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/video-speed \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"factor": 0.5, "keepPitch": true}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 24800000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Множник `2` подвоює швидкість відтворення (удвічі скорочує тривалість). Множник `0.5` удвічі сповільнює відтворення (подвоює тривалість).
|
||||
- Коли `keepPitch` дорівнює `true`, аудіо розтягується в часі так, що голоси звучать природно. Коли `false`, висота тону зміщується пропорційно швидкості.
|
||||
- Допустимий діапазон - від 0.25x до 4x.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "Витягує кадри з відео як ZIP-архів зображень."
|
||||
i18n_source_hash: b06f038dafb3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 73b6293120c3
|
||||
---
|
||||
|
||||
# Video to Frames {#video-to-frames}
|
||||
|
||||
Витягує окремі кадри з відео й завантажує їх як ZIP-архів зображень PNG або JPG.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-frames`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | No | `"all"` | Режим витягування: `all`, `nth`, `timestamps` |
|
||||
| n | integer | No | `10` | Витягувати кожен N-й кадр (2-1000). Використовується лише коли режим `"nth"` |
|
||||
| timestamps | string | No | `""` | Мітки часу в секундах через кому. Обов'язково, коли режим `"timestamps"` |
|
||||
| format | string | No | `"png"` | Формат зображення для витягнутих кадрів: `png`, `jpg` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
Витягнути кожен 30-й кадр як JPG:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/video-to-frames \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"mode": "nth", "n": 30, "format": "jpg"}'
|
||||
```
|
||||
|
||||
Витягнути кадри за конкретними мітками часу:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/video-to-frames \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"mode": "timestamps", "timestamps": "1.5,5,12.3"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip-frames.zip",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 45000000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Режим `all` витягує кожен кадр і може створювати дуже великі ZIP-файли для довгих відео. Для вибіркового витягування використовуйте режим `nth` або `timestamps`.
|
||||
- PNG зберігає повну якість, але створює більші файли. JPG менший, але з втратами.
|
||||
- Відповідь завантажується як ZIP-архів, що містить послідовно пронумеровані файли зображень.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Перетворює відеокліп на анімований GIF."
|
||||
i18n_source_hash: f729dde8cd55
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: df97160560c7
|
||||
---
|
||||
|
||||
# Video to GIF {#video-to-gif}
|
||||
|
||||
Перетворює відеокліп на анімований GIF із налаштовуваною частотою кадрів, шириною, часом початку та тривалістю.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-gif`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`. Це асинхронний ендпоінт: він одразу повертає `202 Accepted`, а прогрес передається через SSE за адресою `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | integer | No | `12` | Вихідна частота кадрів (1-30) |
|
||||
| width | integer | No | `480` | Вихідна ширина в пікселях (64-1280). Висота масштабується пропорційно |
|
||||
| startS | number | No | `0` | Час початку в секундах (має бути >= 0) |
|
||||
| durationS | number | No | `5` | Тривалість у секундах (більше 0, максимум 60) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/video-to-gif \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"fps": 15, "width": 320, "startS": 2, "durationS": 8}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Нижчі значення `fps` і `width` дають менші файли GIF. GIF шириною 480px при 12 fps зазвичай є гарним балансом.
|
||||
- Максимальна тривалість - 60 секунд. Довші кліпи дають дуже великі файли.
|
||||
- Оновлення прогресу доступні через SSE за адресою `GET /api/v1/jobs/{jobId}/progress` до завершення завдання.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Конвертує відеокліп в анімоване зображення WebP."
|
||||
i18n_source_hash: 7b1a22459bd1
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 9ae05b03c6a3
|
||||
---
|
||||
|
||||
# Video to WebP {#video-to-webp}
|
||||
|
||||
Конвертує відеокліп в анімоване зображення WebP із налаштовуваною частотою кадрів, шириною та якістю.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-webp`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | integer | No | `12` | Вихідна частота кадрів (1-30) |
|
||||
| width | integer | No | `480` | Вихідна ширина в пікселях (16-1920). Висота масштабується пропорційно |
|
||||
| quality | integer | No | `75` | Якість стиснення WebP (1-100) |
|
||||
| loop | boolean | No | `true` | Зациклити анімацію |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/video-to-webp \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"fps": 15, "width": 640, "quality": 80}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.webp",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 2800000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Анімований WebP створює менші файли, ніж GIF, із кращою підтримкою кольорів (24-бітна проти 8-бітної палітри).
|
||||
- Нижчі значення `quality` дають менші файли за рахунок візуальної точності.
|
||||
- Встановіть `loop` у `false` для анімацій, які мають відтворитися один раз і зупинитися.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
description: "Вбудовує текстовий водяний знак у кадри відео."
|
||||
i18n_source_hash: 937bb075b894
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: f08b6357a73a
|
||||
---
|
||||
|
||||
# Watermark Video {#watermark-video}
|
||||
|
||||
Вбудовує текстовий водяний знак у кожен кадр відео з налаштовуваним положенням, розміром, непрозорістю та кольором.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/watermark-video`
|
||||
|
||||
Приймає дані форми multipart із відеофайлом і полем JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Yes | - | Текст водяного знака (1-200 символів) |
|
||||
| position | string | No | `"br"` | Положення на кадрі: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
|
||||
| fontSize | integer | No | `36` | Розмір шрифту в пікселях (8-120) |
|
||||
| opacity | number | No | `0.5` | Непрозорість водяного знака (0.05-1) |
|
||||
| color | string | No | `"#ffffff"` | Шістнадцятковий колір тексту (наприклад, `"#ffffff"`) |
|
||||
|
||||
### Position Values {#position-values}
|
||||
|
||||
- **tl** - Зверху ліворуч, **tc** - Зверху по центру, **tr** - Зверху праворуч
|
||||
- **l** - По центру ліворуч, **c** - По центру, **r** - По центру праворуч
|
||||
- **bl** - Знизу ліворуч, **bc** - Знизу по центру, **br** - Знизу праворуч
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/video/watermark-video \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@clip.mp4" \
|
||||
-F 'settings={"text": "PREVIEW", "position": "c", "fontSize": 48, "opacity": 0.3}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
|
||||
"originalSize": 12500000,
|
||||
"processedSize": 12400000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Водяний знак назавжди вбудовується в кадри відео і не може бути видалений після обробки.
|
||||
- Водяний знак використовує шрифт без засічок, вбудований у FFmpeg.
|
||||
- Для водяних знаків із зображень використовуйте натомість інструмент Watermark для зображень.
|
||||
Reference in New Issue
Block a user