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:
SnapOtter
2026-07-11 13:52:47 +08:00
committed by GitHub
parent 00b651c9f8
commit 4963ab3bbd
3620 changed files with 306134 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
---
description: "Tambahkan bilah berwarna solid agar pas dengan rasio aspek target."
i18n_source_hash: b8e17dffc341
i18n_provenance: human
i18n_output_hash: f4eb09a4ca68
---
# Aspect Pad {#aspect-pad}
Tambahkan bilah letterbox atau pillarbox berwarna solid agar video pas dengan rasio aspek target tanpa memotong.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/aspect-pad`
Menerima data form multipart berisi file video dan sebuah field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| target | string | No | `"9:16"` | Rasio aspek target: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
| color | string | No | `"#000000"` | Warna hex untuk bilah padding (mis. `"#000000"` untuk hitam) |
## 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}
- Jika video sudah cocok dengan rasio aspek target, file dikembalikan tanpa perubahan.
- Gunakan `9:16` untuk format media sosial vertikal/potret (TikTok, Reels, Shorts).
- Untuk padding buram alih-alih warna solid, gunakan alat Blur Pad.
@@ -0,0 +1,48 @@
---
description: "Hasilkan file subtitle dari trek audio video menggunakan AI."
i18n_source_hash: 35b1e78501ad
i18n_provenance: human
i18n_output_hash: 872aa84c28d0
---
# Auto Subtitles {#auto-subtitles}
Hasilkan file subtitle dari trek audio video menggunakan pengenalan suara bertenaga AI (faster-whisper). Mendukung deteksi otomatis dan 10 bahasa eksplisit.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/auto-subtitles`
Menerima data form multipart berisi file video dan sebuah field JSON `settings`. Ini adalah endpoint async - ia mengembalikan `202 Accepted` segera dan progres dialirkan melalui SSE di `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| language | string | No | `"auto"` | Bahasa ucapan: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
| format | string | No | `"srt"` | Format subtitle output: `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}
- Ini adalah alat AI yang membutuhkan feature bundle **transcription** untuk terpasang. Jika bundle tidak terpasang, API mengembalikan `501 Feature Not Installed` dengan instruksi untuk memasangnya melalui UI admin.
- Opsi bahasa `auto` menggunakan deteksi bahasa bawaan whisper. Menentukan bahasa secara eksplisit meningkatkan akurasi dan kecepatan.
- SRT adalah format subtitle yang paling banyak didukung. VTT (WebVTT) adalah standar untuk pemutar video web.
- Pembaruan progres tersedia melalui SSE di `GET /api/v1/jobs/{jobId}/progress` hingga job selesai.
+49
View File
@@ -0,0 +1,49 @@
---
description: "Isi bilah dengan salinan video yang diburamkan."
i18n_source_hash: 0c72aaefc6de
i18n_provenance: human
i18n_output_hash: 8e02d63b8195
---
# Blur Pad {#blur-pad}
Sesuaikan video ke rasio aspek target dengan mengisi area padding menggunakan salinan video yang diburamkan dan diskalakan alih-alih bilah berwarna solid.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/blur-pad`
Menerima data form multipart berisi file video dan sebuah field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| target | string | No | `"16:9"` | Rasio aspek target: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
| blur | number | No | `20` | Sigma blur Gaussian untuk latar belakang (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}
- Nilai blur yang lebih tinggi menghasilkan latar belakang yang lebih lembut dan abstrak. Nilai yang lebih rendah mempertahankan lebih banyak detail yang terlihat.
- Jika video sudah cocok dengan rasio aspek target, file dikembalikan tanpa perubahan.
- Untuk padding berwarna solid, gunakan alat Aspect Pad.
@@ -0,0 +1,47 @@
---
description: "Merender subtitle secara permanen ke dalam frame video."
i18n_source_hash: 2d3111589db0
i18n_provenance: human
i18n_output_hash: 22d4ab26b1cb
---
# Burn Subtitles {#burn-subtitles}
Merender secara permanen (hard-code) subtitle dari file SRT, VTT, atau ASS ke setiap frame video.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/burn-subtitles`
Menerima multipart form data dengan file video dan file subtitle. Ini adalah endpoint asinkron - ia langsung mengembalikan `202 Accepted` dan progres dialirkan melalui SSE di `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fontSize | integer | No | `24` | Ukuran font subtitle dalam piksel (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}
- Unggah dua file: yang pertama harus berupa video, yang kedua harus berupa file subtitle (.srt, .vtt, atau .ass).
- Subtitle yang di-burn menjadi bagian permanen dari video dan tidak dapat dimatikan oleh penonton. Untuk subtitle yang bisa dialihkan, gunakan alat Embed Subtitles sebagai gantinya.
- Pembaruan progres tersedia melalui SSE di `GET /api/v1/jobs/{jobId}/progress` hingga job selesai.
+48
View File
@@ -0,0 +1,48 @@
---
description: "Mengubah frame rate sebuah video."
i18n_source_hash: 2bffbd04a1cb
i18n_provenance: human
i18n_output_hash: e94b80dc805d
---
# Change FPS {#change-fps}
Mengubah frame rate sebuah video ke nilai target antara 1 dan 120 fps.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/change-fps`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fps | number | No | `30` | Frame rate target (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}
- Menurunkan frame rate akan membuang frame dan mengurangi ukuran file. Menaikkannya akan menduplikasi frame untuk mengisi celah tetapi tidak menambahkan detail gerak yang sebenarnya.
- Nilai target umum: 24 (sinema), 30 (web/siaran), 60 (pemutaran mulus).
- Trek audio dipertahankan pada sample rate aslinya.
@@ -0,0 +1,47 @@
---
description: "Memperkecil ukuran file video dengan kontrol kualitas."
i18n_source_hash: 9cc1f1acf74e
i18n_provenance: human
i18n_output_hash: 211aa4a824b9
---
# Compress Video {#compress-video}
Memperkecil ukuran file video menggunakan kekuatan kompresi yang dapat dikonfigurasi dan penurunan resolusi opsional.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/compress-video`
Menerima multipart form data dengan file video dan field JSON `settings`. Ini adalah endpoint asinkron - ia langsung mengembalikan `202 Accepted` dan progres dialirkan melalui SSE di `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| quality | string | No | `"balanced"` | Kekuatan kompresi: `light`, `balanced`, `strong` |
| resolution | string | No | `"original"` | Resolusi keluaran: `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}
- Preset `light` mempertahankan kualitas mendekati aslinya. Preset `strong` mengurangi ukuran file secara agresif dengan mengorbankan ketepatan visual.
- Menurunkan resolusi (mis. dari 4K ke 720p) berkombinasi dengan kompresi untuk pengurangan ukuran yang signifikan.
- Pembaruan progres tersedia melalui SSE di `GET /api/v1/jobs/{jobId}/progress` hingga job selesai.
+47
View File
@@ -0,0 +1,47 @@
---
description: "Mengonversi video antara MP4, MOV, WebM, AVI, dan MKV."
i18n_source_hash: 8f9e6418b1c6
i18n_provenance: human
i18n_output_hash: 964d81cde713
---
# Convert Video {#convert-video}
Mengonversi video antara format MP4, MOV, WebM, AVI, dan MKV dengan preset kualitas yang dapat dikonfigurasi.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/convert-video`
Menerima multipart form data dengan file video dan field JSON `settings`. Ini adalah endpoint asinkron - ia langsung mengembalikan `202 Accepted` dan progres dialirkan melalui SSE di `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| format | string | No | `"mp4"` | Format keluaran: `mp4`, `mov`, `webm`, `avi`, `mkv` |
| quality | string | No | `"balanced"` | Preset kualitas: `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}
- Preset kualitas `high` menghasilkan ketepatan visual terbaik tetapi file lebih besar. Preset `small` mengompresi secara agresif untuk ukuran file minimum.
- Keluaran WebM menggunakan enkoding VP9. MP4 dan MOV menggunakan H.264. AVI dan MKV tersedia untuk alur kerja lama atau pengarsipan.
- Pembaruan progres tersedia melalui SSE di `GET /api/v1/jobs/{jobId}/progress` hingga job selesai.
+51
View File
@@ -0,0 +1,51 @@
---
description: "Memotong sebuah region dari video."
i18n_source_hash: fab11f71a202
i18n_provenance: human
i18n_output_hash: d39bff80ab88
---
# Crop Video {#crop-video}
Memotong sebuah region persegi panjang dari video dengan menentukan ukuran dan posisi region tersebut.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/crop-video`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| width | integer | Yes | - | Lebar region potong dalam piksel (minimum 16) |
| height | integer | Yes | - | Tinggi region potong dalam piksel (minimum 16) |
| x | integer | No | `0` | Offset horizontal dari sudut kiri atas |
| y | integer | No | `0` | Offset vertikal dari sudut kiri atas |
## 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}
- Region potong harus muat di dalam dimensi video. Jika `x + width` atau `y + height` melebihi ukuran sumber, permintaan akan mengembalikan galat 400.
- Ukuran potong minimum adalah 16x16 piksel.
- Dimensi dibulatkan ke angka genap sebagaimana disyaratkan oleh sebagian besar codec video.
@@ -0,0 +1,49 @@
---
description: "Mux sebuah trek subtitle ke dalam kontainer video."
i18n_source_hash: be272730fff5
i18n_provenance: human
i18n_output_hash: da795534962e
---
# Embed Subtitles {#embed-subtitles}
Mux sebuah file subtitle ke dalam kontainer video sebagai trek subtitle lunak yang dapat dinyalakan atau dimatikan oleh penonton.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/embed-subtitles`
Menerima multipart form data dengan file video dan file subtitle, ditambah field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| language | string | No | `"eng"` | Kode bahasa ISO 639-2/B (3 huruf kecil, mis. `"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}
- Unggah dua file: yang pertama harus berupa video, yang kedua harus berupa file subtitle (.srt, .vtt, atau .ass).
- Subtitle tersemat (lunak) dapat dialihkan oleh penonton di pemutar media mereka. Untuk subtitle yang terlihat permanen, gunakan alat Burn Subtitles sebagai gantinya.
- Kode bahasa disimpan sebagai metadata di dalam kontainer dan membantu pemutar media melabeli trek subtitle.
+48
View File
@@ -0,0 +1,48 @@
---
description: "Menarik trek audio keluar dari sebuah video."
i18n_source_hash: f5b8330a5f89
i18n_provenance: human
i18n_output_hash: 0b4eec43daee
---
# Extract Audio {#extract-audio}
Mengekstrak trek audio dari file video dan menyimpannya sebagai MP3, WAV, M4A, atau OGG.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/extract-audio`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| format | string | No | `"mp3"` | Format audio keluaran: `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}
- Jika video tidak memiliki trek audio, permintaan akan mengembalikan galat 400.
- MP3 bersifat lossy tetapi kompatibel secara luas. WAV bersifat lossless tetapi berukuran besar. M4A (AAC) menawarkan keseimbangan yang baik antara kualitas dan ukuran. OGG tersedia untuk alur kerja codec terbuka.
- Ketika audio sumber sudah AAC dan format keluaran adalah M4A, aliran audio disalin tanpa enkoding ulang.
@@ -0,0 +1,45 @@
---
description: "Menarik trek subtitle keluar dari video sebagai file SRT."
i18n_source_hash: 48db860f6676
i18n_provenance: human
i18n_output_hash: e099d1fbddcb
---
# Extract Subtitles {#extract-subtitles}
Mengekstrak trek subtitle tersemat dari kontainer video dan mengunduhnya sebagai file SRT.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/extract-subtitles`
Menerima multipart form data dengan file video. Alat ini tidak memiliki pengaturan yang dapat dikonfigurasi.
## Parameters {#parameters}
Alat ini tidak memiliki parameter. Ia mengekstrak trek subtitle pertama yang ditemukan di dalam kontainer video.
## 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}
- Video harus berisi trek subtitle tersemat. Jika tidak ada trek subtitle yang ditemukan, permintaan akan mengembalikan galat 400.
- Jika video memiliki beberapa trek subtitle, yang pertama akan diekstrak.
- Format keluaran adalah SRT terlepas dari format subtitle asli di dalam kontainer.
+48
View File
@@ -0,0 +1,48 @@
---
description: "Mengonversi GIF animasi menjadi video MP4, WebM, atau MOV."
i18n_source_hash: c3737b31146d
i18n_provenance: human
i18n_output_hash: 835cddac950a
---
# GIF to Video {#gif-to-video}
Mengonversi GIF animasi menjadi file video MP4, WebM, atau MOV yang ringkas.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/gif-to-video`
Menerima multipart form data dengan file GIF dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| format | string | No | `"mp4"` | Format keluaran: `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}
- Mengonversi GIF ke video biasanya mengurangi ukuran file sebesar 80-90% sambil mempertahankan kualitas visual yang sama.
- Hanya file GIF animasi yang diterima. Gambar statis sebaiknya menggunakan alat Convert gambar.
- MP4 dan MOV menggunakan enkoding H.264, WebM menggunakan VP9.
@@ -0,0 +1,54 @@
---
description: "Mengubah sekumpulan gambar menjadi video slideshow."
i18n_source_hash: 2c6f183feb6d
i18n_provenance: human
i18n_output_hash: c0be97a6ba9d
---
# Images to Video {#images-to-video}
Mengubah sekumpulan gambar menjadi video slideshow dengan durasi per gambar, resolusi, dan frame rate yang dapat dikonfigurasi.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/images-to-video`
Menerima multipart form data dengan dua gambar atau lebih dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| secondsPerImage | number | No | `2` | Durasi tampil per gambar dalam detik (0.5-10) |
| resolution | string | No | `"720p"` | Resolusi keluaran: `1080p`, `720p`, `square` |
| fps | integer | No | `30` | Frame rate keluaran (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}
- Menerima 2-60 file gambar per permintaan. Gambar muncul di video sesuai urutan unggahan.
- Gambar diubah ukurannya dan diberi padding agar pas dengan resolusi target sambil mempertahankan rasio aspek.
- Opsi resolusi `square` menghasilkan video 1080x1080, berguna untuk media sosial.
- Format keluaran selalu MP4 (H.264).
+46
View File
@@ -0,0 +1,46 @@
---
description: "Menggabungkan beberapa klip video menjadi satu file."
i18n_source_hash: 90463dfbb580
i18n_provenance: human
i18n_output_hash: 286a874d50e2
---
# Merge Videos {#merge-videos}
Menggabungkan beberapa klip video menjadi satu file MP4. Semua masukan dinormalisasi ke resolusi video pertama dan 30 fps.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/merge-videos`
Menerima multipart form data dengan dua file video atau lebih. Ini adalah endpoint asinkron - ia langsung mengembalikan `202 Accepted` dan progres dialirkan melalui SSE di `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
Alat ini tidak memiliki parameter pengaturan. Unggah 2-10 file video sebagai beberapa bagian `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}
- Klip digabungkan sesuai urutan unggahannya.
- Semua klip dienkode ulang agar sesuai dengan resolusi, frame rate (30 fps), dan codec (H.264) klip pertama. Masukan yang tidak cocok dinormalisasi secara otomatis.
- Menerima 2-10 file video per permintaan.
- Pembaruan progres tersedia melalui SSE di `GET /api/v1/jobs/{jobId}/progress` hingga job selesai.
+44
View File
@@ -0,0 +1,44 @@
---
description: "Menghapus trek audio dari sebuah video."
i18n_source_hash: 9a0c60bbcaa3
i18n_provenance: human
i18n_output_hash: 798031cf35ed
---
# Mute Video {#mute-video}
Menghapus trek audio dari sebuah video, menyisakan hanya aliran visual.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/mute-video`
Menerima multipart form data dengan file video. Alat ini tidak memiliki pengaturan yang dapat dikonfigurasi.
## Parameters {#parameters}
Alat ini tidak memiliki parameter. Ia melepas trek audio dari video yang diunggah.
## 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}
- Aliran video disalin tanpa enkoding ulang, jadi tidak ada kehilangan kualitas.
- Jika video masukan tidak memiliki trek audio, file dikembalikan tanpa perubahan.
+46
View File
@@ -0,0 +1,46 @@
---
description: "Mengganti trek audio sebuah video dengan file lain."
i18n_source_hash: fabc2a953103
i18n_provenance: human
i18n_output_hash: 3c52247a7d87
---
# Replace Audio {#replace-audio}
Mengganti trek audio sebuah video dengan file audio. Unggah baik video maupun file audio.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/replace-audio`
Menerima multipart form data dengan tepat dua file: file video diikuti oleh file audio.
## Parameters {#parameters}
Alat ini tidak memiliki parameter pengaturan. Unggah file video dan file audio sebagai dua bagian `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}
- Tepat dua file harus diunggah: yang pertama harus berupa video, yang kedua harus berupa file audio.
- Jika file audio lebih panjang dari video, ia dipangkas agar sesuai dengan durasi video. Jika lebih pendek, sisa video diputar dalam keheningan.
- Aliran video disalin tanpa enkoding ulang, jadi tidak ada kehilangan kualitas video.
+61
View File
@@ -0,0 +1,61 @@
---
description: "Menskalakan video ke resolusi baru atau ukuran preset."
i18n_source_hash: bb1f67871fea
i18n_provenance: human
i18n_output_hash: a76e54e2071c
---
# Resize Video {#resize-video}
Menskalakan video ke resolusi baru menggunakan dimensi piksel kustom atau preset standar.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/resize-video`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| width | integer | No | - | Lebar target dalam piksel (16-7680) |
| height | integer | No | - | Tinggi target dalam piksel (16-4320) |
| preset | string | No | `"custom"` | Preset resolusi: `custom`, `2160p`, `1440p`, `1080p`, `720p`, `480p`, `360p` |
Ketika `preset` adalah `"custom"`, setidaknya salah satu dari `width` atau `height` harus disediakan. Dimensi lainnya diskalakan secara proporsional.
## 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"}'
```
Ubah ukuran ke dimensi kustom:
```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}
- Nilai preset memetakan ke tinggi standar (mis. `720p` = 1280x720, `1080p` = 1920x1080). Lebar diskalakan secara proporsional dari rasio aspek sumber.
- Dimensi dibulatkan ke angka genap sebagaimana disyaratkan oleh sebagian besar codec video.
- Resolusi maksimum yang didukung adalah 7680x4320 (8K UHD).
+44
View File
@@ -0,0 +1,44 @@
---
description: "Memutar klip video secara terbalik."
i18n_source_hash: 98226f4e092d
i18n_provenance: human
i18n_output_hash: 9288194d9456
---
# Reverse Video {#reverse-video}
Memutar klip video secara terbalik. Trek audio juga dibalik.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/reverse-video`
Menerima multipart form data dengan file video. Alat ini tidak memiliki pengaturan yang dapat dikonfigurasi.
## Parameters {#parameters}
Alat ini tidak memiliki parameter. Ia membalik seluruh video.
## 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}
- Dibatasi hingga klip dengan durasi maksimum 5 menit. Video yang lebih panjang ditolak dengan galat 400.
- Baik trek video maupun audio dibalik. Untuk membalik video tanpa audio, matikan audionya terlebih dahulu.
+55
View File
@@ -0,0 +1,55 @@
---
description: "Memutar atau membalik sebuah video."
i18n_source_hash: cf9620ca62c7
i18n_provenance: human
i18n_output_hash: 1ab72e809197
---
# Rotate Video {#rotate-video}
Memutar video sebesar 90, 180, atau 270 derajat, atau membaliknya secara horizontal maupun vertikal.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/rotate-video`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| transform | string | Yes | - | Transformasi yang diterapkan: `cw90`, `ccw90`, `180`, `hflip`, `vflip` |
### Transform Values {#transform-values}
- **cw90** - Putar 90 derajat searah jarum jam
- **ccw90** - Putar 90 derajat berlawanan arah jarum jam
- **180** - Putar 180 derajat
- **hflip** - Balik secara horizontal (cermin)
- **vflip** - Balik secara vertikal
## 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}
- Rotasi sebesar 90 atau 270 derajat menukar lebar dan tinggi video.
- Operasi balik (hflip, vflip) tidak mengubah dimensi video.
@@ -0,0 +1,46 @@
---
description: "Mengurangi guncangan kamera dengan stabilisasi dua-lintasan."
i18n_source_hash: ec908e91a752
i18n_provenance: human
i18n_output_hash: 74980e750521
---
# Stabilize Video {#stabilize-video}
Mengurangi guncangan kamera pada rekaman genggam menggunakan stabilisasi vidstab dua-lintasan dari FFmpeg.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/stabilize-video`
Menerima multipart form data dengan file video dan field JSON `settings`. Ini adalah endpoint asinkron - ia langsung mengembalikan `202 Accepted` dan progres dialirkan melalui SSE di `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| smoothing | integer | No | `15` | Ukuran jendela penghalusan dalam frame (5-60). Nilai lebih tinggi menghasilkan gerak lebih mulus |
## 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}
- Stabilisasi adalah proses dua-lintasan: lintasan pertama menganalisis gerakan kamera, dan lintasan kedua menerapkan koreksinya. Ini memakan waktu kira-kira dua kali lebih lama daripada alat satu-lintasan.
- Nilai penghalusan lebih tinggi menghilangkan lebih banyak guncangan tetapi dapat menimbulkan sedikit zoom crop di tepian.
- Pembaruan progres tersedia melalui SSE di `GET /api/v1/jobs/{jobId}/progress` hingga job selesai.
+50
View File
@@ -0,0 +1,50 @@
---
description: "Memotong sebuah klip dari video dengan menentukan waktu mulai dan selesai."
i18n_source_hash: c84481641979
i18n_provenance: human
i18n_output_hash: 5155f2376f3d
---
# Trim Video {#trim-video}
Memotong sebuah klip dari video dengan menentukan waktu mulai dan selesai dalam detik, dengan opsi untuk potongan yang akurat per frame.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/trim-video`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| startS | number | No | `0` | Waktu mulai dalam detik (harus >= 0) |
| endS | number | Yes | - | Waktu selesai dalam detik (harus setelah startS) |
| precise | boolean | No | `false` | Enkode ulang untuk potongan yang akurat per frame alih-alih pencarian keyframe |
## 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}
- Ketika `precise` adalah `false` (nilai bawaan), alat menggunakan pencarian keyframe, yang cepat tetapi dapat memulai beberapa frame sebelum waktu yang diminta.
- Menyetel `precise` ke `true` mengenkode ulang segmen untuk batas frame yang tepat, tetapi memakan waktu lebih lama.
- Nilai `endS` harus lebih besar dari `startS`.
+51
View File
@@ -0,0 +1,51 @@
---
description: "Menyesuaikan kecerahan, kontras, saturasi, dan gamma sebuah video."
i18n_source_hash: 40483b79d44b
i18n_provenance: human
i18n_output_hash: 3fd38383e25f
---
# Video Color {#video-color}
Menyesuaikan kecerahan, kontras, saturasi, dan koreksi gamma pada sebuah video.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-color`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| brightness | number | No | `0` | Penyesuaian kecerahan (-1 hingga 1) |
| contrast | number | No | `1` | Pengali kontras (0-4) |
| saturation | number | No | `1` | Pengali saturasi (0-3). Setel ke 0 untuk grayscale |
| gamma | number | No | `1` | Koreksi gamma (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}
- Semua nilai pada nilai bawaannya (brightness 0, contrast 1, saturation 1, gamma 1) tidak menghasilkan perubahan.
- Menyetel saturation ke `0` mengonversi video menjadi grayscale.
- Nilai gamma di bawah 1 mencerahkan bayangan, sementara nilai di atas 1 menggelapkannya.
@@ -0,0 +1,45 @@
---
description: "Menormalkan volume audio video ke standar siaran."
i18n_source_hash: 078f1e819c9a
i18n_provenance: human
i18n_output_hash: 4c658bcf24f2
---
# Normalize Audio {#normalize-audio}
Menormalkan volume audio video ke standar loudness siaran EBU R128.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-loudnorm`
Menerima multipart form data dengan file video. Alat ini tidak memiliki pengaturan yang dapat dikonfigurasi.
## Parameters {#parameters}
Alat ini tidak memiliki parameter. Ia menerapkan normalisasi loudness EBU R128 ke trek 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}
- Menggunakan filter `loudnorm` FFmpeg yang menargetkan loudness terintegrasi -16 LUFS dengan true peak -1.5 dBTP dan rentang loudness 11 LU (standar siaran EBU R128).
- Sample rate audio sumber dipertahankan pada keluaran.
- Jika video tidak memiliki trek audio, permintaan akan mengembalikan galat 400.
@@ -0,0 +1,54 @@
---
description: "Menghapus metadata dari sebuah video dan melaporkan apa yang ditemukan."
i18n_source_hash: 69621bfb98ca
i18n_provenance: human
i18n_output_hash: b141779e166e
---
# Clean Video Metadata {#clean-video-metadata}
Menghapus metadata (tanggal pembuatan, koordinat GPS, model kamera, tag perangkat lunak, dll.) dari sebuah video dan melaporkan apa yang dihapus.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-metadata`
Menerima multipart form data dengan file video. Alat ini tidak memiliki pengaturan yang dapat dikonfigurasi.
## Parameters {#parameters}
Alat ini tidak memiliki parameter. Ia menghapus semua metadata dari kontainer video.
## 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}
- Metadata yang dihapus mencakup stempel waktu pembuatan, data GPS/lokasi, info kamera/perangkat, dan tag perangkat lunak.
- Aliran video dan audio disalin tanpa enkoding ulang, jadi tidak ada kehilangan kualitas.
- Berguna untuk privasi sebelum membagikan video secara publik.
+49
View File
@@ -0,0 +1,49 @@
---
description: "Mempercepat atau memperlambat sebuah video."
i18n_source_hash: 98dfc75c0507
i18n_provenance: human
i18n_output_hash: b42ef4592619
---
# Video Speed {#video-speed}
Mempercepat atau memperlambat sebuah video dengan opsi untuk mempertahankan pitch audio.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-speed`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| factor | number | No | `2` | Pengali kecepatan (0.25-4). Nilai di atas 1 mempercepat, di bawah 1 memperlambat |
| keepPitch | boolean | No | `true` | Mempertahankan pitch audio saat mengubah kecepatan |
## 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}
- Faktor `2` menggandakan kecepatan pemutaran (memangkas durasi setengahnya). Faktor `0.5` memangkas kecepatan pemutaran setengahnya (menggandakan durasi).
- Ketika `keepPitch` adalah `true`, audio direntangkan-waktu agar suara terdengar alami. Ketika `false`, pitch bergeser secara proporsional dengan kecepatan.
- Rentang yang valid adalah 0.25x hingga 4x.
@@ -0,0 +1,62 @@
---
description: "Mengekstrak frame dari video sebagai ZIP berisi gambar."
i18n_source_hash: b06f038dafb3
i18n_provenance: human
i18n_output_hash: 9c215f505e55
---
# Video to Frames {#video-to-frames}
Mengekstrak frame individual dari sebuah video dan mengunduhnya sebagai arsip ZIP berisi gambar PNG atau JPG.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-frames`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| mode | string | No | `"all"` | Mode ekstraksi: `all`, `nth`, `timestamps` |
| n | integer | No | `10` | Ekstrak setiap frame ke-N (2-1000). Hanya digunakan ketika mode adalah `"nth"` |
| timestamps | string | No | `""` | Stempel waktu dalam detik yang dipisahkan koma. Diperlukan ketika mode adalah `"timestamps"` |
| format | string | No | `"png"` | Format gambar untuk frame yang diekstrak: `png`, `jpg` |
## Example Request {#example-request}
Ekstrak setiap frame ke-30 sebagai 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"}'
```
Ekstrak frame pada stempel waktu tertentu:
```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}
- Mode `all` mengekstrak setiap frame dan dapat menghasilkan file ZIP yang sangat besar untuk video panjang. Gunakan mode `nth` atau `timestamps` untuk ekstraksi selektif.
- PNG mempertahankan kualitas penuh tetapi menghasilkan file lebih besar. JPG lebih kecil tetapi lossy.
- Respons diunduh sebagai arsip ZIP yang berisi file gambar bernomor urut.
+49
View File
@@ -0,0 +1,49 @@
---
description: "Mengubah klip video menjadi GIF animasi."
i18n_source_hash: f729dde8cd55
i18n_provenance: human
i18n_output_hash: 2c3a08842c3e
---
# Video to GIF {#video-to-gif}
Mengubah klip video menjadi GIF animasi dengan frame rate, lebar, waktu mulai, dan durasi yang dapat dikonfigurasi.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-gif`
Menerima multipart form data dengan file video dan field JSON `settings`. Ini adalah endpoint asinkron - ia langsung mengembalikan `202 Accepted` dan progres dialirkan melalui SSE di `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fps | integer | No | `12` | Frame rate keluaran (1-30) |
| width | integer | No | `480` | Lebar keluaran dalam piksel (64-1280). Tinggi diskalakan secara proporsional |
| startS | number | No | `0` | Waktu mulai dalam detik (harus >= 0) |
| durationS | number | No | `5` | Durasi dalam detik (di atas 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}
- Nilai `fps` dan `width` yang lebih rendah menghasilkan file GIF lebih kecil. GIF selebar 480px pada 12 fps biasanya merupakan keseimbangan yang baik.
- Durasi maksimum adalah 60 detik. Klip yang lebih panjang menghasilkan file yang sangat besar.
- Pembaruan progres tersedia melalui SSE di `GET /api/v1/jobs/{jobId}/progress` hingga job selesai.
+51
View File
@@ -0,0 +1,51 @@
---
description: "Mengonversi klip video menjadi gambar WebP animasi."
i18n_source_hash: 7b1a22459bd1
i18n_provenance: human
i18n_output_hash: a91d22f8854f
---
# Video to WebP {#video-to-webp}
Mengonversi klip video menjadi gambar WebP animasi dengan frame rate, lebar, dan kualitas yang dapat dikonfigurasi.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-webp`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fps | integer | No | `12` | Frame rate keluaran (1-30) |
| width | integer | No | `480` | Lebar keluaran dalam piksel (16-1920). Tinggi diskalakan secara proporsional |
| quality | integer | No | `75` | Kualitas kompresi WebP (1-100) |
| loop | boolean | No | `true` | Mengulang animasi |
## 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 animasi menghasilkan file lebih kecil daripada GIF dengan dukungan warna lebih baik (palet 24-bit vs 8-bit).
- Nilai `quality` yang lebih rendah menghasilkan file lebih kecil dengan mengorbankan ketepatan visual.
- Setel `loop` ke `false` untuk animasi yang seharusnya diputar sekali lalu berhenti.
@@ -0,0 +1,58 @@
---
description: "Menempelkan watermark teks ke frame video."
i18n_source_hash: 937bb075b894
i18n_provenance: human
i18n_output_hash: 27e0b794e5ec
---
# Watermark Video {#watermark-video}
Menempelkan watermark teks ke setiap frame video dengan posisi, ukuran, opasitas, dan warna yang dapat dikonfigurasi.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/watermark-video`
Menerima multipart form data dengan file video dan field JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| text | string | Yes | - | Teks watermark (1-200 karakter) |
| position | string | No | `"br"` | Posisi pada frame: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
| fontSize | integer | No | `36` | Ukuran font dalam piksel (8-120) |
| opacity | number | No | `0.5` | Opasitas watermark (0.05-1) |
| color | string | No | `"#ffffff"` | Warna heksadesimal untuk teks (mis. `"#ffffff"`) |
### Position Values {#position-values}
- **tl** - Kiri atas, **tc** - Tengah atas, **tr** - Kanan atas
- **l** - Kiri tengah, **c** - Tengah, **r** - Kanan tengah
- **bl** - Kiri bawah, **bc** - Tengah bawah, **br** - Kanan bawah
## 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}
- Watermark dirender secara permanen ke dalam frame video dan tidak dapat dihapus setelah pemrosesan.
- Watermark menggunakan font sans-serif bawaan FFmpeg.
- Untuk watermark gambar, gunakan alat Watermark gambar sebagai gantinya.