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: "Dodaj jednolite kolorowe pasy, aby dopasować do docelowych proporcji obrazu."
|
||||
i18n_source_hash: b8e17dffc341
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 7410d0220c2a
|
||||
---
|
||||
|
||||
# Aspect Pad {#aspect-pad}
|
||||
|
||||
Dodaj jednolite kolorowe pasy typu letterbox lub pillarbox, aby dopasować film do docelowych proporcji obrazu bez przycinania.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/aspect-pad`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo oraz polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| target | string | No | `"9:16"` | Docelowe proporcje obrazu: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
|
||||
| color | string | No | `"#000000"` | Kolor szesnastkowy pasów wypełnienia (np. `"#000000"` dla czerni) |
|
||||
|
||||
## 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}
|
||||
|
||||
- Jeśli film już odpowiada docelowym proporcjom obrazu, plik jest zwracany bez zmian.
|
||||
- Użyj `9:16` dla pionowych/portretowych formatów mediów społecznościowych (TikTok, Reels, Shorts).
|
||||
- Aby uzyskać rozmyte wypełnienie zamiast jednolitego koloru, użyj narzędzia Blur Pad.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Generuj pliki napisów ze ścieżek dźwiękowych filmów za pomocą AI."
|
||||
i18n_source_hash: 35b1e78501ad
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0f22e0c5dfe6
|
||||
---
|
||||
|
||||
# Auto Subtitles {#auto-subtitles}
|
||||
|
||||
Generuj pliki napisów ze ścieżki dźwiękowej filmu za pomocą rozpoznawania mowy opartego na AI (faster-whisper). Obsługuje automatyczne wykrywanie oraz 10 jawnie wskazanych języków.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/auto-subtitles`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo oraz polem JSON `settings`. To punkt końcowy asynchroniczny - zwraca natychmiast `202 Accepted`, a postęp jest strumieniowany przez SSE pod `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| language | string | No | `"auto"` | Język mowy: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
|
||||
| format | string | No | `"srt"` | Format wyjściowy napisów: `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}
|
||||
|
||||
- To narzędzie AI, które wymaga zainstalowania pakietu funkcji **transcription**. Jeśli pakiet nie jest zainstalowany, API zwraca `501 Feature Not Installed` z instrukcjami instalacji przez interfejs administratora.
|
||||
- Opcja języka `auto` używa wbudowanego wykrywania języka whisper. Jawne wskazanie języka poprawia dokładność i szybkość.
|
||||
- SRT jest najszerzej obsługiwanym formatem napisów. VTT (WebVTT) to standard dla internetowych odtwarzaczy wideo.
|
||||
- Aktualizacje postępu są dostępne przez SSE pod `GET /api/v1/jobs/{jobId}/progress` do momentu zakończenia zadania.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Wypełnij pasy rozmytą kopią filmu."
|
||||
i18n_source_hash: 0c72aaefc6de
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 19580016b336
|
||||
---
|
||||
|
||||
# Blur Pad {#blur-pad}
|
||||
|
||||
Dopasuj film do docelowych proporcji obrazu, wypełniając obszar wypełnienia rozmytą, przeskalowaną kopią filmu zamiast jednolitych kolorowych pasów.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/blur-pad`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo oraz polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| target | string | No | `"16:9"` | Docelowe proporcje obrazu: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
|
||||
| blur | number | No | `20` | Sigma rozmycia gaussowskiego dla tła (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}
|
||||
|
||||
- Wyższe wartości rozmycia dają bardziej miękkie, bardziej abstrakcyjne tło. Niższe wartości zachowują więcej widocznych szczegółów.
|
||||
- Jeśli film już odpowiada docelowym proporcjom obrazu, plik jest zwracany bez zmian.
|
||||
- Aby uzyskać jednolite kolorowe wypełnienie, użyj zamiast tego narzędzia Aspect Pad.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Trwałe wtapianie napisów w klatki wideo."
|
||||
i18n_source_hash: 2d3111589db0
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 404b9078bb8e
|
||||
---
|
||||
|
||||
# Burn Subtitles {#burn-subtitles}
|
||||
|
||||
Trwale renderuje (wtapia na stałe) napisy z pliku SRT, VTT lub ASS na każdą klatkę wideo.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/burn-subtitles`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i plikiem napisów. To jest endpoint asynchroniczny - zwraca `202 Accepted` natychmiast, a postęp jest przesyłany strumieniowo przez SSE pod `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fontSize | integer | Nie | `24` | Rozmiar czcionki napisów w pikselach (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}
|
||||
|
||||
- Prześlij dwa pliki: pierwszy musi być wideo, drugi musi być plikiem napisów (.srt, .vtt lub .ass).
|
||||
- Wtopione napisy stają się trwałą częścią wideo i nie mogą zostać wyłączone przez widza. Aby uzyskać przełączalne napisy, użyj zamiast tego narzędzia Embed Subtitles.
|
||||
- Aktualizacje postępu są dostępne przez SSE pod `GET /api/v1/jobs/{jobId}/progress` aż do zakończenia zadania.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Zmiana liczby klatek na sekundę wideo."
|
||||
i18n_source_hash: 2bffbd04a1cb
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0f43c195ee85
|
||||
---
|
||||
|
||||
# Change FPS {#change-fps}
|
||||
|
||||
Zmienia liczbę klatek na sekundę wideo na wartość docelową z zakresu od 1 do 120 fps.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/change-fps`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | number | Nie | `30` | Docelowa liczba klatek na sekundę (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}
|
||||
|
||||
- Obniżenie liczby klatek pomija klatki i zmniejsza rozmiar pliku. Zwiększenie jej powiela klatki, aby wypełnić lukę, ale nie dodaje rzeczywistych szczegółów ruchu.
|
||||
- Typowe wartości docelowe: 24 (kino), 30 (web/transmisja), 60 (płynne odtwarzanie).
|
||||
- Ścieżka audio jest zachowywana z jej oryginalną częstotliwością próbkowania.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Zmniejszenie rozmiaru pliku wideo z kontrolą jakości."
|
||||
i18n_source_hash: 9cc1f1acf74e
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 1feb0f9888e6
|
||||
---
|
||||
|
||||
# Compress Video {#compress-video}
|
||||
|
||||
Zmniejsza rozmiar pliku wideo przy użyciu konfigurowalnej siły kompresji i opcjonalnego zmniejszenia rozdzielczości.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/compress-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`. To jest endpoint asynchroniczny - zwraca `202 Accepted` natychmiast, a postęp jest przesyłany strumieniowo przez SSE pod `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| quality | string | Nie | `"balanced"` | Siła kompresji: `light`, `balanced`, `strong` |
|
||||
| resolution | string | Nie | `"original"` | Rozdzielczość wyjściowa: `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}
|
||||
|
||||
- Ustawienie wstępne `light` zachowuje jakość zbliżoną do oryginalnej. Ustawienie wstępne `strong` agresywnie zmniejsza rozmiar pliku kosztem wierności wizualnej.
|
||||
- Zmniejszenie rozdzielczości (np. z 4K do 720p) łączy się z kompresją, dając znaczną redukcję rozmiaru.
|
||||
- Aktualizacje postępu są dostępne przez SSE pod `GET /api/v1/jobs/{jobId}/progress` aż do zakończenia zadania.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Konwersja wideo między MP4, MOV, WebM, AVI i MKV."
|
||||
i18n_source_hash: 8f9e6418b1c6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d056be982b98
|
||||
---
|
||||
|
||||
# Convert Video {#convert-video}
|
||||
|
||||
Konwertuje wideo między formatami MP4, MOV, WebM, AVI i MKV z konfigurowalnymi ustawieniami wstępnymi jakości.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/convert-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`. To jest endpoint asynchroniczny - zwraca `202 Accepted` natychmiast, a postęp jest przesyłany strumieniowo przez SSE pod `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | Nie | `"mp4"` | Format wyjściowy: `mp4`, `mov`, `webm`, `avi`, `mkv` |
|
||||
| quality | string | Nie | `"balanced"` | Ustawienie wstępne jakości: `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}
|
||||
|
||||
- Ustawienie wstępne jakości `high` zapewnia najlepszą wierność wizualną, ale większe pliki. Ustawienie wstępne `small` agresywnie kompresuje, aby uzyskać minimalny rozmiar pliku.
|
||||
- Wyjście WebM używa kodowania VP9. MP4 i MOV używają H.264. AVI i MKV są dostępne dla starszych lub archiwalnych przepływów pracy.
|
||||
- Aktualizacje postępu są dostępne przez SSE pod `GET /api/v1/jobs/{jobId}/progress` aż do zakończenia zadania.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Wykadrowanie obszaru z wideo."
|
||||
i18n_source_hash: fab11f71a202
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 3a1fe88a7485
|
||||
---
|
||||
|
||||
# Crop Video {#crop-video}
|
||||
|
||||
Kadruje prostokątny obszar z wideo, określając rozmiar i położenie tego obszaru.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/crop-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | Tak | - | Szerokość obszaru kadrowania w pikselach (minimum 16) |
|
||||
| height | integer | Tak | - | Wysokość obszaru kadrowania w pikselach (minimum 16) |
|
||||
| x | integer | Nie | `0` | Przesunięcie poziome od lewego górnego rogu |
|
||||
| y | integer | Nie | `0` | Przesunięcie pionowe od lewego górnego rogu |
|
||||
|
||||
## 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}
|
||||
|
||||
- Obszar kadrowania musi mieścić się w wymiarach wideo. Jeśli `x + width` lub `y + height` przekracza rozmiar źródła, żądanie zwraca błąd 400.
|
||||
- Minimalny rozmiar kadrowania to 16x16 pikseli.
|
||||
- Wymiary są zaokrąglane do liczb parzystych, zgodnie z wymaganiami większości kodeków wideo.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Dołączenie ścieżki napisów do kontenera wideo."
|
||||
i18n_source_hash: be272730fff5
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0e82ac2fb34e
|
||||
---
|
||||
|
||||
# Embed Subtitles {#embed-subtitles}
|
||||
|
||||
Dołącza plik napisów do kontenera wideo jako miękką ścieżkę napisów, którą widzowie mogą włączać i wyłączać.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/embed-subtitles`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i plikiem napisów oraz polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| language | string | Nie | `"eng"` | Kod języka ISO 639-2/B (3 małe litery, np. `"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}
|
||||
|
||||
- Prześlij dwa pliki: pierwszy musi być wideo, drugi musi być plikiem napisów (.srt, .vtt lub .ass).
|
||||
- Osadzone (miękkie) napisy mogą być przełączane przez widza w jego odtwarzaczu multimediów. Aby uzyskać trwale widoczne napisy, użyj zamiast tego narzędzia Burn Subtitles.
|
||||
- Kod języka jest przechowywany jako metadane w kontenerze i pomaga odtwarzaczom multimediów oznaczyć ścieżkę napisów.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Wyodrębnienie ścieżki audio z wideo."
|
||||
i18n_source_hash: f5b8330a5f89
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: b10868e50d7c
|
||||
---
|
||||
|
||||
# Extract Audio {#extract-audio}
|
||||
|
||||
Wyodrębnia ścieżkę audio z pliku wideo i zapisuje ją jako MP3, WAV, M4A lub OGG.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/extract-audio`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | Nie | `"mp3"` | Wyjściowy format audio: `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}
|
||||
|
||||
- Jeśli wideo nie ma ścieżki audio, żądanie zwraca błąd 400.
|
||||
- MP3 jest stratny, ale szeroko kompatybilny. WAV jest bezstratny, ale duży. M4A (AAC) oferuje dobrą równowagę między jakością a rozmiarem. OGG jest dostępny dla przepływów pracy z otwartymi kodekami.
|
||||
- Gdy źródłowe audio jest już w AAC, a format wyjściowy to M4A, strumień audio jest kopiowany bez ponownego kodowania.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Wyodrębnienie ścieżki napisów z wideo jako pliku SRT."
|
||||
i18n_source_hash: 48db860f6676
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ac147ac94c4d
|
||||
---
|
||||
|
||||
# Extract Subtitles {#extract-subtitles}
|
||||
|
||||
Wyodrębnia osadzoną ścieżkę napisów z kontenera wideo i pobiera ją jako plik SRT.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/extract-subtitles`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo. To narzędzie nie ma konfigurowalnych ustawień.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
To narzędzie nie ma parametrów. Wyodrębnia pierwszą ścieżkę napisów znalezioną w kontenerze wideo.
|
||||
|
||||
## 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}
|
||||
|
||||
- Wideo musi zawierać osadzoną ścieżkę napisów. Jeśli nie znaleziono ścieżki napisów, żądanie zwraca błąd 400.
|
||||
- Jeśli wideo ma wiele ścieżek napisów, wyodrębniana jest pierwsza z nich.
|
||||
- Format wyjściowy to SRT, niezależnie od oryginalnego formatu napisów w kontenerze.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Konwersja animowanego GIF na wideo MP4, WebM lub MOV."
|
||||
i18n_source_hash: c3737b31146d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d2dc6f99ecc0
|
||||
---
|
||||
|
||||
# GIF to Video {#gif-to-video}
|
||||
|
||||
Konwertuje animowany GIF na kompaktowy plik wideo MP4, WebM lub MOV.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/gif-to-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem GIF i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | Nie | `"mp4"` | Format wyjściowy: `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}
|
||||
|
||||
- Konwersja GIF na wideo zazwyczaj zmniejsza rozmiar pliku o 80-90%, zachowując tę samą jakość wizualną.
|
||||
- Przyjmowane są tylko animowane pliki GIF. Obrazy statyczne powinny korzystać z narzędzia Convert dla obrazów.
|
||||
- MP4 i MOV używają kodowania H.264, WebM używa VP9.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Utworzenie wideo pokazu slajdów z zestawu obrazów."
|
||||
i18n_source_hash: 2c6f183feb6d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ced4164f687d
|
||||
---
|
||||
|
||||
# Images to Video {#images-to-video}
|
||||
|
||||
Tworzy wideo pokazu slajdów z zestawu obrazów z konfigurowalnym czasem wyświetlania każdego obrazu, rozdzielczością i liczbą klatek na sekundę.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/images-to-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z dwoma lub większą liczbą plików obrazów i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| secondsPerImage | number | Nie | `2` | Czas wyświetlania na obraz w sekundach (0.5-10) |
|
||||
| resolution | string | Nie | `"720p"` | Rozdzielczość wyjściowa: `1080p`, `720p`, `square` |
|
||||
| fps | integer | Nie | `30` | Wyjściowa liczba klatek na sekundę (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}
|
||||
|
||||
- Przyjmuje 2-60 plików obrazów na żądanie. Obrazy pojawiają się w wideo w kolejności przesyłania.
|
||||
- Obrazy są skalowane i uzupełniane, aby dopasować się do docelowej rozdzielczości przy zachowaniu proporcji.
|
||||
- Opcja rozdzielczości `square` tworzy wideo 1080x1080, przydatne w mediach społecznościowych.
|
||||
- Formatem wyjściowym jest zawsze MP4 (H.264).
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Połączenie wielu klipów wideo w jeden plik."
|
||||
i18n_source_hash: 90463dfbb580
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 13d1dfdb695f
|
||||
---
|
||||
|
||||
# Merge Videos {#merge-videos}
|
||||
|
||||
Łączy wiele klipów wideo w jeden plik MP4. Wszystkie wejścia są normalizowane do rozdzielczości pierwszego wideo i 30 fps.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/merge-videos`
|
||||
|
||||
Przyjmuje dane formularza multipart z dwoma lub większą liczbą plików wideo. To jest endpoint asynchroniczny - zwraca `202 Accepted` natychmiast, a postęp jest przesyłany strumieniowo przez SSE pod `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
To narzędzie nie ma parametrów ustawień. Prześlij 2-10 plików wideo jako wiele części `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}
|
||||
|
||||
- Klipy są łączone w kolejności, w jakiej są przesyłane.
|
||||
- Wszystkie klipy są ponownie kodowane, aby dopasować się do rozdzielczości, liczby klatek na sekundę (30 fps) i kodeka (H.264) pierwszego klipu. Niedopasowane wejścia są automatycznie normalizowane.
|
||||
- Przyjmuje 2-10 plików wideo na żądanie.
|
||||
- Aktualizacje postępu są dostępne przez SSE pod `GET /api/v1/jobs/{jobId}/progress` aż do zakończenia zadania.
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Usunięcie ścieżki audio z wideo."
|
||||
i18n_source_hash: 9a0c60bbcaa3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 952891218501
|
||||
---
|
||||
|
||||
# Mute Video {#mute-video}
|
||||
|
||||
Usuwa ścieżkę audio z wideo, pozostawiając tylko strumień wizualny.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/mute-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo. To narzędzie nie ma konfigurowalnych ustawień.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
To narzędzie nie ma parametrów. Usuwa ścieżkę audio z przesłanego wideo.
|
||||
|
||||
## 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}
|
||||
|
||||
- Strumień wideo jest kopiowany bez ponownego kodowania, więc nie ma utraty jakości.
|
||||
- Jeśli wejściowe wideo nie ma ścieżki audio, plik jest zwracany bez zmian.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Zamiana ścieżki audio wideo na inny plik."
|
||||
i18n_source_hash: fabc2a953103
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: cd1d2b22b7b0
|
||||
---
|
||||
|
||||
# Replace Audio {#replace-audio}
|
||||
|
||||
Zamienia ścieżkę audio wideo na plik audio. Prześlij zarówno plik wideo, jak i plik audio.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/replace-audio`
|
||||
|
||||
Przyjmuje dane formularza multipart z dokładnie dwoma plikami: plikiem wideo, po którym następuje plik audio.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
To narzędzie nie ma parametrów ustawień. Prześlij plik wideo i plik audio jako dwie części `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}
|
||||
|
||||
- Muszą zostać przesłane dokładnie dwa pliki: pierwszy musi być wideo, drugi musi być plikiem audio.
|
||||
- Jeśli plik audio jest dłuższy niż wideo, jest przycinany do czasu trwania wideo. Jeśli krótszy, pozostała część wideo odtwarzana jest w ciszy.
|
||||
- Strumień wideo jest kopiowany bez ponownego kodowania, więc nie ma utraty jakości wideo.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "Skalowanie wideo do nowej rozdzielczości lub predefiniowanego rozmiaru."
|
||||
i18n_source_hash: bb1f67871fea
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c1b9109b0f82
|
||||
---
|
||||
|
||||
# Resize Video {#resize-video}
|
||||
|
||||
Skaluje wideo do nowej rozdzielczości przy użyciu niestandardowych wymiarów w pikselach lub standardowego ustawienia wstępnego.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/resize-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | Nie | - | Docelowa szerokość w pikselach (16-7680) |
|
||||
| height | integer | Nie | - | Docelowa wysokość w pikselach (16-4320) |
|
||||
| preset | string | Nie | `"custom"` | Ustawienie wstępne rozdzielczości: `custom`, `2160p`, `1440p`, `1080p`, `720p`, `480p`, `360p` |
|
||||
|
||||
Gdy `preset` ma wartość `"custom"`, należy podać co najmniej jeden z parametrów `width` lub `height`. Drugi wymiar skaluje się proporcjonalnie.
|
||||
|
||||
## 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"}'
|
||||
```
|
||||
|
||||
Zmiana rozmiaru do niestandardowych wymiarów:
|
||||
|
||||
```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}
|
||||
|
||||
- Wartości ustawień wstępnych odpowiadają standardowym wysokościom (np. `720p` = 1280x720, `1080p` = 1920x1080). Szerokość skaluje się proporcjonalnie na podstawie proporcji źródła.
|
||||
- Wymiary są zaokrąglane do liczb parzystych, zgodnie z wymaganiami większości kodeków wideo.
|
||||
- Maksymalna obsługiwana rozdzielczość to 7680x4320 (8K UHD).
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Odtwarzanie klipu wideo od tyłu."
|
||||
i18n_source_hash: 98226f4e092d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: fe9a5e8c26e7
|
||||
---
|
||||
|
||||
# Reverse Video {#reverse-video}
|
||||
|
||||
Odtwarza klip wideo od tyłu. Ścieżka audio również jest odwracana.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/reverse-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo. To narzędzie nie ma konfigurowalnych ustawień.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
To narzędzie nie ma parametrów. Odwraca całe wideo.
|
||||
|
||||
## 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}
|
||||
|
||||
- Ograniczone do klipów o długości do 5 minut. Dłuższe filmy są odrzucane z błędem 400.
|
||||
- Odwracane są zarówno ścieżki wideo, jak i audio. Aby odwrócić wideo bez audio, najpierw je wycisz.
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
description: "Obrót lub odbicie wideo."
|
||||
i18n_source_hash: cf9620ca62c7
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 95bb05115cd2
|
||||
---
|
||||
|
||||
# Rotate Video {#rotate-video}
|
||||
|
||||
Obraca wideo o 90, 180 lub 270 stopni lub odbija je poziomo albo pionowo.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/rotate-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| transform | string | Tak | - | Transformacja do zastosowania: `cw90`, `ccw90`, `180`, `hflip`, `vflip` |
|
||||
|
||||
### Transform Values {#transform-values}
|
||||
|
||||
- **cw90** - Obrót o 90 stopni zgodnie z ruchem wskazówek zegara
|
||||
- **ccw90** - Obrót o 90 stopni przeciwnie do ruchu wskazówek zegara
|
||||
- **180** - Obrót o 180 stopni
|
||||
- **hflip** - Odbicie poziome (lustrzane)
|
||||
- **vflip** - Odbicie pionowe
|
||||
|
||||
## 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}
|
||||
|
||||
- Obroty o 90 lub 270 stopni zamieniają miejscami szerokość i wysokość wideo.
|
||||
- Operacje odbicia (hflip, vflip) nie zmieniają wymiarów wideo.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Redukcja drgań kamery za pomocą dwuprzebiegowej stabilizacji."
|
||||
i18n_source_hash: ec908e91a752
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 348feb9cfae4
|
||||
---
|
||||
|
||||
# Stabilize Video {#stabilize-video}
|
||||
|
||||
Redukuje drgania kamery w nagraniach z ręki przy użyciu dwuprzebiegowej stabilizacji vidstab FFmpeg.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/stabilize-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`. To jest endpoint asynchroniczny - zwraca `202 Accepted` natychmiast, a postęp jest przesyłany strumieniowo przez SSE pod `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| smoothing | integer | Nie | `15` | Rozmiar okna wygładzania w klatkach (5-60). Wyższe wartości dają płynniejszy ruch |
|
||||
|
||||
## 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}
|
||||
|
||||
- Stabilizacja to proces dwuprzebiegowy: pierwszy przebieg analizuje ruch kamery, a drugi przebieg stosuje korekcję. Trwa to około dwa razy dłużej niż w przypadku narzędzi jednoprzebiegowych.
|
||||
- Wyższe wartości wygładzania usuwają więcej drgań, ale mogą wprowadzić lekkie przycięcie powiększenia przy krawędziach.
|
||||
- Aktualizacje postępu są dostępne przez SSE pod `GET /api/v1/jobs/{jobId}/progress` aż do zakończenia zadania.
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
description: "Wycięcie klipu z wideo poprzez podanie czasu początku i końca."
|
||||
i18n_source_hash: c84481641979
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0e157bb50c48
|
||||
---
|
||||
|
||||
# Trim Video {#trim-video}
|
||||
|
||||
Wycina klip z wideo poprzez podanie czasu początku i końca w sekundach, z opcją cięć z dokładnością do klatki.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/trim-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| startS | number | Nie | `0` | Czas początku w sekundach (musi być >= 0) |
|
||||
| endS | number | Tak | - | Czas końca w sekundach (musi być po startS) |
|
||||
| precise | boolean | Nie | `false` | Ponowne kodowanie dla cięć z dokładnością do klatki zamiast wyszukiwania klatki kluczowej |
|
||||
|
||||
## 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}
|
||||
|
||||
- Gdy `precise` ma wartość `false` (domyślnie), narzędzie używa wyszukiwania klatek kluczowych, które jest szybkie, ale może rozpocząć się kilka klatek przed żądanym czasem.
|
||||
- Ustawienie `precise` na `true` powoduje ponowne kodowanie segmentu dla dokładnych granic klatek, ale trwa dłużej.
|
||||
- Wartość `endS` musi być większa niż `startS`.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Dostosowanie jasności, kontrastu, nasycenia i gammy wideo."
|
||||
i18n_source_hash: 40483b79d44b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: bd325aa9972a
|
||||
---
|
||||
|
||||
# Video Color {#video-color}
|
||||
|
||||
Dostosowuje jasność, kontrast, nasycenie i korekcję gammy wideo.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-color`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| brightness | number | Nie | `0` | Dostosowanie jasności (-1 do 1) |
|
||||
| contrast | number | Nie | `1` | Mnożnik kontrastu (0-4) |
|
||||
| saturation | number | Nie | `1` | Mnożnik nasycenia (0-3). Ustaw na 0 dla skali szarości |
|
||||
| gamma | number | Nie | `1` | Korekcja gammy (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}
|
||||
|
||||
- Wszystkie wartości domyślne (jasność 0, kontrast 1, nasycenie 1, gamma 1) nie powodują żadnych zmian.
|
||||
- Ustawienie nasycenia na `0` konwertuje wideo do skali szarości.
|
||||
- Wartości gammy poniżej 1 rozjaśniają cienie, natomiast wartości powyżej 1 je przyciemniają.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Normalizacja głośności audio wideo do standardu transmisyjnego."
|
||||
i18n_source_hash: 078f1e819c9a
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 71fe7bfb8be2
|
||||
---
|
||||
|
||||
# Normalize Audio {#normalize-audio}
|
||||
|
||||
Normalizuje głośność audio wideo do standardu głośności transmisyjnej EBU R128.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-loudnorm`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo. To narzędzie nie ma konfigurowalnych ustawień.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
To narzędzie nie ma parametrów. Stosuje normalizację głośności EBU R128 do ścieżki audio.
|
||||
|
||||
## 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}
|
||||
|
||||
- Używa filtra `loudnorm` FFmpeg celującego w zintegrowaną głośność -16 LUFS z prawdziwym szczytem -1.5 dBTP i zakresem głośności 11 LU (standard transmisyjny EBU R128).
|
||||
- Częstotliwość próbkowania źródłowego audio jest zachowywana na wyjściu.
|
||||
- Jeśli wideo nie ma ścieżki audio, żądanie zwraca błąd 400.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Usunięcie metadanych z wideo i raport, co zostało znalezione."
|
||||
i18n_source_hash: 69621bfb98ca
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 03fe2ffe1858
|
||||
---
|
||||
|
||||
# Clean Video Metadata {#clean-video-metadata}
|
||||
|
||||
Usuwa metadane (datę utworzenia, współrzędne GPS, model kamery, znaczniki oprogramowania itp.) z wideo i raportuje, co zostało usunięte.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-metadata`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo. To narzędzie nie ma konfigurowalnych ustawień.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
To narzędzie nie ma parametrów. Usuwa wszystkie metadane z kontenera wideo.
|
||||
|
||||
## 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}
|
||||
|
||||
- Usuwane metadane obejmują znaczniki czasu utworzenia, dane GPS/lokalizacji, informacje o kamerze/urządzeniu oraz znaczniki oprogramowania.
|
||||
- Strumienie wideo i audio są kopiowane bez ponownego kodowania, więc nie ma utraty jakości.
|
||||
- Przydatne do ochrony prywatności przed publicznym udostępnianiem filmów.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Przyspieszenie lub zwolnienie wideo."
|
||||
i18n_source_hash: 98dfc75c0507
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2aae17ee218e
|
||||
---
|
||||
|
||||
# Video Speed {#video-speed}
|
||||
|
||||
Przyspiesza lub zwalnia wideo z opcją zachowania wysokości dźwięku audio.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-speed`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| factor | number | Nie | `2` | Mnożnik prędkości (0.25-4). Wartości powyżej 1 przyspieszają, poniżej 1 zwalniają |
|
||||
| keepPitch | boolean | Nie | `true` | Zachowanie wysokości dźwięku audio przy zmianie prędkości |
|
||||
|
||||
## 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}
|
||||
|
||||
- Współczynnik `2` podwaja prędkość odtwarzania (o połowę skraca czas trwania). Współczynnik `0.5` o połowę zmniejsza prędkość odtwarzania (podwaja czas trwania).
|
||||
- Gdy `keepPitch` ma wartość `true`, audio jest rozciągane w czasie, aby głosy brzmiały naturalnie. Gdy `false`, wysokość dźwięku zmienia się proporcjonalnie do prędkości.
|
||||
- Prawidłowy zakres to od 0.25x do 4x.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "Wyodrębnienie klatek z wideo jako archiwum ZIP obrazów."
|
||||
i18n_source_hash: b06f038dafb3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 54b7da47b8a4
|
||||
---
|
||||
|
||||
# Video to Frames {#video-to-frames}
|
||||
|
||||
Wyodrębnia pojedyncze klatki z wideo i pobiera je jako archiwum ZIP obrazów PNG lub JPG.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-frames`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | Nie | `"all"` | Tryb wyodrębniania: `all`, `nth`, `timestamps` |
|
||||
| n | integer | Nie | `10` | Wyodrębnianie co N-tej klatki (2-1000). Używane tylko, gdy tryb to `"nth"` |
|
||||
| timestamps | string | Nie | `""` | Znaczniki czasu oddzielone przecinkami w sekundach. Wymagane, gdy tryb to `"timestamps"` |
|
||||
| format | string | Nie | `"png"` | Format obrazu dla wyodrębnionych klatek: `png`, `jpg` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
Wyodrębnij co 30. klatkę jako 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"}'
|
||||
```
|
||||
|
||||
Wyodrębnij klatki w określonych znacznikach czasu:
|
||||
|
||||
```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}
|
||||
|
||||
- Tryb `all` wyodrębnia każdą klatkę i może tworzyć bardzo duże pliki ZIP dla długich filmów. Użyj trybu `nth` lub `timestamps` do selektywnego wyodrębniania.
|
||||
- PNG zachowuje pełną jakość, ale tworzy większe pliki. JPG jest mniejszy, ale stratny.
|
||||
- Odpowiedź pobiera się jako archiwum ZIP zawierające kolejno numerowane pliki obrazów.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Zamiana klipu wideo na animowany GIF."
|
||||
i18n_source_hash: f729dde8cd55
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8aa3d44e47bf
|
||||
---
|
||||
|
||||
# Video to GIF {#video-to-gif}
|
||||
|
||||
Zamienia klip wideo na animowany GIF z konfigurowalną liczbą klatek na sekundę, szerokością, czasem początku i czasem trwania.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-gif`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`. To jest endpoint asynchroniczny - zwraca `202 Accepted` natychmiast, a postęp jest przesyłany strumieniowo przez SSE pod `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | integer | Nie | `12` | Wyjściowa liczba klatek na sekundę (1-30) |
|
||||
| width | integer | Nie | `480` | Szerokość wyjściowa w pikselach (64-1280). Wysokość skaluje się proporcjonalnie |
|
||||
| startS | number | Nie | `0` | Czas początku w sekundach (musi być >= 0) |
|
||||
| durationS | number | Nie | `5` | Czas trwania w sekundach (powyżej 0, maks. 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}
|
||||
|
||||
- Niższe wartości `fps` i `width` tworzą mniejsze pliki GIF. GIF o szerokości 480px przy 12 fps to zazwyczaj dobra równowaga.
|
||||
- Maksymalny czas trwania to 60 sekund. Dłuższe klipy tworzą bardzo duże pliki.
|
||||
- Aktualizacje postępu są dostępne przez SSE pod `GET /api/v1/jobs/{jobId}/progress` aż do zakończenia zadania.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Konwersja klipu wideo na animowany obraz WebP."
|
||||
i18n_source_hash: 7b1a22459bd1
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a2a9bf0ed9d4
|
||||
---
|
||||
|
||||
# Video to WebP {#video-to-webp}
|
||||
|
||||
Konwertuje klip wideo na animowany obraz WebP z konfigurowalną liczbą klatek na sekundę, szerokością i jakością.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-webp`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | integer | Nie | `12` | Wyjściowa liczba klatek na sekundę (1-30) |
|
||||
| width | integer | Nie | `480` | Szerokość wyjściowa w pikselach (16-1920). Wysokość skaluje się proporcjonalnie |
|
||||
| quality | integer | Nie | `75` | Jakość kompresji WebP (1-100) |
|
||||
| loop | boolean | Nie | `true` | Zapętlenie animacji |
|
||||
|
||||
## 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}
|
||||
|
||||
- Animowany WebP tworzy mniejsze pliki niż GIF z lepszą obsługą kolorów (paleta 24-bitowa vs 8-bitowa).
|
||||
- Niższe wartości `quality` tworzą mniejsze pliki kosztem wierności wizualnej.
|
||||
- Ustaw `loop` na `false` dla animacji, które powinny odtworzyć się raz i zatrzymać.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
description: "Wtapianie tekstowego znaku wodnego na klatki wideo."
|
||||
i18n_source_hash: 937bb075b894
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 7bf27232d5ed
|
||||
---
|
||||
|
||||
# Watermark Video {#watermark-video}
|
||||
|
||||
Wtapia tekstowy znak wodny na każdą klatkę wideo z konfigurowalnym położeniem, rozmiarem, przezroczystością i kolorem.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/watermark-video`
|
||||
|
||||
Przyjmuje dane formularza multipart z plikiem wideo i polem JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parametr | Typ | Wymagany | Domyślnie | Opis |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Tak | - | Tekst znaku wodnego (1-200 znaków) |
|
||||
| position | string | Nie | `"br"` | Położenie na klatce: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
|
||||
| fontSize | integer | Nie | `36` | Rozmiar czcionki w pikselach (8-120) |
|
||||
| opacity | number | Nie | `0.5` | Przezroczystość znaku wodnego (0.05-1) |
|
||||
| color | string | Nie | `"#ffffff"` | Kolor tekstu w formacie hex (np. `"#ffffff"`) |
|
||||
|
||||
### Position Values {#position-values}
|
||||
|
||||
- **tl** - Lewy górny, **tc** - Górny środek, **tr** - Prawy górny
|
||||
- **l** - Środkowy lewy, **c** - Środek, **r** - Środkowy prawy
|
||||
- **bl** - Lewy dolny, **bc** - Dolny środek, **br** - Prawy dolny
|
||||
|
||||
## 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}
|
||||
|
||||
- Znak wodny jest trwale renderowany w klatki wideo i nie można go usunąć po przetworzeniu.
|
||||
- Znak wodny używa czcionki bezszeryfowej wbudowanej w FFmpeg.
|
||||
- W przypadku znaków wodnych opartych na obrazie użyj zamiast tego narzędzia Watermark dla obrazów.
|
||||
Reference in New Issue
Block a user