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: "Voeg balken in een effen kleur toe om aan een doelbeeldverhouding te voldoen."
|
||||
i18n_source_hash: b8e17dffc341
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 6e0a6b8f1c47
|
||||
---
|
||||
|
||||
# Aspect Pad {#aspect-pad}
|
||||
|
||||
Voeg letterbox- of pillarbox-balken in een effen kleur toe om een video in een doelbeeldverhouding te passen zonder bij te snijden.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/aspect-pad`
|
||||
|
||||
Accepteert multipart-formuliergegevens met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| target | string | Nee | `"9:16"` | Doelbeeldverhouding: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
|
||||
| color | string | Nee | `"#000000"` | Hex-kleur voor de opvulbalken (bijv. `"#000000"` voor zwart) |
|
||||
|
||||
## 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}
|
||||
|
||||
- Als de video al overeenkomt met de doelbeeldverhouding, wordt het bestand ongewijzigd teruggegeven.
|
||||
- Gebruik `9:16` voor verticale/portret-socialmedia-indelingen (TikTok, Reels, Shorts).
|
||||
- Gebruik voor vervaagde opvulling in plaats van een effen kleur het hulpmiddel Blur Pad.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Genereer ondertitelbestanden uit de audiotracks van video's met AI."
|
||||
i18n_source_hash: 35b1e78501ad
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 24377bd16df5
|
||||
---
|
||||
|
||||
# Auto Subtitles {#auto-subtitles}
|
||||
|
||||
Genereer ondertitelbestanden uit de audiotrack van een video met AI-gedreven spraakherkenning (faster-whisper). Ondersteunt automatische detectie en 10 expliciete talen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/auto-subtitles`
|
||||
|
||||
Accepteert multipart-formuliergegevens met een videobestand en een JSON-veld `settings`. Dit is een asynchroon endpoint - het geeft `202 Accepted` direct terug en de voortgang wordt gestreamd via SSE op `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| language | string | Nee | `"auto"` | Spraaktaal: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
|
||||
| format | string | Nee | `"srt"` | Uitvoerformaat voor ondertitels: `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}
|
||||
|
||||
- Dit is een AI-hulpmiddel dat vereist dat de **transcription**-functiebundel is geïnstalleerd. Als de bundel niet is geïnstalleerd, geeft de API `501 Feature Not Installed` terug met instructies om deze via de admin-UI te installeren.
|
||||
- De taaloptie `auto` gebruikt de ingebouwde taaldetectie van whisper. Het expliciet opgeven van de taal verbetert de nauwkeurigheid en snelheid.
|
||||
- SRT is het meest breed ondersteunde ondertitelformaat. VTT (WebVTT) is de standaard voor webvideospelers.
|
||||
- Voortgangsupdates zijn beschikbaar via SSE op `GET /api/v1/jobs/{jobId}/progress` totdat de taak is voltooid.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Vul balken met een vervaagde kopie van de video."
|
||||
i18n_source_hash: 0c72aaefc6de
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c8a237fa270a
|
||||
---
|
||||
|
||||
# Blur Pad {#blur-pad}
|
||||
|
||||
Pas een video in een doelbeeldverhouding door het opvulgebied te vullen met een vervaagde, geschaalde kopie van de video in plaats van balken in een effen kleur.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/blur-pad`
|
||||
|
||||
Accepteert multipart-formuliergegevens met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| target | string | Nee | `"16:9"` | Doelbeeldverhouding: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
|
||||
| blur | number | Nee | `20` | Gaussische vervaging-sigma voor de achtergrond (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}
|
||||
|
||||
- Hogere vervagingswaarden produceren een zachtere, abstractere achtergrond. Lagere waarden houden meer detail zichtbaar.
|
||||
- Als de video al overeenkomt met de doelbeeldverhouding, wordt het bestand ongewijzigd teruggegeven.
|
||||
- Gebruik voor opvulling in een effen kleur in plaats daarvan het hulpmiddel Aspect Pad.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Ondertitels permanent in videoframes renderen."
|
||||
i18n_source_hash: 2d3111589db0
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 1333c762ddc9
|
||||
---
|
||||
|
||||
# Burn Subtitles {#burn-subtitles}
|
||||
|
||||
Render (hardcode) ondertitels uit een SRT-, VTT- of ASS-bestand permanent in elk frame van een video.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/burn-subtitles`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een ondertitelbestand. Dit is een async endpoint: het retourneert direct `202 Accepted` en de voortgang wordt via SSE gestreamd op `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fontSize | integer | Nee | `24` | Lettergrootte van de ondertitels in pixels (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}
|
||||
|
||||
- Upload twee bestanden: het eerste moet een video zijn, het tweede moet een ondertitelbestand zijn (.srt, .vtt of .ass).
|
||||
- Ingebrande ondertitels zijn permanent onderdeel van de video en kunnen door de kijker niet worden uitgezet. Gebruik voor in- en uitschakelbare ondertitels in plaats daarvan de tool Embed Subtitles.
|
||||
- Voortgangsupdates zijn beschikbaar via SSE op `GET /api/v1/jobs/{jobId}/progress` totdat de taak is voltooid.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "De framerate van een video wijzigen."
|
||||
i18n_source_hash: 2bffbd04a1cb
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2f397c66c881
|
||||
---
|
||||
|
||||
# Change FPS {#change-fps}
|
||||
|
||||
Wijzig de framerate van een video naar een doelwaarde tussen 1 en 120 fps.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/change-fps`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | number | Nee | `30` | Doelframerate (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}
|
||||
|
||||
- Een lagere framerate laat frames vallen en verkleint de bestandsgrootte. Een hogere framerate dupliceert frames om het gat op te vullen, maar voegt geen echte bewegingsdetails toe.
|
||||
- Gebruikelijke doelwaarden: 24 (cinema), 30 (web/broadcast), 60 (vloeiende weergave).
|
||||
- Het audiospoor blijft op de oorspronkelijke samplerate behouden.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Videobestandsgrootte verkleinen met kwaliteitscontrole."
|
||||
i18n_source_hash: 9cc1f1acf74e
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: bd96bd211a97
|
||||
---
|
||||
|
||||
# Compress Video {#compress-video}
|
||||
|
||||
Verklein de videobestandsgrootte met een instelbare compressiesterkte en optioneel het verlagen van de resolutie.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/compress-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`. Dit is een async endpoint: het retourneert direct `202 Accepted` en de voortgang wordt via SSE gestreamd op `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| quality | string | Nee | `"balanced"` | Compressiesterkte: `light`, `balanced`, `strong` |
|
||||
| resolution | string | Nee | `"original"` | Uitvoerresolutie: `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}
|
||||
|
||||
- De preset `light` behoudt een kwaliteit die bijna gelijk is aan het origineel. De preset `strong` verkleint de bestandsgrootte agressief ten koste van de visuele getrouwheid.
|
||||
- Het verlagen van de resolutie (bijvoorbeeld van 4K naar 720p) versterkt in combinatie met compressie de vermindering van de bestandsgrootte aanzienlijk.
|
||||
- Voortgangsupdates zijn beschikbaar via SSE op `GET /api/v1/jobs/{jobId}/progress` totdat de taak is voltooid.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Video's converteren tussen MP4, MOV, WebM, AVI en MKV."
|
||||
i18n_source_hash: 8f9e6418b1c6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 1bdfad1a66e0
|
||||
---
|
||||
|
||||
# Convert Video {#convert-video}
|
||||
|
||||
Converteer video's tussen de formaten MP4, MOV, WebM, AVI en MKV met instelbare kwaliteitspresets.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/convert-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`. Dit is een async endpoint: het retourneert direct `202 Accepted` en de voortgang wordt via SSE gestreamd op `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | Nee | `"mp4"` | Uitvoerformaat: `mp4`, `mov`, `webm`, `avi`, `mkv` |
|
||||
| quality | string | Nee | `"balanced"` | Kwaliteitspreset: `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}
|
||||
|
||||
- De kwaliteitspreset `high` levert de beste visuele getrouwheid op, maar grotere bestanden. De preset `small` comprimeert agressief voor een minimale bestandsgrootte.
|
||||
- WebM-uitvoer gebruikt VP9-encoding. MP4 en MOV gebruiken H.264. AVI en MKV zijn beschikbaar voor legacy- of archiveringsworkflows.
|
||||
- Voortgangsupdates zijn beschikbaar via SSE op `GET /api/v1/jobs/{jobId}/progress` totdat de taak is voltooid.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Een gebied uit een video bijsnijden."
|
||||
i18n_source_hash: fab11f71a202
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 5724d681ae43
|
||||
---
|
||||
|
||||
# Crop Video {#crop-video}
|
||||
|
||||
Snijd een rechthoekig gebied uit een video bij door de grootte en positie van het gebied op te geven.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/crop-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | Ja | - | Breedte van het bijsnijdgebied in pixels (minimaal 16) |
|
||||
| height | integer | Ja | - | Hoogte van het bijsnijdgebied in pixels (minimaal 16) |
|
||||
| x | integer | Nee | `0` | Horizontale verschuiving vanaf de linkerbovenhoek |
|
||||
| y | integer | Nee | `0` | Verticale verschuiving vanaf de linkerbovenhoek |
|
||||
|
||||
## 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}
|
||||
|
||||
- Het bijsnijdgebied moet binnen de videoafmetingen passen. Als `x + width` of `y + height` de brongrootte overschrijdt, geeft het verzoek een 400-fout terug.
|
||||
- De minimale bijsnijdgrootte is 16x16 pixels.
|
||||
- Afmetingen worden afgerond op even getallen, zoals de meeste videocodecs vereisen.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Een ondertitelspoor in de videocontainer muxen."
|
||||
i18n_source_hash: be272730fff5
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2f03a1cf7a13
|
||||
---
|
||||
|
||||
# Embed Subtitles {#embed-subtitles}
|
||||
|
||||
Mux een ondertitelbestand in de videocontainer als een soft ondertitelspoor dat kijkers kunnen in- of uitschakelen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/embed-subtitles`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een ondertitelbestand, plus een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| language | string | Nee | `"eng"` | ISO 639-2/B-taalcode (3 kleine letters, bijv. `"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}
|
||||
|
||||
- Upload twee bestanden: het eerste moet een video zijn, het tweede moet een ondertitelbestand zijn (.srt, .vtt of .ass).
|
||||
- Ingebedde (soft) ondertitels kunnen door de kijker in hun mediaspeler worden in- en uitgeschakeld. Gebruik voor permanent zichtbare ondertitels in plaats daarvan de tool Burn Subtitles.
|
||||
- De taalcode wordt als metadata in de container opgeslagen en helpt mediaspelers het ondertitelspoor te labelen.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Het audiospoor uit een video halen."
|
||||
i18n_source_hash: f5b8330a5f89
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 775808761b2a
|
||||
---
|
||||
|
||||
# Extract Audio {#extract-audio}
|
||||
|
||||
Haal het audiospoor uit een videobestand en sla het op als MP3, WAV, M4A of OGG.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/extract-audio`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | Nee | `"mp3"` | Uitvoeraudioformaat: `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}
|
||||
|
||||
- Als de video geen audiospoor heeft, geeft het verzoek een 400-fout terug.
|
||||
- MP3 is lossy maar breed compatibel. WAV is lossless maar groot. M4A (AAC) biedt een goede balans tussen kwaliteit en grootte. OGG is beschikbaar voor workflows met open codecs.
|
||||
- Wanneer de bronaudio al AAC is en het uitvoerformaat M4A is, wordt het audiospoor gekopieerd zonder opnieuw te encoderen.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Het ondertitelspoor uit een video halen als een SRT-bestand."
|
||||
i18n_source_hash: 48db860f6676
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d34409f39e07
|
||||
---
|
||||
|
||||
# Extract Subtitles {#extract-subtitles}
|
||||
|
||||
Haal het ingebedde ondertitelspoor uit een videocontainer en download het als een SRT-bestand.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/extract-subtitles`
|
||||
|
||||
Accepteert multipart form data met een videobestand. Deze tool heeft geen instelbare opties.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Deze tool heeft geen parameters. Het haalt het eerste ondertitelspoor eruit dat in de videocontainer wordt gevonden.
|
||||
|
||||
## 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}
|
||||
|
||||
- De video moet een ingebed ondertitelspoor bevatten. Als er geen ondertitelspoor wordt gevonden, geeft het verzoek een 400-fout terug.
|
||||
- Als de video meerdere ondertitelsporen heeft, wordt het eerste eruit gehaald.
|
||||
- Het uitvoerformaat is SRT, ongeacht het oorspronkelijke ondertitelformaat in de container.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Een geanimeerde GIF omzetten naar een MP4-, WebM- of MOV-video."
|
||||
i18n_source_hash: c3737b31146d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 43b82d873cef
|
||||
---
|
||||
|
||||
# GIF to Video {#gif-to-video}
|
||||
|
||||
Zet een geanimeerde GIF om naar een compact MP4-, WebM- of MOV-videobestand.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/gif-to-video`
|
||||
|
||||
Accepteert multipart form data met een GIF-bestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | Nee | `"mp4"` | Uitvoerformaat: `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}
|
||||
|
||||
- Het omzetten van GIF naar video verkleint de bestandsgrootte doorgaans met 80-90% terwijl dezelfde visuele kwaliteit behouden blijft.
|
||||
- Alleen geanimeerde GIF-bestanden worden geaccepteerd. Voor statische afbeeldingen gebruik je de image Convert-tool.
|
||||
- MP4 en MOV gebruiken H.264-encoding, WebM gebruikt VP9.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Een set afbeeldingen omzetten naar een diavoorstellingsvideo."
|
||||
i18n_source_hash: 2c6f183feb6d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 3ac7b86f548d
|
||||
---
|
||||
|
||||
# Images to Video {#images-to-video}
|
||||
|
||||
Zet een set afbeeldingen om naar een diavoorstellingsvideo met een instelbare duur per afbeelding, resolutie en framerate.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/images-to-video`
|
||||
|
||||
Accepteert multipart form data met twee of meer afbeeldingsbestanden en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| secondsPerImage | number | Nee | `2` | Weergaveduur per afbeelding in seconden (0.5-10) |
|
||||
| resolution | string | Nee | `"720p"` | Uitvoerresolutie: `1080p`, `720p`, `square` |
|
||||
| fps | integer | Nee | `30` | Uitvoerframerate (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}
|
||||
|
||||
- Accepteert 2-60 afbeeldingsbestanden per verzoek. Afbeeldingen verschijnen in de video in de volgorde waarin ze zijn geüpload.
|
||||
- Afbeeldingen worden geschaald en opgevuld om binnen de doelresolutie te passen, met behoud van de beeldverhouding.
|
||||
- De resolutie-optie `square` produceert een video van 1080x1080, handig voor sociale media.
|
||||
- Het uitvoerformaat is altijd MP4 (H.264).
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Meerdere videoclips samenvoegen tot één bestand."
|
||||
i18n_source_hash: 90463dfbb580
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 7224a9a029ee
|
||||
---
|
||||
|
||||
# Merge Videos {#merge-videos}
|
||||
|
||||
Voeg meerdere videoclips samen tot één MP4-bestand. Alle invoer wordt genormaliseerd naar de resolutie van de eerste video en 30 fps.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/merge-videos`
|
||||
|
||||
Accepteert multipart form data met twee of meer videobestanden. Dit is een async endpoint: het retourneert direct `202 Accepted` en de voortgang wordt via SSE gestreamd op `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Deze tool heeft geen instellingsparameters. Upload 2-10 videobestanden als meerdere `file`-delen.
|
||||
|
||||
## 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}
|
||||
|
||||
- Clips worden aaneengeschakeld in de volgorde waarin ze zijn geüpload.
|
||||
- Alle clips worden opnieuw geëncodeerd om overeen te komen met de resolutie, framerate (30 fps) en codec (H.264) van de eerste clip. Niet-overeenkomende invoer wordt automatisch genormaliseerd.
|
||||
- Accepteert 2-10 videobestanden per verzoek.
|
||||
- Voortgangsupdates zijn beschikbaar via SSE op `GET /api/v1/jobs/{jobId}/progress` totdat de taak is voltooid.
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Het audiospoor uit een video verwijderen."
|
||||
i18n_source_hash: 9a0c60bbcaa3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a6993cd53f60
|
||||
---
|
||||
|
||||
# Mute Video {#mute-video}
|
||||
|
||||
Verwijder het audiospoor uit een video, zodat alleen het beeldspoor overblijft.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/mute-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand. Deze tool heeft geen instelbare opties.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Deze tool heeft geen parameters. Het verwijdert het audiospoor uit de geüploade 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}
|
||||
|
||||
- Het beeldspoor wordt gekopieerd zonder opnieuw te encoderen, dus er is geen kwaliteitsverlies.
|
||||
- Als de invoervideo geen audiospoor heeft, wordt het bestand ongewijzigd teruggegeven.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Het audiospoor van een video vervangen door een ander bestand."
|
||||
i18n_source_hash: fabc2a953103
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 98aa1f0e4c2f
|
||||
---
|
||||
|
||||
# Replace Audio {#replace-audio}
|
||||
|
||||
Vervang het audiospoor van een video door een audiobestand. Upload zowel een video als een audiobestand.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/replace-audio`
|
||||
|
||||
Accepteert multipart form data met precies twee bestanden: een videobestand gevolgd door een audiobestand.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Deze tool heeft geen instellingsparameters. Upload een videobestand en een audiobestand als twee `file`-delen.
|
||||
|
||||
## 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}
|
||||
|
||||
- Er moeten precies twee bestanden worden geüpload: het eerste moet een video zijn, het tweede moet een audiobestand zijn.
|
||||
- Als het audiobestand langer is dan de video, wordt het ingekort tot de duur van de video. Is het korter, dan speelt de rest van de video in stilte af.
|
||||
- Het beeldspoor wordt gekopieerd zonder opnieuw te encoderen, dus er is geen verlies van videokwaliteit.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "Een video schalen naar een nieuwe resolutie of presetgrootte."
|
||||
i18n_source_hash: bb1f67871fea
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: cb1d84eb18a5
|
||||
---
|
||||
|
||||
# Resize Video {#resize-video}
|
||||
|
||||
Schaal een video naar een nieuwe resolutie met aangepaste pixelafmetingen of een standaardpreset.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/resize-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| width | integer | Nee | - | Doelbreedte in pixels (16-7680) |
|
||||
| height | integer | Nee | - | Doelhoogte in pixels (16-4320) |
|
||||
| preset | string | Nee | `"custom"` | Resolutiepreset: `custom`, `2160p`, `1440p`, `1080p`, `720p`, `480p`, `360p` |
|
||||
|
||||
Wanneer `preset` `"custom"` is, moet ten minste een van `width` of `height` worden opgegeven. De andere dimensie schaalt proportioneel mee.
|
||||
|
||||
## 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"}'
|
||||
```
|
||||
|
||||
Schalen naar aangepaste afmetingen:
|
||||
|
||||
```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}
|
||||
|
||||
- Presetwaarden komen overeen met standaardhoogtes (bijv. `720p` = 1280x720, `1080p` = 1920x1080). De breedte schaalt proportioneel mee vanuit de beeldverhouding van de bron.
|
||||
- Afmetingen worden afgerond op even getallen, zoals de meeste videocodecs vereisen.
|
||||
- De maximaal ondersteunde resolutie is 7680x4320 (8K UHD).
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Een videoclip achterstevoren afspelen."
|
||||
i18n_source_hash: 98226f4e092d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8ea84a42a438
|
||||
---
|
||||
|
||||
# Reverse Video {#reverse-video}
|
||||
|
||||
Speel een videoclip achterstevoren af. Ook het audiospoor wordt omgekeerd.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/reverse-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand. Deze tool heeft geen instelbare opties.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Deze tool heeft geen parameters. Het keert de hele video om.
|
||||
|
||||
## 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}
|
||||
|
||||
- Beperkt tot clips van maximaal 5 minuten. Langere video's worden afgewezen met een 400-fout.
|
||||
- Zowel het beeld- als het audiospoor worden omgekeerd. Om video zonder audio om te keren, moet je hem eerst dempen.
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
description: "Een video roteren of spiegelen."
|
||||
i18n_source_hash: cf9620ca62c7
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2c414d60c25c
|
||||
---
|
||||
|
||||
# Rotate Video {#rotate-video}
|
||||
|
||||
Roteer een video 90, 180 of 270 graden, of spiegel hem horizontaal of verticaal.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/rotate-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| transform | string | Ja | - | Toe te passen transformatie: `cw90`, `ccw90`, `180`, `hflip`, `vflip` |
|
||||
|
||||
### Transform Values {#transform-values}
|
||||
|
||||
- **cw90** - 90 graden met de klok mee roteren
|
||||
- **ccw90** - 90 graden tegen de klok in roteren
|
||||
- **180** - 180 graden roteren
|
||||
- **hflip** - Horizontaal spiegelen (mirror)
|
||||
- **vflip** - Verticaal spiegelen
|
||||
|
||||
## 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}
|
||||
|
||||
- Rotaties van 90 of 270 graden verwisselen de breedte en hoogte van de video.
|
||||
- Spiegelbewerkingen (hflip, vflip) veranderen de videoafmetingen niet.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Camerabeweging verminderen met tweevoudige stabilisatie."
|
||||
i18n_source_hash: ec908e91a752
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 590cdb319b3c
|
||||
---
|
||||
|
||||
# Stabilize Video {#stabilize-video}
|
||||
|
||||
Verminder camerabeweging in handheld-opnames met de tweevoudige vidstab-stabilisatie van FFmpeg.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/stabilize-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`. Dit is een async endpoint: het retourneert direct `202 Accepted` en de voortgang wordt via SSE gestreamd op `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| smoothing | integer | Nee | `15` | Grootte van het smoothing-venster in frames (5-60). Hogere waarden leveren vloeiendere beweging op |
|
||||
|
||||
## 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}
|
||||
|
||||
- Stabilisatie is een tweevoudig proces: de eerste pass analyseert de camerabeweging en de tweede pass past de correctie toe. Dit duurt ongeveer twee keer zo lang als tools met één pass.
|
||||
- Hogere smoothing-waarden verwijderen meer trillingen, maar kunnen een lichte zoombijsnijding aan de randen veroorzaken.
|
||||
- Voortgangsupdates zijn beschikbaar via SSE op `GET /api/v1/jobs/{jobId}/progress` totdat de taak is voltooid.
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
description: "Een clip uit een video knippen door start- en eindtijden op te geven."
|
||||
i18n_source_hash: c84481641979
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 1d00aaeaddde
|
||||
---
|
||||
|
||||
# Trim Video {#trim-video}
|
||||
|
||||
Knip een clip uit een video door de start- en eindtijd in seconden op te geven, met een optie voor frame-nauwkeurige knippen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/trim-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| startS | number | Nee | `0` | Starttijd in seconden (moet >= 0 zijn) |
|
||||
| endS | number | Ja | - | Eindtijd in seconden (moet na startS liggen) |
|
||||
| precise | boolean | Nee | `false` | Opnieuw encoderen voor frame-nauwkeurige knippen in plaats van keyframe-seek |
|
||||
|
||||
## 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}
|
||||
|
||||
- Wanneer `precise` `false` is (de standaard), gebruikt de tool keyframe-seeking, wat snel is maar een paar frames vóór het gevraagde tijdstip kan beginnen.
|
||||
- `precise` instellen op `true` encodeert het segment opnieuw voor exacte framegrenzen, maar duurt langer.
|
||||
- De waarde `endS` moet groter zijn dan `startS`.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Helderheid, contrast, verzadiging en gamma van een video aanpassen."
|
||||
i18n_source_hash: 40483b79d44b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 85019e556fa6
|
||||
---
|
||||
|
||||
# Video Color {#video-color}
|
||||
|
||||
Pas de helderheid, het contrast, de verzadiging en de gammacorrectie van een video aan.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-color`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| brightness | number | Nee | `0` | Helderheidsaanpassing (-1 tot 1) |
|
||||
| contrast | number | Nee | `1` | Contrastvermenigvuldiger (0-4) |
|
||||
| saturation | number | Nee | `1` | Verzadigingsvermenigvuldiger (0-3). Zet op 0 voor grijstinten |
|
||||
| gamma | number | Nee | `1` | Gammacorrectie (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 waarden op hun standaardinstelling (brightness 0, contrast 1, saturation 1, gamma 1) geven geen wijziging.
|
||||
- Het instellen van saturation op `0` zet de video om naar grijstinten.
|
||||
- Gammawaarden onder 1 maken schaduwen lichter, terwijl waarden boven 1 ze donkerder maken.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Het audiovolume van video normaliseren naar de broadcast-standaard."
|
||||
i18n_source_hash: 078f1e819c9a
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 3d5f398c155a
|
||||
---
|
||||
|
||||
# Normalize Audio {#normalize-audio}
|
||||
|
||||
Normaliseer het audiovolume van video naar de EBU R128 broadcast-luidheidsstandaard.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-loudnorm`
|
||||
|
||||
Accepteert multipart form data met een videobestand. Deze tool heeft geen instelbare opties.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Deze tool heeft geen parameters. Het past EBU R128-luidheidsnormalisatie toe op het audiospoor.
|
||||
|
||||
## 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}
|
||||
|
||||
- Gebruikt het `loudnorm`-filter van FFmpeg gericht op -16 LUFS geïntegreerde luidheid met -1.5 dBTP true peak en 11 LU loudness range (EBU R128 broadcast-standaard).
|
||||
- De samplerate van de bronaudio blijft in de uitvoer behouden.
|
||||
- Als de video geen audiospoor heeft, geeft het verzoek een 400-fout terug.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Metadata uit een video verwijderen en rapporteren wat er is gevonden."
|
||||
i18n_source_hash: 69621bfb98ca
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: adb80ec9234b
|
||||
---
|
||||
|
||||
# Clean Video Metadata {#clean-video-metadata}
|
||||
|
||||
Verwijder metadata (aanmaakdatum, GPS-coördinaten, cameramodel, softwaretags, enz.) uit een video en rapporteer wat er is verwijderd.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-metadata`
|
||||
|
||||
Accepteert multipart form data met een videobestand. Deze tool heeft geen instelbare opties.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Deze tool heeft geen parameters. Het verwijdert alle metadata uit de 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}
|
||||
|
||||
- Verwijderde metadata omvat aanmaaktijdstempels, GPS-/locatiegegevens, camera-/apparaatinfo en softwaretags.
|
||||
- Het beeld- en audiospoor worden gekopieerd zonder opnieuw te encoderen, dus er is geen kwaliteitsverlies.
|
||||
- Handig voor privacy voordat je video's openbaar deelt.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Een video versnellen of vertragen."
|
||||
i18n_source_hash: 98dfc75c0507
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 22019df131c1
|
||||
---
|
||||
|
||||
# Video Speed {#video-speed}
|
||||
|
||||
Versnel of vertraag een video met een optie om de toonhoogte van de audio te behouden.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-speed`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| factor | number | Nee | `2` | Snelheidsvermenigvuldiger (0.25-4). Waarden boven 1 versnellen, onder 1 vertragen |
|
||||
| keepPitch | boolean | Nee | `true` | Toonhoogte van de audio behouden bij het wijzigen van de snelheid |
|
||||
|
||||
## 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}
|
||||
|
||||
- Een factor van `2` verdubbelt de afspeelsnelheid (halveert de duur). Een factor van `0.5` halveert de afspeelsnelheid (verdubbelt de duur).
|
||||
- Wanneer `keepPitch` `true` is, wordt de audio in tijd gerekt zodat stemmen natuurlijk klinken. Bij `false` verschuift de toonhoogte proportioneel met de snelheid.
|
||||
- Het geldige bereik is 0.25x tot 4x.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "Frames uit een video halen als een ZIP met afbeeldingen."
|
||||
i18n_source_hash: b06f038dafb3
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 39fce0ef9ffc
|
||||
---
|
||||
|
||||
# Video to Frames {#video-to-frames}
|
||||
|
||||
Haal individuele frames uit een video en download ze als een ZIP-archief met PNG- of JPG-afbeeldingen.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-frames`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | Nee | `"all"` | Extractiemodus: `all`, `nth`, `timestamps` |
|
||||
| n | integer | Nee | `10` | Elk Nde frame extraheren (2-1000). Alleen gebruikt wanneer mode `"nth"` is |
|
||||
| timestamps | string | Nee | `""` | Door komma's gescheiden tijdstempels in seconden. Vereist wanneer mode `"timestamps"` is |
|
||||
| format | string | Nee | `"png"` | Afbeeldingsformaat voor geëxtraheerde frames: `png`, `jpg` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
Elk 30ste frame extraheren als 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"}'
|
||||
```
|
||||
|
||||
Frames op specifieke tijdstempels extraheren:
|
||||
|
||||
```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}
|
||||
|
||||
- De modus `all` extraheert elk frame en kan voor lange video's zeer grote ZIP-bestanden opleveren. Gebruik de modus `nth` of `timestamps` voor selectieve extractie.
|
||||
- PNG behoudt de volledige kwaliteit maar produceert grotere bestanden. JPG is kleiner maar lossy.
|
||||
- De respons downloadt als een ZIP-archief met opeenvolgend genummerde afbeeldingsbestanden.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Een videoclip omzetten naar een geanimeerde GIF."
|
||||
i18n_source_hash: f729dde8cd55
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 4591c3e30255
|
||||
---
|
||||
|
||||
# Video to GIF {#video-to-gif}
|
||||
|
||||
Zet een videoclip om naar een geanimeerde GIF met een instelbare framerate, breedte, starttijd en duur.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-gif`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`. Dit is een async endpoint: het retourneert direct `202 Accepted` en de voortgang wordt via SSE gestreamd op `GET /api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | integer | Nee | `12` | Uitvoerframerate (1-30) |
|
||||
| width | integer | Nee | `480` | Uitvoerbreedte in pixels (64-1280). De hoogte schaalt proportioneel mee |
|
||||
| startS | number | Nee | `0` | Starttijd in seconden (moet >= 0 zijn) |
|
||||
| durationS | number | Nee | `5` | Duur in seconden (boven 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}
|
||||
|
||||
- Lagere waarden voor `fps` en `width` produceren kleinere GIF-bestanden. Een GIF van 480px breed op 12 fps is meestal een goede balans.
|
||||
- De maximale duur is 60 seconden. Langere clips produceren zeer grote bestanden.
|
||||
- Voortgangsupdates zijn beschikbaar via SSE op `GET /api/v1/jobs/{jobId}/progress` totdat de taak is voltooid.
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
description: "Een videoclip omzetten naar een geanimeerde WebP-afbeelding."
|
||||
i18n_source_hash: 7b1a22459bd1
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 26192e63e067
|
||||
---
|
||||
|
||||
# Video to WebP {#video-to-webp}
|
||||
|
||||
Zet een videoclip om naar een geanimeerde WebP-afbeelding met een instelbare framerate, breedte en kwaliteit.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/video-to-webp`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| fps | integer | Nee | `12` | Uitvoerframerate (1-30) |
|
||||
| width | integer | Nee | `480` | Uitvoerbreedte in pixels (16-1920). De hoogte schaalt proportioneel mee |
|
||||
| quality | integer | Nee | `75` | WebP-compressiekwaliteit (1-100) |
|
||||
| loop | boolean | Nee | `true` | De animatie laten herhalen |
|
||||
|
||||
## 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}
|
||||
|
||||
- Geanimeerde WebP produceert kleinere bestanden dan GIF met betere kleurondersteuning (24-bit versus 8-bit palet).
|
||||
- Lagere waarden voor `quality` produceren kleinere bestanden ten koste van de visuele getrouwheid.
|
||||
- Zet `loop` op `false` voor animaties die één keer moeten afspelen en dan stoppen.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
description: "Een tekstwatermerk in videoframes inbranden."
|
||||
i18n_source_hash: 937bb075b894
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c48312eff520
|
||||
---
|
||||
|
||||
# Watermark Video {#watermark-video}
|
||||
|
||||
Brand een tekstwatermerk in elk frame van een video, met een instelbare positie, grootte, dekking en kleur.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/video/watermark-video`
|
||||
|
||||
Accepteert multipart form data met een videobestand en een JSON-veld `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Vereist | Standaard | Beschrijving |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Ja | - | Watermerktekst (1-200 tekens) |
|
||||
| position | string | Nee | `"br"` | Positie op het frame: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
|
||||
| fontSize | integer | Nee | `36` | Lettergrootte in pixels (8-120) |
|
||||
| opacity | number | Nee | `0.5` | Dekking van het watermerk (0.05-1) |
|
||||
| color | string | Nee | `"#ffffff"` | Hexkleur voor de tekst (bijv. `"#ffffff"`) |
|
||||
|
||||
### Position Values {#position-values}
|
||||
|
||||
- **tl** - Linksboven, **tc** - Midden boven, **tr** - Rechtsboven
|
||||
- **l** - Midden links, **c** - Midden, **r** - Midden rechts
|
||||
- **bl** - Linksonder, **bc** - Midden onder, **br** - Rechtsonder
|
||||
|
||||
## 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}
|
||||
|
||||
- Het watermerk wordt permanent in de videoframes gerenderd en kan na de verwerking niet meer worden verwijderd.
|
||||
- Het watermerk gebruikt een schreefloos lettertype dat in FFmpeg is ingebouwd.
|
||||
- Voor beeldwatermerken gebruik je in plaats daarvan de image Watermark-tool.
|
||||
Reference in New Issue
Block a user