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: "Einfarbige Balken hinzufügen, um ein Zielseitenverhältnis zu erreichen."
|
||||
i18n_source_hash: b8e17dffc341
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2c586be0fd20
|
||||
---
|
||||
|
||||
# Seitenverhältnis auffüllen {#aspect-pad}
|
||||
|
||||
Fügen Sie einfarbige Letterbox- oder Pillarbox-Balken hinzu, um ein Video ohne Zuschneiden in ein Zielseitenverhältnis einzupassen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/aspect-pad`
|
||||
|
||||
Akzeptiert Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| target | string | Nein | `"9:16"` | Zielseitenverhältnis: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
|
||||
| color | string | Nein | `"#000000"` | Hex-Farbe für die Auffüllbalken (z. B. `"#000000"` für Schwarz) |
|
||||
|
||||
## 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}
|
||||
|
||||
- Wenn das Video bereits dem Zielseitenverhältnis entspricht, wird die Datei unverändert zurückgegeben.
|
||||
- Verwenden Sie `9:16` für vertikale/Hochformat-Social-Media-Formate (TikTok, Reels, Shorts).
|
||||
- Für unscharfe Auffüllung anstelle einer einfarbigen Fläche verwenden Sie das Tool Blur Pad.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Untertiteldateien aus Video-Audiospuren mit KI erzeugen."
|
||||
i18n_source_hash: 35b1e78501ad
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0ded5e0b7ef1
|
||||
---
|
||||
|
||||
# Automatische Untertitel {#auto-subtitles}
|
||||
|
||||
Erzeugen Sie Untertiteldateien aus der Audiospur eines Videos mithilfe KI-gestützter Spracherkennung (faster-whisper). Unterstützt automatische Erkennung und 10 explizite Sprachen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/auto-subtitles`
|
||||
|
||||
Akzeptiert Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings`. Dies ist ein asynchroner Endpunkt - er gibt sofort `202 Accepted` zurück, und der Fortschritt wird über SSE unter `GET /api/v1/jobs/{jobId}/progress` gestreamt.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| language | string | Nein | `"auto"` | Sprache der Sprachaufnahme: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
|
||||
| format | string | Nein | `"srt"` | Ausgabeformat der Untertitel: `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}
|
||||
|
||||
- Dies ist ein KI-Tool, das die Installation des **transcription**-Feature-Bundles erfordert. Wenn das Bundle nicht installiert ist, gibt die API `501 Feature Not Installed` mit Anweisungen zur Installation über die Admin-Oberfläche zurück.
|
||||
- Die Sprachoption `auto` verwendet die integrierte Spracherkennung von whisper. Die explizite Angabe der Sprache verbessert Genauigkeit und Geschwindigkeit.
|
||||
- SRT ist das am weitesten unterstützte Untertitelformat. VTT (WebVTT) ist der Standard für Web-Videoplayer.
|
||||
- Fortschrittsaktualisierungen sind über SSE unter `GET /api/v1/jobs/{jobId}/progress` verfügbar, bis der Job abgeschlossen ist.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Balken mit einer unscharfen Kopie des Videos füllen."
|
||||
i18n_source_hash: 0c72aaefc6de
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ab60a31f1681
|
||||
---
|
||||
|
||||
# Blur Pad {#blur-pad}
|
||||
|
||||
Passen Sie ein Video in ein Zielseitenverhältnis ein, indem Sie den Auffüllbereich mit einer unscharfen, skalierten Kopie des Videos statt mit einfarbigen Balken füllen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/blur-pad`
|
||||
|
||||
Akzeptiert Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| target | string | Nein | `"16:9"` | Zielseitenverhältnis: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
|
||||
| blur | number | Nein | `20` | Gaußsches Weichzeichnen-Sigma für den Hintergrund (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}
|
||||
|
||||
- Höhere Weichzeichnen-Werte erzeugen einen weicheren, abstrakteren Hintergrund. Niedrigere Werte lassen mehr Details sichtbar.
|
||||
- Wenn das Video bereits dem Zielseitenverhältnis entspricht, wird die Datei unverändert zurückgegeben.
|
||||
- Für einfarbige Auffüllung verwenden Sie stattdessen das Tool Aspect Pad.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Untertitel dauerhaft in Videoframes einbrennen."
|
||||
i18n_source_hash: 2d3111589db0
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: bd82fdfa0130
|
||||
---
|
||||
|
||||
# Burn Subtitles {#burn-subtitles}
|
||||
|
||||
Untertitel aus einer SRT-, VTT- oder ASS-Datei dauerhaft (fest kodiert) in jeden Frame eines Videos einbrennen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/burn-subtitles`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einer Untertiteldatei entgegen. Dies ist ein asynchroner Endpunkt: Er gibt sofort `202 Accepted` zurück, und der Fortschritt wird per SSE unter `GET /api/v1/jobs/{jobId}/progress` gestreamt.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fontSize | integer | No | `24` | Schriftgröße der Untertitel in Pixeln (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}
|
||||
|
||||
- Laden Sie zwei Dateien hoch: Die erste muss ein Video sein, die zweite eine Untertiteldatei (.srt, .vtt oder .ass).
|
||||
- Eingebrannte Untertitel sind dauerhaft Teil des Videos und können vom Betrachter nicht ausgeschaltet werden. Für umschaltbare Untertitel verwenden Sie stattdessen das Tool Embed Subtitles.
|
||||
- Fortschrittsaktualisierungen sind per SSE unter `GET /api/v1/jobs/{jobId}/progress` verfügbar, bis der Job abgeschlossen ist.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Die Bildrate eines Videos ändern."
|
||||
i18n_source_hash: 2bffbd04a1cb
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 88be64f5cda9
|
||||
---
|
||||
|
||||
# Change FPS {#change-fps}
|
||||
|
||||
Die Bildrate eines Videos auf einen Zielwert zwischen 1 und 120 fps ändern.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/change-fps`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | number | No | `30` | Ziel-Bildrate (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}
|
||||
|
||||
- Das Senken der Bildrate lässt Frames weg und verringert die Dateigröße. Das Erhöhen dupliziert Frames, um die Lücke zu füllen, fügt aber keine echten Bewegungsdetails hinzu.
|
||||
- Gängige Zielwerte: 24 (Kino), 30 (Web/Broadcast), 60 (flüssige Wiedergabe).
|
||||
- Die Audiospur wird mit ihrer ursprünglichen Abtastrate beibehalten.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Videodateigröße mit Qualitätssteuerung verringern."
|
||||
i18n_source_hash: 9cc1f1acf74e
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c8799ddd34d5
|
||||
---
|
||||
|
||||
# Compress Video {#compress-video}
|
||||
|
||||
Videodateigröße mit konfigurierbarer Kompressionsstärke und optionaler Auflösungsreduzierung verringern.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/compress-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen. Dies ist ein asynchroner Endpunkt: Er gibt sofort `202 Accepted` zurück, und der Fortschritt wird per SSE unter `GET /api/v1/jobs/{jobId}/progress` gestreamt.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| quality | string | No | `"balanced"` | Kompressionsstärke: `light`, `balanced`, `strong` |
|
||||
| resolution | string | No | `"original"` | Ausgabeauflösung: `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}
|
||||
|
||||
- Die Voreinstellung `light` bewahrt eine nahezu originalgetreue Qualität. Die Voreinstellung `strong` verringert die Dateigröße aggressiv auf Kosten der visuellen Wiedergabetreue.
|
||||
- Die Auflösungsreduzierung (z. B. von 4K auf 720p) verstärkt sich zusammen mit der Kompression für eine deutliche Größenreduzierung.
|
||||
- Fortschrittsaktualisierungen sind per SSE unter `GET /api/v1/jobs/{jobId}/progress` verfügbar, bis der Job abgeschlossen ist.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Videos zwischen MP4, MOV, WebM, AVI und MKV konvertieren."
|
||||
i18n_source_hash: 8f9e6418b1c6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: f2ccd8ab325a
|
||||
---
|
||||
|
||||
# Convert Video {#convert-video}
|
||||
|
||||
Videos zwischen den Formaten MP4, MOV, WebM, AVI und MKV mit konfigurierbaren Qualitätsvoreinstellungen konvertieren.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/convert-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen. Dies ist ein asynchroner Endpunkt: Er gibt sofort `202 Accepted` zurück, und der Fortschritt wird per SSE unter `GET /api/v1/jobs/{jobId}/progress` gestreamt.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | No | `"mp4"` | Ausgabeformat: `mp4`, `mov`, `webm`, `avi`, `mkv` |
|
||||
| quality | string | No | `"balanced"` | Qualitätsvoreinstellung: `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}
|
||||
|
||||
- Die Qualitätsvoreinstellung `high` erzeugt die beste visuelle Wiedergabetreue, aber größere Dateien. Die Voreinstellung `small` komprimiert aggressiv für minimale Dateigröße.
|
||||
- WebM-Ausgabe verwendet VP9-Kodierung. MP4 und MOV verwenden H.264. AVI und MKV sind für Legacy- oder Archivierungs-Workflows verfügbar.
|
||||
- Fortschrittsaktualisierungen sind per SSE unter `GET /api/v1/jobs/{jobId}/progress` verfügbar, bis der Job abgeschlossen ist.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Einen Bereich aus einem Video ausschneiden."
|
||||
i18n_source_hash: fab11f71a202
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0f90623074bc
|
||||
---
|
||||
|
||||
# Crop Video {#crop-video}
|
||||
|
||||
Einen rechteckigen Bereich aus einem Video ausschneiden, indem Größe und Position des Bereichs angegeben werden.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/crop-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | Yes | - | Breite des Zuschneidebereichs in Pixeln (Minimum 16) |
|
||||
| height | integer | Yes | - | Höhe des Zuschneidebereichs in Pixeln (Minimum 16) |
|
||||
| x | integer | No | `0` | Horizontaler Versatz von der oberen linken Ecke |
|
||||
| y | integer | No | `0` | Vertikaler Versatz von der oberen linken Ecke |
|
||||
|
||||
## 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}
|
||||
|
||||
- Der Zuschneidebereich muss innerhalb der Videoabmessungen liegen. Wenn `x + width` oder `y + height` die Quellgröße überschreitet, gibt die Anfrage einen 400-Fehler zurück.
|
||||
- Die minimale Zuschneidegröße beträgt 16x16 Pixel.
|
||||
- Abmessungen werden auf gerade Zahlen gerundet, wie es die meisten Videocodecs erfordern.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Eine Untertitelspur in den Videocontainer muxen."
|
||||
i18n_source_hash: be272730fff5
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: bf8b16e90b55
|
||||
---
|
||||
|
||||
# Embed Subtitles {#embed-subtitles}
|
||||
|
||||
Eine Untertiteldatei als weiche Untertitelspur in den Videocontainer muxen, die Betrachter ein- oder ausschalten können.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/embed-subtitles`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einer Untertiteldatei sowie einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| language | string | No | `"eng"` | ISO 639-2/B-Sprachcode (3 Kleinbuchstaben, z. B. `"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}
|
||||
|
||||
- Laden Sie zwei Dateien hoch: Die erste muss ein Video sein, die zweite eine Untertiteldatei (.srt, .vtt oder .ass).
|
||||
- Eingebettete (weiche) Untertitel können vom Betrachter in seinem Media-Player umgeschaltet werden. Für dauerhaft sichtbare Untertitel verwenden Sie stattdessen das Tool Burn Subtitles.
|
||||
- Der Sprachcode wird als Metadaten im Container gespeichert und hilft Media-Playern, die Untertitelspur zu kennzeichnen.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Die Audiospur aus einem Video herausziehen."
|
||||
i18n_source_hash: f5b8330a5f89
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: b28c019d8900
|
||||
---
|
||||
|
||||
# Extract Audio {#extract-audio}
|
||||
|
||||
Die Audiospur aus einer Videodatei extrahieren und als MP3, WAV, M4A oder OGG speichern.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/extract-audio`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | No | `"mp3"` | Ausgabe-Audioformat: `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}
|
||||
|
||||
- Wenn das Video keine Audiospur hat, gibt die Anfrage einen 400-Fehler zurück.
|
||||
- MP3 ist verlustbehaftet, aber weithin kompatibel. WAV ist verlustfrei, aber groß. M4A (AAC) bietet ein gutes Gleichgewicht zwischen Qualität und Größe. OGG ist für Workflows mit offenen Codecs verfügbar.
|
||||
- Wenn die Quellaudiospur bereits AAC ist und das Ausgabeformat M4A lautet, wird der Audiostream ohne Neukodierung kopiert.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Die Untertitelspur als SRT-Datei aus einem Video herausziehen."
|
||||
i18n_source_hash: 48db860f6676
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 36b98926e9e1
|
||||
---
|
||||
|
||||
# Extract Subtitles {#extract-subtitles}
|
||||
|
||||
Die eingebettete Untertitelspur aus einem Videocontainer extrahieren und als SRT-Datei herunterladen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/extract-subtitles`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei entgegen. Dieses Tool hat keine konfigurierbaren Einstellungen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Dieses Tool hat keine Parameter. Es extrahiert die erste im Videocontainer gefundene Untertitelspur.
|
||||
|
||||
## 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}
|
||||
|
||||
- Das Video muss eine eingebettete Untertitelspur enthalten. Wenn keine Untertitelspur gefunden wird, gibt die Anfrage einen 400-Fehler zurück.
|
||||
- Wenn das Video mehrere Untertitelspuren hat, wird die erste extrahiert.
|
||||
- Das Ausgabeformat ist SRT, unabhängig vom ursprünglichen Untertitelformat im Container.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Ein animiertes GIF in ein MP4-, WebM- oder MOV-Video konvertieren."
|
||||
i18n_source_hash: c3737b31146d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: fa3b89f36e19
|
||||
---
|
||||
|
||||
# GIF to Video {#gif-to-video}
|
||||
|
||||
Ein animiertes GIF in eine kompakte MP4-, WebM- oder MOV-Videodatei konvertieren.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/gif-to-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer GIF-Datei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | No | `"mp4"` | Ausgabeformat: `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}
|
||||
|
||||
- Die Konvertierung von GIF zu Video verringert die Dateigröße typischerweise um 80-90 %, während dieselbe visuelle Qualität erhalten bleibt.
|
||||
- Es werden nur animierte GIF-Dateien akzeptiert. Für statische Bilder sollte das Bild-Tool Convert verwendet werden.
|
||||
- MP4 und MOV verwenden H.264-Kodierung, WebM verwendet VP9.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Eine Reihe von Bildern in ein Diashow-Video verwandeln."
|
||||
i18n_source_hash: 2c6f183feb6d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 63bf82273377
|
||||
---
|
||||
|
||||
# Images to Video {#images-to-video}
|
||||
|
||||
Eine Reihe von Bildern in ein Diashow-Video mit konfigurierbarer Anzeigedauer pro Bild, Auflösung und Bildrate verwandeln.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/images-to-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit zwei oder mehr Bilddateien und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| secondsPerImage | number | No | `2` | Anzeigedauer pro Bild in Sekunden (0.5-10) |
|
||||
| resolution | string | No | `"720p"` | Ausgabeauflösung: `1080p`, `720p`, `square` |
|
||||
| fps | integer | No | `30` | Ausgabe-Bildrate (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}
|
||||
|
||||
- Akzeptiert 2-60 Bilddateien pro Anfrage. Die Bilder erscheinen im Video in der Reihenfolge des Uploads.
|
||||
- Bilder werden skaliert und aufgefüllt, um in die Zielauflösung zu passen, wobei das Seitenverhältnis erhalten bleibt.
|
||||
- Die Auflösungsoption `square` erzeugt ein 1080x1080-Video, das für soziale Medien nützlich ist.
|
||||
- Das Ausgabeformat ist immer MP4 (H.264).
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Mehrere Videoclips zu einer Datei zusammenfügen."
|
||||
i18n_source_hash: 90463dfbb580
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 342f5ae0ad32
|
||||
---
|
||||
|
||||
# Merge Videos {#merge-videos}
|
||||
|
||||
Mehrere Videoclips zu einer einzigen MP4-Datei zusammenfügen. Alle Eingaben werden auf die Auflösung des ersten Videos und 30 fps normalisiert.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/merge-videos`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit zwei oder mehr Videodateien entgegen. Dies ist ein asynchroner Endpunkt: Er gibt sofort `202 Accepted` zurück, und der Fortschritt wird per SSE unter `GET /api/v1/jobs/{jobId}/progress` gestreamt.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Dieses Tool hat keine Einstellungsparameter. Laden Sie 2-10 Videodateien als mehrere `file`-Teile hoch.
|
||||
|
||||
## 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}
|
||||
|
||||
- Die Clips werden in der Reihenfolge aneinandergereiht, in der sie hochgeladen werden.
|
||||
- Alle Clips werden neu kodiert, um die Auflösung, Bildrate (30 fps) und den Codec (H.264) des ersten Clips anzupassen. Nicht übereinstimmende Eingaben werden automatisch normalisiert.
|
||||
- Akzeptiert 2-10 Videodateien pro Anfrage.
|
||||
- Fortschrittsaktualisierungen sind per SSE unter `GET /api/v1/jobs/{jobId}/progress` verfügbar, bis der Job abgeschlossen ist.
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Die Audiospur aus einem Video entfernen."
|
||||
i18n_source_hash: 9a0c60bbcaa3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: fecf07ecb196
|
||||
---
|
||||
|
||||
# Mute Video {#mute-video}
|
||||
|
||||
Die Audiospur aus einem Video entfernen, sodass nur der visuelle Stream übrig bleibt.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/mute-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei entgegen. Dieses Tool hat keine konfigurierbaren Einstellungen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Dieses Tool hat keine Parameter. Es entfernt die Audiospur aus dem hochgeladenen Video.
|
||||
|
||||
## 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}
|
||||
|
||||
- Der Videostream wird ohne Neukodierung kopiert, sodass kein Qualitätsverlust auftritt.
|
||||
- Wenn das Eingabevideo keine Audiospur hat, wird die Datei unverändert zurückgegeben.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Die Audiospur eines Videos durch eine andere Datei ersetzen."
|
||||
i18n_source_hash: fabc2a953103
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a166fd66890e
|
||||
---
|
||||
|
||||
# Replace Audio {#replace-audio}
|
||||
|
||||
Die Audiospur eines Videos durch eine Audiodatei ersetzen. Laden Sie sowohl ein Video als auch eine Audiodatei hoch.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/replace-audio`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit genau zwei Dateien entgegen: einer Videodatei, gefolgt von einer Audiodatei.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Dieses Tool hat keine Einstellungsparameter. Laden Sie eine Videodatei und eine Audiodatei als zwei `file`-Teile hoch.
|
||||
|
||||
## 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}
|
||||
|
||||
- Es müssen genau zwei Dateien hochgeladen werden: Die erste muss ein Video sein, die zweite eine Audiodatei.
|
||||
- Wenn die Audiodatei länger als das Video ist, wird sie auf die Videodauer gekürzt. Ist sie kürzer, läuft das verbleibende Video ohne Ton.
|
||||
- Der Videostream wird ohne Neukodierung kopiert, sodass kein Videoqualitätsverlust auftritt.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "Ein Video auf eine neue Auflösung oder voreingestellte Größe skalieren."
|
||||
i18n_source_hash: bb1f67871fea
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 93d1f5cb2e90
|
||||
---
|
||||
|
||||
# Resize Video {#resize-video}
|
||||
|
||||
Ein Video mit benutzerdefinierten Pixelabmessungen oder einer Standardvoreinstellung auf eine neue Auflösung skalieren.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/resize-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | No | - | Zielbreite in Pixeln (16-7680) |
|
||||
| height | integer | No | - | Zielhöhe in Pixeln (16-4320) |
|
||||
| preset | string | No | `"custom"` | Auflösungsvoreinstellung: `custom`, `2160p`, `1440p`, `1080p`, `720p`, `480p`, `360p` |
|
||||
|
||||
Wenn `preset` `"custom"` ist, muss mindestens einer von `width` oder `height` angegeben werden. Die andere Dimension wird proportional skaliert.
|
||||
|
||||
## 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"}'
|
||||
```
|
||||
|
||||
Auf benutzerdefinierte Abmessungen skalieren:
|
||||
|
||||
```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}
|
||||
|
||||
- Voreinstellungswerte werden auf Standardhöhen abgebildet (z. B. `720p` = 1280x720, `1080p` = 1920x1080). Die Breite skaliert proportional zum Seitenverhältnis der Quelle.
|
||||
- Abmessungen werden auf gerade Zahlen gerundet, wie es die meisten Videocodecs erfordern.
|
||||
- Die maximal unterstützte Auflösung beträgt 7680x4320 (8K UHD).
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Einen Videoclip rückwärts abspielen."
|
||||
i18n_source_hash: 98226f4e092d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: b787a0c53f93
|
||||
---
|
||||
|
||||
# Reverse Video {#reverse-video}
|
||||
|
||||
Einen Videoclip rückwärts abspielen. Die Audiospur wird ebenfalls umgekehrt.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/reverse-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei entgegen. Dieses Tool hat keine konfigurierbaren Einstellungen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Dieses Tool hat keine Parameter. Es kehrt das gesamte Video um.
|
||||
|
||||
## 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}
|
||||
|
||||
- Begrenzt auf Clips mit einer Länge von bis zu 5 Minuten. Längere Videos werden mit einem 400-Fehler abgelehnt.
|
||||
- Sowohl die Video- als auch die Audiospur werden umgekehrt. Um das Video ohne Ton umzukehren, stellen Sie es zuerst stumm.
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
description: "Ein Video drehen oder spiegeln."
|
||||
i18n_source_hash: cf9620ca62c7
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e2166bb11365
|
||||
---
|
||||
|
||||
# Rotate Video {#rotate-video}
|
||||
|
||||
Ein Video um 90, 180 oder 270 Grad drehen oder es horizontal oder vertikal spiegeln.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/rotate-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| transform | string | Yes | - | Anzuwendende Transformation: `cw90`, `ccw90`, `180`, `hflip`, `vflip` |
|
||||
|
||||
### Transform Values {#transform-values}
|
||||
|
||||
- **cw90** - Um 90 Grad im Uhrzeigersinn drehen
|
||||
- **ccw90** - Um 90 Grad gegen den Uhrzeigersinn drehen
|
||||
- **180** - Um 180 Grad drehen
|
||||
- **hflip** - Horizontal spiegeln (Spiegelbild)
|
||||
- **vflip** - Vertikal spiegeln
|
||||
|
||||
## 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}
|
||||
|
||||
- Drehungen um 90 oder 270 Grad vertauschen Breite und Höhe des Videos.
|
||||
- Spiegeloperationen (hflip, vflip) ändern die Videoabmessungen nicht.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Verwacklungen mit Zwei-Pass-Stabilisierung reduzieren."
|
||||
i18n_source_hash: ec908e91a752
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: f27b80786d66
|
||||
---
|
||||
|
||||
# Stabilize Video {#stabilize-video}
|
||||
|
||||
Verwacklungen in Handheld-Aufnahmen mit der Zwei-Pass-vidstab-Stabilisierung von FFmpeg reduzieren.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/stabilize-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen. Dies ist ein asynchroner Endpunkt: Er gibt sofort `202 Accepted` zurück, und der Fortschritt wird per SSE unter `GET /api/v1/jobs/{jobId}/progress` gestreamt.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| smoothing | integer | No | `15` | Größe des Glättungsfensters in Frames (5-60). Höhere Werte erzeugen eine gleichmäßigere Bewegung |
|
||||
|
||||
## 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}
|
||||
|
||||
- Die Stabilisierung ist ein Zwei-Pass-Prozess: Der erste Durchlauf analysiert die Kamerabewegung, und der zweite Durchlauf wendet die Korrektur an. Dies dauert etwa doppelt so lange wie bei Single-Pass-Tools.
|
||||
- Höhere Glättungswerte entfernen mehr Verwacklungen, können aber an den Rändern einen leichten Zoom-Zuschnitt einführen.
|
||||
- Fortschrittsaktualisierungen sind per SSE unter `GET /api/v1/jobs/{jobId}/progress` verfügbar, bis der Job abgeschlossen ist.
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
description: "Einen Clip aus einem Video durch Angabe von Start- und Endzeiten ausschneiden."
|
||||
i18n_source_hash: c84481641979
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 13a9b877e396
|
||||
---
|
||||
|
||||
# Trim Video {#trim-video}
|
||||
|
||||
Einen Clip aus einem Video durch Angabe von Start- und Endzeiten in Sekunden ausschneiden, mit einer Option für frame-genaue Schnitte.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/trim-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| startS | number | No | `0` | Startzeit in Sekunden (muss >= 0 sein) |
|
||||
| endS | number | Yes | - | Endzeit in Sekunden (muss nach startS liegen) |
|
||||
| precise | boolean | No | `false` | Für frame-genaue Schnitte neu kodieren statt Keyframe-Suche |
|
||||
|
||||
## 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}
|
||||
|
||||
- Wenn `precise` `false` ist (der Standard), verwendet das Tool die Keyframe-Suche, die schnell ist, aber möglicherweise einige Frames vor der angeforderten Zeit beginnt.
|
||||
- Wenn `precise` auf `true` gesetzt wird, wird das Segment für exakte Frame-Grenzen neu kodiert, was jedoch länger dauert.
|
||||
- Der Wert `endS` muss größer als `startS` sein.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Helligkeit, Kontrast, Sättigung und Gamma eines Videos anpassen."
|
||||
i18n_source_hash: 40483b79d44b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 4e97fb1510e0
|
||||
---
|
||||
|
||||
# Video Color {#video-color}
|
||||
|
||||
Helligkeit, Kontrast, Sättigung und Gammakorrektur eines Videos anpassen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-color`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| brightness | number | No | `0` | Helligkeitsanpassung (-1 bis 1) |
|
||||
| contrast | number | No | `1` | Kontrastmultiplikator (0-4) |
|
||||
| saturation | number | No | `1` | Sättigungsmultiplikator (0-3). Auf 0 setzen für Graustufen |
|
||||
| gamma | number | No | `1` | Gammakorrektur (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}
|
||||
|
||||
- Alle Werte auf ihren Standardwerten (Helligkeit 0, Kontrast 1, Sättigung 1, Gamma 1) bewirken keine Änderung.
|
||||
- Wenn die Sättigung auf `0` gesetzt wird, wird das Video in Graustufen umgewandelt.
|
||||
- Gammawerte unter 1 hellen Schatten auf, während Werte über 1 sie abdunkeln.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Video-Audiolautstärke auf den Broadcast-Standard normalisieren."
|
||||
i18n_source_hash: 078f1e819c9a
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e019971d4c7a
|
||||
---
|
||||
|
||||
# Normalize Audio {#normalize-audio}
|
||||
|
||||
Video-Audiolautstärke auf den EBU-R128-Broadcast-Lautheitsstandard normalisieren.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-loudnorm`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei entgegen. Dieses Tool hat keine konfigurierbaren Einstellungen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Dieses Tool hat keine Parameter. Es wendet die EBU-R128-Lautheitsnormalisierung auf die Audiospur an.
|
||||
|
||||
## 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}
|
||||
|
||||
- Verwendet den `loudnorm`-Filter von FFmpeg, der auf -16 LUFS integrierte Lautheit mit -1.5 dBTP True Peak und 11 LU Lautheitsbereich abzielt (EBU-R128-Broadcast-Standard).
|
||||
- Die Abtastrate des Quellaudios wird in der Ausgabe beibehalten.
|
||||
- Wenn das Video keine Audiospur hat, gibt die Anfrage einen 400-Fehler zurück.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Metadaten aus einem Video entfernen und melden, was gefunden wurde."
|
||||
i18n_source_hash: 69621bfb98ca
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 1656eeff847e
|
||||
---
|
||||
|
||||
# Clean Video Metadata {#clean-video-metadata}
|
||||
|
||||
Metadaten (Erstellungsdatum, GPS-Koordinaten, Kameramodell, Software-Tags usw.) aus einem Video entfernen und melden, was entfernt wurde.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-metadata`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei entgegen. Dieses Tool hat keine konfigurierbaren Einstellungen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Dieses Tool hat keine Parameter. Es entfernt alle Metadaten aus dem Videocontainer.
|
||||
|
||||
## 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}
|
||||
|
||||
- Zu den entfernten Metadaten gehören Erstellungszeitstempel, GPS-/Standortdaten, Kamera-/Geräteinformationen und Software-Tags.
|
||||
- Die Video- und Audiostreams werden ohne Neukodierung kopiert, sodass kein Qualitätsverlust auftritt.
|
||||
- Nützlich für den Datenschutz, bevor Videos öffentlich geteilt werden.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Ein Video beschleunigen oder verlangsamen."
|
||||
i18n_source_hash: 98dfc75c0507
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 832795c6b5d1
|
||||
---
|
||||
|
||||
# Video Speed {#video-speed}
|
||||
|
||||
Ein Video mit einer Option zur Beibehaltung der Audio-Tonhöhe beschleunigen oder verlangsamen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-speed`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| factor | number | No | `2` | Geschwindigkeitsmultiplikator (0.25-4). Werte über 1 beschleunigen, unter 1 verlangsamen |
|
||||
| keepPitch | boolean | No | `true` | Audio-Tonhöhe bei Geschwindigkeitsänderung beibehalten |
|
||||
|
||||
## 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}
|
||||
|
||||
- Ein Faktor von `2` verdoppelt die Wiedergabegeschwindigkeit (halbiert die Dauer). Ein Faktor von `0.5` halbiert die Wiedergabegeschwindigkeit (verdoppelt die Dauer).
|
||||
- Wenn `keepPitch` `true` ist, wird das Audio zeitgestreckt, sodass Stimmen natürlich klingen. Bei `false` verschiebt sich die Tonhöhe proportional zur Geschwindigkeit.
|
||||
- Der gültige Bereich ist 0.25x bis 4x.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "Frames aus einem Video als ZIP mit Bildern extrahieren."
|
||||
i18n_source_hash: b06f038dafb3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: fcb97abe8b99
|
||||
---
|
||||
|
||||
# Video to Frames {#video-to-frames}
|
||||
|
||||
Einzelne Frames aus einem Video extrahieren und als ZIP-Archiv mit PNG- oder JPG-Bildern herunterladen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-frames`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | No | `"all"` | Extraktionsmodus: `all`, `nth`, `timestamps` |
|
||||
| n | integer | No | `10` | Jeden N-ten Frame extrahieren (2-1000). Wird nur verwendet, wenn der Modus `"nth"` ist |
|
||||
| timestamps | string | No | `""` | Kommagetrennte Zeitstempel in Sekunden. Erforderlich, wenn der Modus `"timestamps"` ist |
|
||||
| format | string | No | `"png"` | Bildformat für extrahierte Frames: `png`, `jpg` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
Jeden 30. Frame als JPG extrahieren:
|
||||
|
||||
```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"}'
|
||||
```
|
||||
|
||||
Frames zu bestimmten Zeitstempeln extrahieren:
|
||||
|
||||
```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}
|
||||
|
||||
- Der Modus `all` extrahiert jeden Frame und kann bei langen Videos sehr große ZIP-Dateien erzeugen. Verwenden Sie den Modus `nth` oder `timestamps` für eine selektive Extraktion.
|
||||
- PNG bewahrt die volle Qualität, erzeugt aber größere Dateien. JPG ist kleiner, aber verlustbehaftet.
|
||||
- Die Antwort wird als ZIP-Archiv heruntergeladen, das fortlaufend nummerierte Bilddateien enthält.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Einen Videoclip in ein animiertes GIF verwandeln."
|
||||
i18n_source_hash: f729dde8cd55
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8de2f0e20107
|
||||
---
|
||||
|
||||
# Video to GIF {#video-to-gif}
|
||||
|
||||
Einen Videoclip in ein animiertes GIF mit konfigurierbarer Bildrate, Breite, Startzeit und Dauer verwandeln.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-gif`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen. Dies ist ein asynchroner Endpunkt: Er gibt sofort `202 Accepted` zurück, und der Fortschritt wird per SSE unter `GET /api/v1/jobs/{jobId}/progress` gestreamt.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | integer | No | `12` | Ausgabe-Bildrate (1-30) |
|
||||
| width | integer | No | `480` | Ausgabebreite in Pixeln (64-1280). Die Höhe skaliert proportional |
|
||||
| startS | number | No | `0` | Startzeit in Sekunden (muss >= 0 sein) |
|
||||
| durationS | number | No | `5` | Dauer in Sekunden (über 0, max. 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}
|
||||
|
||||
- Niedrigere Werte für `fps` und `width` erzeugen kleinere GIF-Dateien. Ein 480px breites GIF mit 12 fps ist meist ein guter Kompromiss.
|
||||
- Die maximale Dauer beträgt 60 Sekunden. Längere Clips erzeugen sehr große Dateien.
|
||||
- Fortschrittsaktualisierungen sind per SSE unter `GET /api/v1/jobs/{jobId}/progress` verfügbar, bis der Job abgeschlossen ist.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Einen Videoclip in ein animiertes WebP-Bild konvertieren."
|
||||
i18n_source_hash: 7b1a22459bd1
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 650faf06b8aa
|
||||
---
|
||||
|
||||
# Video to WebP {#video-to-webp}
|
||||
|
||||
Einen Videoclip in ein animiertes WebP-Bild mit konfigurierbarer Bildrate, Breite und Qualität konvertieren.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-webp`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | integer | No | `12` | Ausgabe-Bildrate (1-30) |
|
||||
| width | integer | No | `480` | Ausgabebreite in Pixeln (16-1920). Die Höhe skaliert proportional |
|
||||
| quality | integer | No | `75` | WebP-Kompressionsqualität (1-100) |
|
||||
| loop | boolean | No | `true` | Die Animation in Schleife abspielen |
|
||||
|
||||
## 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}
|
||||
|
||||
- Animiertes WebP erzeugt kleinere Dateien als GIF mit besserer Farbunterstützung (24 Bit gegenüber 8-Bit-Palette).
|
||||
- Niedrigere Werte für `quality` erzeugen kleinere Dateien auf Kosten der visuellen Wiedergabetreue.
|
||||
- Setzen Sie `loop` auf `false` für Animationen, die einmal abgespielt werden und dann stoppen sollen.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
description: "Ein Text-Wasserzeichen in Videoframes einbrennen."
|
||||
i18n_source_hash: 937bb075b894
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 10ed166a9871
|
||||
---
|
||||
|
||||
# Watermark Video {#watermark-video}
|
||||
|
||||
Ein Text-Wasserzeichen mit konfigurierbarer Position, Größe, Deckkraft und Farbe in jeden Frame eines Videos einbrennen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/watermark-video`
|
||||
|
||||
Nimmt Multipart-Formulardaten mit einer Videodatei und einem JSON-Feld `settings` entgegen.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Yes | - | Wasserzeichentext (1-200 Zeichen) |
|
||||
| position | string | No | `"br"` | Position auf dem Frame: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
|
||||
| fontSize | integer | No | `36` | Schriftgröße in Pixeln (8-120) |
|
||||
| opacity | number | No | `0.5` | Deckkraft des Wasserzeichens (0.05-1) |
|
||||
| color | string | No | `"#ffffff"` | Hex-Farbe für den Text (z. B. `"#ffffff"`) |
|
||||
|
||||
### Position Values {#position-values}
|
||||
|
||||
- **tl** - Oben links, **tc** - Oben mittig, **tr** - Oben rechts
|
||||
- **l** - Mitte links, **c** - Mitte, **r** - Mitte rechts
|
||||
- **bl** - Unten links, **bc** - Unten mittig, **br** - Unten rechts
|
||||
|
||||
## 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}
|
||||
|
||||
- Das Wasserzeichen wird dauerhaft in die Videoframes gerendert und kann nach der Verarbeitung nicht mehr entfernt werden.
|
||||
- Das Wasserzeichen verwendet eine in FFmpeg integrierte serifenlose Schrift.
|
||||
- Für Bild-Wasserzeichen verwenden Sie stattdessen das Bild-Tool Watermark.
|
||||
Reference in New Issue
Block a user