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: "목표 화면비에 맞추기 위해 단색 막대를 추가합니다."
i18n_source_hash: b8e17dffc341
i18n_provenance: human
i18n_output_hash: e04bb3e0f318
---
# Aspect Pad {#aspect-pad}
크롭 없이 비디오를 목표 화면비에 맞추기 위해 단색 레터박스 또는 필러박스 막대를 추가합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/aspect-pad`
비디오 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| target | string | No | `"9:16"` | 목표 화면비: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
| color | string | No | `"#000000"` | 패딩 막대의 16진수 색상(예: 검은색은 `"#000000"`) |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/aspect-pad \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"target": "1:1", "color": "#ffffff"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 13200000
}
```
## Notes {#notes}
- 비디오가 이미 목표 화면비와 일치하면 파일이 변경 없이 반환됩니다.
- 세로/인물 모드 소셜 미디어 형식(TikTok, Reels, Shorts)에는 `9:16`을(를) 사용하세요.
- 단색 대신 흐림 패딩을 원하면 Blur Pad 도구를 사용하세요.
@@ -0,0 +1,48 @@
---
description: "AI를 사용하여 비디오 오디오 트랙에서 자막 파일을 생성합니다."
i18n_source_hash: 35b1e78501ad
i18n_provenance: human
i18n_output_hash: 0e0b92a9ab7a
---
# Auto Subtitles {#auto-subtitles}
AI 기반 음성 인식(faster-whisper)을 사용하여 비디오의 오디오 트랙에서 자막 파일을 생성합니다. 자동 감지와 10개의 명시적 언어를 지원합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/auto-subtitles`
비디오 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다. 이는 비동기 엔드포인트로, 즉시 `202 Accepted`을(를) 반환하며 진행 상황은 `GET /api/v1/jobs/{jobId}/progress`의 SSE로 스트리밍됩니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| language | string | No | `"auto"` | 음성 언어: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
| format | string | No | `"srt"` | 출력 자막 형식: `srt`, `vtt` |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/auto-subtitles \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"language": "en", "format": "srt"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
## Notes {#notes}
- 이 도구는 **transcription** 기능 번들이 설치되어 있어야 하는 AI 도구입니다. 번들이 설치되어 있지 않으면 API가 관리자 UI를 통해 설치하라는 안내와 함께 `501 Feature Not Installed`을(를) 반환합니다.
- `auto` 언어 옵션은 whisper에 내장된 언어 감지를 사용합니다. 언어를 명시적으로 지정하면 정확도와 속도가 향상됩니다.
- SRT는 가장 널리 지원되는 자막 형식입니다. VTT(WebVTT)는 웹 비디오 플레이어의 표준입니다.
- 작업이 완료될 때까지 `GET /api/v1/jobs/{jobId}/progress`의 SSE로 진행 상황 업데이트를 확인할 수 있습니다.
+49
View File
@@ -0,0 +1,49 @@
---
description: "비디오의 흐린 복사본으로 막대를 채웁니다."
i18n_source_hash: 0c72aaefc6de
i18n_provenance: human
i18n_output_hash: dad9b1548476
---
# Blur Pad {#blur-pad}
패딩 영역을 단색 막대 대신 흐리게 처리하고 크기를 조정한 비디오 복사본으로 채워 비디오를 목표 화면비에 맞춥니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/blur-pad`
비디오 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| target | string | No | `"16:9"` | 목표 화면비: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
| blur | number | No | `20` | 배경의 가우시안 흐림 sigma(2-50) |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/blur-pad \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"target": "16:9", "blur": 30}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 14100000
}
```
## Notes {#notes}
- 흐림 값이 높을수록 더 부드럽고 추상적인 배경을 생성합니다. 값이 낮을수록 더 많은 디테일이 보입니다.
- 비디오가 이미 목표 화면비와 일치하면 파일이 변경 없이 반환됩니다.
- 단색 패딩을 원하면 Aspect Pad 도구를 대신 사용하세요.
@@ -0,0 +1,47 @@
---
description: "자막을 비디오 프레임에 영구적으로 렌더링합니다."
i18n_source_hash: 2d3111589db0
i18n_provenance: human
i18n_output_hash: efc2c08c878e
---
# Burn Subtitles {#burn-subtitles}
SRT, VTT 또는 ASS 파일의 자막을 비디오의 모든 프레임에 영구적으로 렌더링(하드코딩)합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/burn-subtitles`
비디오 파일과 자막 파일이 담긴 multipart form data를 받습니다. 이 엔드포인트는 비동기입니다. 즉시 `202 Accepted`를 반환하고 진행 상황은 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 스트리밍됩니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fontSize | integer | No | `24` | 자막 글꼴 크기(픽셀, 8-72) |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/burn-subtitles \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F "file=@subtitles.srt" \
-F 'settings={"fontSize": 28}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
## Notes {#notes}
- 파일 두 개를 업로드하세요. 첫 번째는 비디오여야 하고 두 번째는 자막 파일(.srt, .vtt 또는 .ass)이어야 합니다.
- 구워진 자막은 비디오의 영구적인 일부가 되며 시청자가 끌 수 없습니다. 켜고 끌 수 있는 자막을 원한다면 대신 Embed Subtitles 도구를 사용하세요.
- 작업이 완료될 때까지 진행 상황 업데이트는 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 제공됩니다.
+48
View File
@@ -0,0 +1,48 @@
---
description: "비디오의 프레임 레이트를 변경합니다."
i18n_source_hash: 2bffbd04a1cb
i18n_provenance: human
i18n_output_hash: 7257b5e1c7f2
---
# Change FPS {#change-fps}
비디오의 프레임 레이트를 1에서 120 fps 사이의 목표 값으로 변경합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/change-fps`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fps | number | No | `30` | 목표 프레임 레이트(1-120) |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/change-fps \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"fps": 24}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 10200000
}
```
## Notes {#notes}
- 프레임 레이트를 낮추면 프레임이 삭제되어 파일 크기가 줄어듭니다. 높이면 빈 공간을 채우기 위해 프레임이 복제되지만 실제 모션 디테일이 추가되지는 않습니다.
- 일반적인 목표 값: 24(영화), 30(웹/방송), 60(부드러운 재생).
- 오디오 트랙은 원래 샘플 레이트로 유지됩니다.
@@ -0,0 +1,47 @@
---
description: "품질 제어와 함께 비디오 파일 크기를 줄입니다."
i18n_source_hash: 9cc1f1acf74e
i18n_provenance: human
i18n_output_hash: b4ab30e97d8a
---
# Compress Video {#compress-video}
구성 가능한 압축 강도와 선택적 해상도 다운스케일링을 사용하여 비디오 파일 크기를 줄입니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/compress-video`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다. 이 엔드포인트는 비동기입니다. 즉시 `202 Accepted`를 반환하고 진행 상황은 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 스트리밍됩니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| quality | string | No | `"balanced"` | 압축 강도: `light`, `balanced`, `strong` |
| resolution | string | No | `"original"` | 출력 해상도: `original`, `1080p`, `720p`, `480p` |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/compress-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"quality": "strong", "resolution": "720p"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
## Notes {#notes}
- `light` 프리셋은 원본에 가까운 품질을 유지합니다. `strong` 프리셋은 시각적 충실도를 희생하면서 파일 크기를 적극적으로 줄입니다.
- 해상도 다운스케일링(예: 4K에서 720p로)은 압축과 결합되어 크기를 크게 줄입니다.
- 작업이 완료될 때까지 진행 상황 업데이트는 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 제공됩니다.
+47
View File
@@ -0,0 +1,47 @@
---
description: "MP4, MOV, WebM, AVI, MKV 사이에서 비디오를 변환합니다."
i18n_source_hash: 8f9e6418b1c6
i18n_provenance: human
i18n_output_hash: 07b7cef524b0
---
# Convert Video {#convert-video}
구성 가능한 품질 프리셋과 함께 MP4, MOV, WebM, AVI, MKV 형식 사이에서 비디오를 변환합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/convert-video`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다. 이 엔드포인트는 비동기입니다. 즉시 `202 Accepted`를 반환하고 진행 상황은 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 스트리밍됩니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| format | string | No | `"mp4"` | 출력 형식: `mp4`, `mov`, `webm`, `avi`, `mkv` |
| quality | string | No | `"balanced"` | 품질 프리셋: `high`, `balanced`, `small` |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/convert-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"format": "webm", "quality": "balanced"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
## Notes {#notes}
- `high` 품질 프리셋은 최상의 시각적 충실도를 제공하지만 파일이 더 큽니다. `small` 프리셋은 최소 파일 크기를 위해 적극적으로 압축합니다.
- WebM 출력은 VP9 인코딩을 사용합니다. MP4와 MOV는 H.264를 사용합니다. AVI와 MKV는 레거시 또는 아카이브 워크플로용으로 제공됩니다.
- 작업이 완료될 때까지 진행 상황 업데이트는 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 제공됩니다.
+51
View File
@@ -0,0 +1,51 @@
---
description: "비디오에서 특정 영역을 잘라냅니다."
i18n_source_hash: fab11f71a202
i18n_provenance: human
i18n_output_hash: 38f9db478720
---
# Crop Video {#crop-video}
영역의 크기와 위치를 지정하여 비디오에서 직사각형 영역을 잘라냅니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/crop-video`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| width | integer | Yes | - | 크롭 영역 너비(픽셀, 최소 16) |
| height | integer | Yes | - | 크롭 영역 높이(픽셀, 최소 16) |
| x | integer | No | `0` | 왼쪽 위 모서리로부터의 수평 오프셋 |
| y | integer | No | `0` | 왼쪽 위 모서리로부터의 수직 오프셋 |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/crop-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"width": 640, "height": 480, "x": 100, "y": 50}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 5200000
}
```
## Notes {#notes}
- 크롭 영역은 비디오 크기 안에 맞아야 합니다. `x + width` 또는 `y + height`가 원본 크기를 초과하면 요청은 400 오류를 반환합니다.
- 최소 크롭 크기는 16x16 픽셀입니다.
- 대부분의 비디오 코덱이 요구하는 대로 크기는 짝수로 반올림됩니다.
@@ -0,0 +1,49 @@
---
description: "자막 트랙을 비디오 컨테이너에 먹싱합니다."
i18n_source_hash: be272730fff5
i18n_provenance: human
i18n_output_hash: 4fe610e21868
---
# Embed Subtitles {#embed-subtitles}
시청자가 켜고 끌 수 있는 소프트 자막 트랙으로 자막 파일을 비디오 컨테이너에 먹싱합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/embed-subtitles`
비디오 파일과 자막 파일, 그리고 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| language | string | No | `"eng"` | ISO 639-2/B 언어 코드(소문자 3자, 예: `"eng"`, `"fra"`, `"deu"`) |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/embed-subtitles \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F "file=@subtitles.srt" \
-F 'settings={"language": "fra"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 12520000
}
```
## Notes {#notes}
- 파일 두 개를 업로드하세요. 첫 번째는 비디오여야 하고 두 번째는 자막 파일(.srt, .vtt 또는 .ass)이어야 합니다.
- 임베드된(소프트) 자막은 시청자가 미디어 플레이어에서 켜고 끌 수 있습니다. 항상 표시되는 자막을 원한다면 대신 Burn Subtitles 도구를 사용하세요.
- 언어 코드는 컨테이너에 메타데이터로 저장되며 미디어 플레이어가 자막 트랙에 레이블을 붙이는 데 도움을 줍니다.
+48
View File
@@ -0,0 +1,48 @@
---
description: "비디오에서 오디오 트랙을 추출합니다."
i18n_source_hash: f5b8330a5f89
i18n_provenance: human
i18n_output_hash: 89eebd10d257
---
# Extract Audio {#extract-audio}
비디오 파일에서 오디오 트랙을 추출하여 MP3, WAV, M4A 또는 OGG로 저장합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/extract-audio`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| format | string | No | `"mp3"` | 출력 오디오 형식: `mp3`, `wav`, `m4a`, `ogg` |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/extract-audio \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"format": "mp3"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp3",
"originalSize": 12500000,
"processedSize": 3200000
}
```
## Notes {#notes}
- 비디오에 오디오 트랙이 없으면 요청은 400 오류를 반환합니다.
- MP3는 손실 형식이지만 널리 호환됩니다. WAV는 무손실이지만 용량이 큽니다. M4A(AAC)는 품질과 크기의 균형이 좋습니다. OGG는 오픈 코덱 워크플로용으로 제공됩니다.
- 원본 오디오가 이미 AAC이고 출력 형식이 M4A인 경우, 오디오 스트림은 재인코딩 없이 복사됩니다.
@@ -0,0 +1,45 @@
---
description: "비디오에서 자막 트랙을 SRT 파일로 추출합니다."
i18n_source_hash: 48db860f6676
i18n_provenance: human
i18n_output_hash: 62284809c7a8
---
# Extract Subtitles {#extract-subtitles}
비디오 컨테이너에서 임베드된 자막 트랙을 추출하여 SRT 파일로 다운로드합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/extract-subtitles`
비디오 파일이 담긴 multipart form data를 받습니다. 이 도구에는 구성 가능한 설정이 없습니다.
## Parameters {#parameters}
이 도구에는 매개변수가 없습니다. 비디오 컨테이너에서 발견된 첫 번째 자막 트랙을 추출합니다.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/extract-subtitles \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.srt",
"originalSize": 12500000,
"processedSize": 4500
}
```
## Notes {#notes}
- 비디오에는 임베드된 자막 트랙이 있어야 합니다. 자막 트랙을 찾을 수 없으면 요청은 400 오류를 반환합니다.
- 비디오에 여러 자막 트랙이 있으면 첫 번째 트랙이 추출됩니다.
- 컨테이너 내 원본 자막 형식과 상관없이 출력 형식은 SRT입니다.
+48
View File
@@ -0,0 +1,48 @@
---
description: "애니메이션 GIF를 MP4, WebM 또는 MOV 비디오로 변환합니다."
i18n_source_hash: c3737b31146d
i18n_provenance: human
i18n_output_hash: 034c4ea4177d
---
# GIF to Video {#gif-to-video}
애니메이션 GIF를 용량이 작은 MP4, WebM 또는 MOV 비디오 파일로 변환합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/gif-to-video`
GIF 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| format | string | No | `"mp4"` | 출력 형식: `mp4`, `webm`, `mov` |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/gif-to-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@animation.gif" \
-F 'settings={"format": "mp4"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/animation.mp4",
"originalSize": 8500000,
"processedSize": 950000
}
```
## Notes {#notes}
- GIF를 비디오로 변환하면 동일한 시각적 품질을 유지하면서 일반적으로 파일 크기가 80-90% 줄어듭니다.
- 애니메이션 GIF 파일만 허용됩니다. 정적 이미지는 이미지 Convert 도구를 사용하세요.
- MP4와 MOV는 H.264 인코딩을 사용하고 WebM은 VP9를 사용합니다.
@@ -0,0 +1,54 @@
---
description: "여러 이미지를 슬라이드쇼 비디오로 만듭니다."
i18n_source_hash: 2c6f183feb6d
i18n_provenance: human
i18n_output_hash: 03b8662b3522
---
# Images to Video {#images-to-video}
이미지 세트를 이미지당 지속 시간, 해상도, 프레임 레이트를 구성할 수 있는 슬라이드쇼 비디오로 만듭니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/images-to-video`
이미지 파일 두 개 이상과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| secondsPerImage | number | No | `2` | 이미지당 표시 지속 시간(초, 0.5-10) |
| resolution | string | No | `"720p"` | 출력 해상도: `1080p`, `720p`, `square` |
| fps | integer | No | `30` | 출력 프레임 레이트(10-60) |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/images-to-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@slide1.jpg" \
-F "file=@slide2.jpg" \
-F "file=@slide3.jpg" \
-F "file=@slide4.jpg" \
-F 'settings={"secondsPerImage": 3, "resolution": "1080p"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/slideshow.mp4",
"originalSize": 3500000,
"processedSize": 1200000
}
```
## Notes {#notes}
- 요청당 이미지 파일 2-60개를 허용합니다. 이미지는 업로드 순서대로 비디오에 나타납니다.
- 이미지는 종횡비를 유지하면서 목표 해상도에 맞게 크기가 조정되고 패딩됩니다.
- `square` 해상도 옵션은 소셜 미디어에 유용한 1080x1080 비디오를 생성합니다.
- 출력 형식은 항상 MP4(H.264)입니다.
+46
View File
@@ -0,0 +1,46 @@
---
description: "여러 비디오 클립을 하나의 파일로 결합합니다."
i18n_source_hash: 90463dfbb580
i18n_provenance: human
i18n_output_hash: 630a5604a812
---
# Merge Videos {#merge-videos}
여러 비디오 클립을 하나의 MP4 파일로 결합합니다. 모든 입력은 첫 번째 비디오의 해상도와 30 fps로 정규화됩니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/merge-videos`
비디오 파일 두 개 이상이 담긴 multipart form data를 받습니다. 이 엔드포인트는 비동기입니다. 즉시 `202 Accepted`를 반환하고 진행 상황은 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 스트리밍됩니다.
## Parameters {#parameters}
이 도구에는 설정 매개변수가 없습니다. 비디오 파일 2-10개를 여러 개의 `file` 파트로 업로드하세요.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/merge-videos \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@intro.mp4" \
-F "file=@main.mp4" \
-F "file=@outro.mp4"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
## Notes {#notes}
- 클립은 업로드된 순서대로 연결됩니다.
- 모든 클립은 첫 번째 클립의 해상도, 프레임 레이트(30 fps), 코덱(H.264)에 맞게 재인코딩됩니다. 일치하지 않는 입력은 자동으로 정규화됩니다.
- 요청당 비디오 파일 2-10개를 허용합니다.
- 작업이 완료될 때까지 진행 상황 업데이트는 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 제공됩니다.
+44
View File
@@ -0,0 +1,44 @@
---
description: "비디오에서 오디오 트랙을 제거합니다."
i18n_source_hash: 9a0c60bbcaa3
i18n_provenance: human
i18n_output_hash: d9aaf7709d76
---
# Mute Video {#mute-video}
비디오에서 오디오 트랙을 제거하여 시각적 스트림만 남깁니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/mute-video`
비디오 파일이 담긴 multipart form data를 받습니다. 이 도구에는 구성 가능한 설정이 없습니다.
## Parameters {#parameters}
이 도구에는 매개변수가 없습니다. 업로드된 비디오에서 오디오 트랙을 제거합니다.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/mute-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 8900000
}
```
## Notes {#notes}
- 비디오 스트림은 재인코딩 없이 복사되므로 품질 손실이 없습니다.
- 입력 비디오에 오디오 트랙이 없으면 파일이 변경 없이 반환됩니다.
+46
View File
@@ -0,0 +1,46 @@
---
description: "비디오의 오디오 트랙을 다른 파일로 교체합니다."
i18n_source_hash: fabc2a953103
i18n_provenance: human
i18n_output_hash: 30f5365e9ba1
---
# Replace Audio {#replace-audio}
비디오의 오디오 트랙을 오디오 파일로 교체합니다. 비디오와 오디오 파일을 모두 업로드하세요.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/replace-audio`
정확히 두 개의 파일이 담긴 multipart form data를 받습니다. 비디오 파일에 이어 오디오 파일입니다.
## Parameters {#parameters}
이 도구에는 설정 매개변수가 없습니다. 비디오 파일과 오디오 파일을 두 개의 `file` 파트로 업로드하세요.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/replace-audio \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F "file=@voiceover.mp3"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 13100000
}
```
## Notes {#notes}
- 정확히 두 개의 파일을 업로드해야 합니다. 첫 번째는 비디오여야 하고 두 번째는 오디오 파일이어야 합니다.
- 오디오 파일이 비디오보다 길면 비디오 길이에 맞게 잘립니다. 짧으면 나머지 비디오는 무음으로 재생됩니다.
- 비디오 스트림은 재인코딩 없이 복사되므로 비디오 품질 손실이 없습니다.
+61
View File
@@ -0,0 +1,61 @@
---
description: "비디오를 새 해상도 또는 프리셋 크기로 스케일합니다."
i18n_source_hash: bb1f67871fea
i18n_provenance: human
i18n_output_hash: 82da6fe0ce19
---
# Resize Video {#resize-video}
사용자 지정 픽셀 크기 또는 표준 프리셋을 사용하여 비디오를 새 해상도로 스케일합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/resize-video`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| width | integer | No | - | 목표 너비(픽셀, 16-7680) |
| height | integer | No | - | 목표 높이(픽셀, 16-4320) |
| preset | string | No | `"custom"` | 해상도 프리셋: `custom`, `2160p`, `1440p`, `1080p`, `720p`, `480p`, `360p` |
`preset``"custom"`일 때는 `width` 또는 `height` 중 최소 하나를 제공해야 합니다. 나머지 차원은 비례하여 스케일됩니다.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/resize-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"preset": "720p"}'
```
사용자 지정 크기로 리사이즈:
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/resize-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"width": 1280, "height": 720}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 25000000,
"processedSize": 8500000
}
```
## Notes {#notes}
- 프리셋 값은 표준 높이에 매핑됩니다(예: `720p` = 1280x720, `1080p` = 1920x1080). 너비는 원본 종횡비로부터 비례하여 스케일됩니다.
- 대부분의 비디오 코덱이 요구하는 대로 크기는 짝수로 반올림됩니다.
- 지원되는 최대 해상도는 7680x4320(8K UHD)입니다.
+44
View File
@@ -0,0 +1,44 @@
---
description: "비디오 클립을 거꾸로 재생합니다."
i18n_source_hash: 98226f4e092d
i18n_provenance: human
i18n_output_hash: 14762d359cc7
---
# Reverse Video {#reverse-video}
비디오 클립을 거꾸로 재생합니다. 오디오 트랙도 역재생됩니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/reverse-video`
비디오 파일이 담긴 multipart form data를 받습니다. 이 도구에는 구성 가능한 설정이 없습니다.
## Parameters {#parameters}
이 도구에는 매개변수가 없습니다. 전체 비디오를 역재생합니다.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/reverse-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 12600000
}
```
## Notes {#notes}
- 길이가 최대 5분인 클립으로 제한됩니다. 더 긴 비디오는 400 오류로 거부됩니다.
- 비디오와 오디오 트랙이 모두 역재생됩니다. 오디오 없이 비디오만 역재생하려면 먼저 음소거하세요.
+55
View File
@@ -0,0 +1,55 @@
---
description: "비디오를 회전하거나 뒤집습니다."
i18n_source_hash: cf9620ca62c7
i18n_provenance: human
i18n_output_hash: cf2a97ee5823
---
# Rotate Video {#rotate-video}
비디오를 90, 180 또는 270도 회전하거나 수평 또는 수직으로 뒤집습니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/rotate-video`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| transform | string | Yes | - | 적용할 변환: `cw90`, `ccw90`, `180`, `hflip`, `vflip` |
### Transform Values {#transform-values}
- **cw90** - 시계 방향으로 90도 회전
- **ccw90** - 반시계 방향으로 90도 회전
- **180** - 180도 회전
- **hflip** - 수평으로 뒤집기(미러)
- **vflip** - 수직으로 뒤집기
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/rotate-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"transform": "cw90"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 12400000
}
```
## Notes {#notes}
- 90 또는 270도 회전은 비디오의 너비와 높이를 교체합니다.
- 뒤집기 작업(hflip, vflip)은 비디오 크기를 변경하지 않습니다.
@@ -0,0 +1,46 @@
---
description: "2패스 안정화로 카메라 흔들림을 줄입니다."
i18n_source_hash: ec908e91a752
i18n_provenance: human
i18n_output_hash: 0c65313c55d3
---
# Stabilize Video {#stabilize-video}
FFmpeg의 2패스 vidstab 안정화를 사용하여 핸드헬드 영상의 카메라 흔들림을 줄입니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/stabilize-video`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다. 이 엔드포인트는 비동기입니다. 즉시 `202 Accepted`를 반환하고 진행 상황은 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 스트리밍됩니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| smoothing | integer | No | `15` | 스무딩 윈도우 크기(프레임, 5-60). 값이 높을수록 더 부드러운 모션을 생성합니다 |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/stabilize-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"smoothing": 30}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
## Notes {#notes}
- 안정화는 2패스 프로세스입니다. 첫 번째 패스는 카메라 모션을 분석하고 두 번째 패스는 보정을 적용합니다. 이는 단일 패스 도구보다 대략 두 배 오래 걸립니다.
- 스무딩 값이 높을수록 흔들림이 더 많이 제거되지만 가장자리에 약간의 줌 크롭이 생길 수 있습니다.
- 작업이 완료될 때까지 진행 상황 업데이트는 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 제공됩니다.
+50
View File
@@ -0,0 +1,50 @@
---
description: "시작 및 종료 시간을 지정하여 비디오에서 클립을 잘라냅니다."
i18n_source_hash: c84481641979
i18n_provenance: human
i18n_output_hash: 7cb48f2f868e
---
# Trim Video {#trim-video}
초 단위로 시작 및 종료 시간을 지정하여 비디오에서 클립을 잘라내며, 프레임 단위 정확한 컷을 위한 옵션을 제공합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/trim-video`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| startS | number | No | `0` | 시작 시간(초, >= 0이어야 함) |
| endS | number | Yes | - | 종료 시간(초, startS 이후여야 함) |
| precise | boolean | No | `false` | 키프레임 탐색 대신 프레임 단위 정확한 컷을 위해 재인코딩 |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/trim-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"startS": 5, "endS": 30, "precise": true}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 4200000
}
```
## Notes {#notes}
- `precise``false`(기본값)일 때 이 도구는 키프레임 탐색을 사용하며, 이는 빠르지만 요청한 시간보다 몇 프레임 앞에서 시작할 수 있습니다.
- `precise``true`로 설정하면 정확한 프레임 경계를 위해 세그먼트를 재인코딩하지만 시간이 더 오래 걸립니다.
- `endS` 값은 `startS`보다 커야 합니다.
+51
View File
@@ -0,0 +1,51 @@
---
description: "비디오의 밝기, 대비, 채도, 감마를 조정합니다."
i18n_source_hash: 40483b79d44b
i18n_provenance: human
i18n_output_hash: 4185aaf9fd57
---
# Video Color {#video-color}
비디오의 밝기, 대비, 채도, 감마 보정을 조정합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-color`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| brightness | number | No | `0` | 밝기 조정(-1에서 1) |
| contrast | number | No | `1` | 대비 배율(0-4) |
| saturation | number | No | `1` | 채도 배율(0-3). 흑백은 0으로 설정 |
| gamma | number | No | `1` | 감마 보정(0.1-10) |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-color \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"brightness": 0.1, "contrast": 1.2, "saturation": 1.5}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 12300000
}
```
## Notes {#notes}
- 모든 값이 기본값(밝기 0, 대비 1, 채도 1, 감마 1)일 때는 변화가 없습니다.
- 채도를 `0`으로 설정하면 비디오가 흑백으로 변환됩니다.
- 1 미만의 감마 값은 그림자를 밝게 하고, 1 초과의 값은 어둡게 합니다.
@@ -0,0 +1,45 @@
---
description: "비디오 오디오 볼륨을 방송 표준으로 정규화합니다."
i18n_source_hash: 078f1e819c9a
i18n_provenance: human
i18n_output_hash: c0432472f482
---
# Normalize Audio {#normalize-audio}
비디오 오디오 볼륨을 EBU R128 방송 라우드니스 표준으로 정규화합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-loudnorm`
비디오 파일이 담긴 multipart form data를 받습니다. 이 도구에는 구성 가능한 설정이 없습니다.
## Parameters {#parameters}
이 도구에는 매개변수가 없습니다. 오디오 트랙에 EBU R128 라우드니스 정규화를 적용합니다.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-loudnorm \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 12500000
}
```
## Notes {#notes}
- FFmpeg의 `loudnorm` 필터를 사용하여 -16 LUFS 통합 라우드니스, -1.5 dBTP 트루 피크, 11 LU 라우드니스 범위(EBU R128 방송 표준)를 목표로 합니다.
- 원본 오디오 샘플 레이트는 출력에서 유지됩니다.
- 비디오에 오디오 트랙이 없으면 요청은 400 오류를 반환합니다.
@@ -0,0 +1,54 @@
---
description: "비디오에서 메타데이터를 제거하고 발견된 내용을 보고합니다."
i18n_source_hash: 69621bfb98ca
i18n_provenance: human
i18n_output_hash: 6675966d30e1
---
# Clean Video Metadata {#clean-video-metadata}
비디오에서 메타데이터(생성 날짜, GPS 좌표, 카메라 모델, 소프트웨어 태그 등)를 제거하고 제거된 내용을 보고합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-metadata`
비디오 파일이 담긴 multipart form data를 받습니다. 이 도구에는 구성 가능한 설정이 없습니다.
## Parameters {#parameters}
이 도구에는 매개변수가 없습니다. 비디오 컨테이너에서 모든 메타데이터를 제거합니다.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-metadata \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip_clean.mp4",
"originalSize": 12500000,
"processedSize": 12480000,
"metadata": {
"container": "mov,mp4,m4a,3gp,3g2,mj2",
"durationS": 42.5,
"bitrateKbps": 2350,
"streams": [
{ "type": "video", "codec": "h264", "width": 1920, "height": 1080 },
{ "type": "audio", "codec": "aac", "sampleRate": 48000 }
]
}
}
```
## Notes {#notes}
- 제거되는 메타데이터에는 생성 타임스탬프, GPS/위치 데이터, 카메라/기기 정보, 소프트웨어 태그가 포함됩니다.
- 비디오와 오디오 스트림은 재인코딩 없이 복사되므로 품질 손실이 없습니다.
- 비디오를 공개적으로 공유하기 전 개인정보 보호에 유용합니다.
+49
View File
@@ -0,0 +1,49 @@
---
description: "비디오를 빠르게 또는 느리게 재생합니다."
i18n_source_hash: 98dfc75c0507
i18n_provenance: human
i18n_output_hash: 3434a48c6b60
---
# Video Speed {#video-speed}
오디오 피치를 유지하는 옵션과 함께 비디오를 빠르게 또는 느리게 재생합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-speed`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| factor | number | No | `2` | 속도 배율(0.25-4). 1보다 크면 빠르게, 작으면 느리게 |
| keepPitch | boolean | No | `true` | 속도 변경 시 오디오 피치 유지 |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-speed \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"factor": 0.5, "keepPitch": true}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 24800000
}
```
## Notes {#notes}
- `2` 배율은 재생 속도를 두 배로 늘립니다(지속 시간 절반). `0.5` 배율은 재생 속도를 절반으로 줄입니다(지속 시간 두 배).
- `keepPitch``true`이면 오디오가 시간 늘림 처리되어 음성이 자연스럽게 들립니다. `false`이면 피치가 속도에 비례하여 이동합니다.
- 유효 범위는 0.25x에서 4x입니다.
@@ -0,0 +1,62 @@
---
description: "비디오에서 프레임을 이미지 ZIP으로 추출합니다."
i18n_source_hash: b06f038dafb3
i18n_provenance: human
i18n_output_hash: 72525fc332fc
---
# Video to Frames {#video-to-frames}
비디오에서 개별 프레임을 추출하여 PNG 또는 JPG 이미지의 ZIP 아카이브로 다운로드합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-frames`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| mode | string | No | `"all"` | 추출 모드: `all`, `nth`, `timestamps` |
| n | integer | No | `10` | N번째 프레임마다 추출(2-1000). mode가 `"nth"`일 때만 사용됨 |
| timestamps | string | No | `""` | 쉼표로 구분된 타임스탬프(초). mode가 `"timestamps"`일 때 필수 |
| format | string | No | `"png"` | 추출된 프레임의 이미지 형식: `png`, `jpg` |
## Example Request {#example-request}
30번째 프레임마다 JPG로 추출:
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-to-frames \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"mode": "nth", "n": 30, "format": "jpg"}'
```
특정 타임스탬프에서 프레임 추출:
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-to-frames \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"mode": "timestamps", "timestamps": "1.5,5,12.3"}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip-frames.zip",
"originalSize": 12500000,
"processedSize": 45000000
}
```
## Notes {#notes}
- `all` 모드는 모든 프레임을 추출하며 긴 비디오의 경우 매우 큰 ZIP 파일을 생성할 수 있습니다. 선택적 추출에는 `nth` 또는 `timestamps` 모드를 사용하세요.
- PNG는 전체 품질을 유지하지만 파일이 더 큽니다. JPG는 더 작지만 손실 형식입니다.
- 응답은 순차적으로 번호가 매겨진 이미지 파일이 담긴 ZIP 아카이브로 다운로드됩니다.
+49
View File
@@ -0,0 +1,49 @@
---
description: "비디오 클립을 애니메이션 GIF로 만듭니다."
i18n_source_hash: f729dde8cd55
i18n_provenance: human
i18n_output_hash: 55b4fbec9f67
---
# Video to GIF {#video-to-gif}
비디오 클립을 프레임 레이트, 너비, 시작 시간, 지속 시간을 구성할 수 있는 애니메이션 GIF로 만듭니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-gif`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다. 이 엔드포인트는 비동기입니다. 즉시 `202 Accepted`를 반환하고 진행 상황은 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 스트리밍됩니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fps | integer | No | `12` | 출력 프레임 레이트(1-30) |
| width | integer | No | `480` | 출력 너비(픽셀, 64-1280). 높이는 비례하여 스케일됨 |
| startS | number | No | `0` | 시작 시간(초, >= 0이어야 함) |
| durationS | number | No | `5` | 지속 시간(초, 0 초과, 최대 60) |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-to-gif \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"fps": 15, "width": 320, "startS": 2, "durationS": 8}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
## Notes {#notes}
- `fps``width` 값이 낮을수록 더 작은 GIF 파일을 생성합니다. 12 fps의 480px 너비 GIF가 보통 좋은 균형입니다.
- 최대 지속 시간은 60초입니다. 더 긴 클립은 매우 큰 파일을 생성합니다.
- 작업이 완료될 때까지 진행 상황 업데이트는 `GET /api/v1/jobs/{jobId}/progress`에서 SSE를 통해 제공됩니다.
+51
View File
@@ -0,0 +1,51 @@
---
description: "비디오 클립을 애니메이션 WebP 이미지로 변환합니다."
i18n_source_hash: 7b1a22459bd1
i18n_provenance: human
i18n_output_hash: a1f43308fed5
---
# Video to WebP {#video-to-webp}
비디오 클립을 프레임 레이트, 너비, 품질을 구성할 수 있는 애니메이션 WebP 이미지로 변환합니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-webp`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fps | integer | No | `12` | 출력 프레임 레이트(1-30) |
| width | integer | No | `480` | 출력 너비(픽셀, 16-1920). 높이는 비례하여 스케일됨 |
| quality | integer | No | `75` | WebP 압축 품질(1-100) |
| loop | boolean | No | `true` | 애니메이션 반복 |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-to-webp \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"fps": 15, "width": 640, "quality": 80}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.webp",
"originalSize": 12500000,
"processedSize": 2800000
}
```
## Notes {#notes}
- 애니메이션 WebP는 GIF보다 작은 파일을 생성하면서 더 나은 색상 지원을 제공합니다(8비트 팔레트 대비 24비트).
- `quality` 값이 낮을수록 시각적 충실도를 희생하면서 더 작은 파일을 생성합니다.
- 한 번 재생 후 멈춰야 하는 애니메이션은 `loop``false`으로 설정하세요.
@@ -0,0 +1,58 @@
---
description: "비디오 프레임에 텍스트 워터마크를 구워 넣습니다."
i18n_source_hash: 937bb075b894
i18n_provenance: human
i18n_output_hash: 793d92e6f6f7
---
# Watermark Video {#watermark-video}
구성 가능한 위치, 크기, 불투명도, 색상으로 비디오의 모든 프레임에 텍스트 워터마크를 구워 넣습니다.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/watermark-video`
비디오 파일과 JSON `settings` 필드가 담긴 multipart form data를 받습니다.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| text | string | Yes | - | 워터마크 텍스트(1-200자) |
| position | string | No | `"br"` | 프레임 상 위치: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
| fontSize | integer | No | `36` | 글꼴 크기(픽셀, 8-120) |
| opacity | number | No | `0.5` | 워터마크 불투명도(0.05-1) |
| color | string | No | `"#ffffff"` | 텍스트의 Hex 색상(예: `"#ffffff"`) |
### Position Values {#position-values}
- **tl** - 왼쪽 위, **tc** - 가운데 위, **tr** - 오른쪽 위
- **l** - 왼쪽 가운데, **c** - 중앙, **r** - 오른쪽 가운데
- **bl** - 왼쪽 아래, **bc** - 가운데 아래, **br** - 오른쪽 아래
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/watermark-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"text": "PREVIEW", "position": "c", "fontSize": 48, "opacity": 0.3}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 12400000
}
```
## Notes {#notes}
- 워터마크는 비디오 프레임에 영구적으로 렌더링되며 처리 후 제거할 수 없습니다.
- 워터마크는 FFmpeg에 내장된 산세리프 글꼴을 사용합니다.
- 이미지 워터마크는 이미지 Watermark 도구를 대신 사용하세요.