feat(docs-i18n): translate all documentation into 20 languages

All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
This commit is contained in:
SnapOtter
2026-07-11 13:52:47 +08:00
committed by GitHub
parent 00b651c9f8
commit 4963ab3bbd
3620 changed files with 306134 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
---
description: "Ajouter des bandes de couleur unie pour s'adapter à un format d'image cible."
i18n_source_hash: b8e17dffc341
i18n_provenance: human
i18n_output_hash: 0611a491555c
---
# Remplissage de format {#aspect-pad}
Ajoutez des bandes de letterbox ou de pillarbox de couleur unie pour adapter une vidéo à un format d'image cible sans rognage.
## Point de terminaison de l'API {#api-endpoint}
`POST /api/v1/tools/video/aspect-pad`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ `settings` au format JSON.
## Paramètres {#parameters}
| Paramètre | Type | Requis | Par défaut | Description |
|-----------|------|----------|---------|-------------|
| target | string | Non | `"9:16"` | Format d'image cible : `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
| color | string | Non | `"#000000"` | Couleur hexadécimale des bandes de remplissage (par exemple `"#000000"` pour le noir) |
## Exemple de requête {#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"}'
```
## Exemple de réponse {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 13200000
}
```
## Remarques {#notes}
- Si la vidéo correspond déjà au format d'image cible, le fichier est renvoyé inchangé.
- Utilisez `9:16` pour les formats verticaux/portrait des réseaux sociaux (TikTok, Reels, Shorts).
- Pour un remplissage flou au lieu d'une couleur unie, utilisez l'outil Remplissage flou.
@@ -0,0 +1,48 @@
---
description: "Générer des fichiers de sous-titres à partir des pistes audio d'une vidéo à l'aide de l'IA."
i18n_source_hash: 35b1e78501ad
i18n_provenance: human
i18n_output_hash: 979fd7cb561a
---
# Sous-titres automatiques {#auto-subtitles}
Générez des fichiers de sous-titres à partir de la piste audio d'une vidéo à l'aide de la reconnaissance vocale assistée par IA (faster-whisper). Prend en charge la détection automatique et 10 langues explicites.
## Point de terminaison de l'API {#api-endpoint}
`POST /api/v1/tools/video/auto-subtitles`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ `settings` au format JSON. Il s'agit d'un point de terminaison asynchrone : il renvoie `202 Accepted` immédiatement et la progression est diffusée via SSE à `GET /api/v1/jobs/{jobId}/progress`.
## Paramètres {#parameters}
| Paramètre | Type | Requis | Par défaut | Description |
|-----------|------|----------|---------|-------------|
| language | string | Non | `"auto"` | Langue de la parole : `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
| format | string | Non | `"srt"` | Format de sous-titres de sortie : `srt`, `vtt` |
## Exemple de requête {#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"}'
```
## Exemple de réponse {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
## Remarques {#notes}
- Il s'agit d'un outil d'IA qui nécessite l'installation du pack de fonctionnalités **transcription**. Si le pack n'est pas installé, l'API renvoie `501 Feature Not Installed` avec des instructions pour l'installer via l'interface d'administration.
- L'option de langue `auto` utilise la détection de langue intégrée de whisper. Spécifier explicitement la langue améliore la précision et la vitesse.
- SRT est le format de sous-titres le plus largement pris en charge. VTT (WebVTT) est la norme pour les lecteurs vidéo web.
- Les mises à jour de progression sont disponibles via SSE à `GET /api/v1/jobs/{jobId}/progress` jusqu'à ce que le travail soit terminé.
+49
View File
@@ -0,0 +1,49 @@
---
description: "Remplir les bandes avec une copie floue de la vidéo."
i18n_source_hash: 0c72aaefc6de
i18n_provenance: human
i18n_output_hash: c8728e6d484f
---
# Remplissage flou {#blur-pad}
Adaptez une vidéo à un format d'image cible en remplissant la zone de remplissage avec une copie floue et mise à l'échelle de la vidéo, au lieu de bandes de couleur unie.
## Point de terminaison de l'API {#api-endpoint}
`POST /api/v1/tools/video/blur-pad`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ `settings` au format JSON.
## Paramètres {#parameters}
| Paramètre | Type | Requis | Par défaut | Description |
|-----------|------|----------|---------|-------------|
| target | string | Non | `"16:9"` | Format d'image cible : `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
| blur | number | Non | `20` | Sigma du flou gaussien pour l'arrière-plan (2-50) |
## Exemple de requête {#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}'
```
## Exemple de réponse {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 14100000
}
```
## Remarques {#notes}
- Des valeurs de flou plus élevées produisent un arrière-plan plus doux et plus abstrait. Des valeurs plus basses conservent plus de détails visibles.
- Si la vidéo correspond déjà au format d'image cible, le fichier est renvoyé inchangé.
- Pour un remplissage de couleur unie, utilisez plutôt l'outil Remplissage de format.
@@ -0,0 +1,47 @@
---
description: "Incruste définitivement les sous-titres sur les images de la vidéo."
i18n_source_hash: 2d3111589db0
i18n_provenance: human
i18n_output_hash: 0f0b74444bfe
---
# Burn Subtitles {#burn-subtitles}
Incruste définitivement (en dur) les sous-titres d'un fichier SRT, VTT ou ASS sur chaque image d'une vidéo.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/burn-subtitles`
Accepte des données de formulaire multipart avec un fichier vidéo et un fichier de sous-titres. Il s'agit d'un point de terminaison asynchrone : il renvoie immédiatement `202 Accepted` et la progression est diffusée via SSE sur `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fontSize | integer | No | `24` | Taille de police des sous-titres en 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}
- Téléversez deux fichiers : le premier doit être une vidéo, le second doit être un fichier de sous-titres (.srt, .vtt ou .ass).
- Les sous-titres incrustés font partie intégrante de la vidéo et ne peuvent pas être désactivés par le spectateur. Pour des sous-titres activables, utilisez plutôt l'outil Embed Subtitles.
- Les mises à jour de progression sont disponibles via SSE sur `GET /api/v1/jobs/{jobId}/progress` jusqu'à la fin de la tâche.
+48
View File
@@ -0,0 +1,48 @@
---
description: "Change la fréquence d'images d'une vidéo."
i18n_source_hash: 2bffbd04a1cb
i18n_provenance: human
i18n_output_hash: 7c6588a891b0
---
# Change FPS {#change-fps}
Change la fréquence d'images d'une vidéo vers une valeur cible comprise entre 1 et 120 fps.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/change-fps`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fps | number | No | `30` | Fréquence d'images cible (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}
- Réduire la fréquence d'images supprime des images et réduit la taille du fichier. L'augmenter duplique des images pour combler l'écart, mais n'ajoute pas de véritables détails de mouvement.
- Valeurs cibles courantes : 24 (cinéma), 30 (web/diffusion), 60 (lecture fluide).
- La piste audio est conservée à sa fréquence d'échantillonnage d'origine.
@@ -0,0 +1,47 @@
---
description: "Réduit la taille du fichier vidéo avec un contrôle de la qualité."
i18n_source_hash: 9cc1f1acf74e
i18n_provenance: human
i18n_output_hash: a2709c27b052
---
# Compress Video {#compress-video}
Réduit la taille du fichier vidéo à l'aide d'une force de compression configurable et d'une réduction facultative de la résolution.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/compress-video`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`. Il s'agit d'un point de terminaison asynchrone : il renvoie immédiatement `202 Accepted` et la progression est diffusée via SSE sur `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| quality | string | No | `"balanced"` | Force de compression : `light`, `balanced`, `strong` |
| resolution | string | No | `"original"` | Résolution de sortie : `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}
- Le préréglage `light` préserve une qualité proche de l'originale. Le préréglage `strong` réduit agressivement la taille du fichier au détriment de la fidélité visuelle.
- La réduction de la résolution (par exemple de 4K à 720p) se cumule avec la compression pour une réduction de taille importante.
- Les mises à jour de progression sont disponibles via SSE sur `GET /api/v1/jobs/{jobId}/progress` jusqu'à la fin de la tâche.
+47
View File
@@ -0,0 +1,47 @@
---
description: "Convertit des vidéos entre MP4, MOV, WebM, AVI et MKV."
i18n_source_hash: 8f9e6418b1c6
i18n_provenance: human
i18n_output_hash: c01c65915056
---
# Convert Video {#convert-video}
Convertit des vidéos entre les formats MP4, MOV, WebM, AVI et MKV avec des préréglages de qualité configurables.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/convert-video`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`. Il s'agit d'un point de terminaison asynchrone : il renvoie immédiatement `202 Accepted` et la progression est diffusée via SSE sur `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| format | string | No | `"mp4"` | Format de sortie : `mp4`, `mov`, `webm`, `avi`, `mkv` |
| quality | string | No | `"balanced"` | Préréglage de qualité : `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}
- Le préréglage de qualité `high` produit la meilleure fidélité visuelle mais des fichiers plus volumineux. Le préréglage `small` compresse agressivement pour une taille de fichier minimale.
- La sortie WebM utilise l'encodage VP9. MP4 et MOV utilisent H.264. AVI et MKV sont disponibles pour les workflows hérités ou d'archivage.
- Les mises à jour de progression sont disponibles via SSE sur `GET /api/v1/jobs/{jobId}/progress` jusqu'à la fin de la tâche.
+51
View File
@@ -0,0 +1,51 @@
---
description: "Recadre une région d'une vidéo."
i18n_source_hash: fab11f71a202
i18n_provenance: human
i18n_output_hash: 2094f1b77eb2
---
# Crop Video {#crop-video}
Recadre une région rectangulaire d'une vidéo en spécifiant la taille et la position de la région.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/crop-video`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| width | integer | Yes | - | Largeur de la région de recadrage en pixels (minimum 16) |
| height | integer | Yes | - | Hauteur de la région de recadrage en pixels (minimum 16) |
| x | integer | No | `0` | Décalage horizontal par rapport au coin supérieur gauche |
| y | integer | No | `0` | Décalage vertical par rapport au coin supérieur gauche |
## 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}
- La région de recadrage doit tenir dans les dimensions de la vidéo. Si `x + width` ou `y + height` dépasse la taille source, la requête renvoie une erreur 400.
- La taille de recadrage minimale est de 16x16 pixels.
- Les dimensions sont arrondies à des nombres pairs, comme l'exigent la plupart des codecs vidéo.
@@ -0,0 +1,49 @@
---
description: "Multiplexe une piste de sous-titres dans le conteneur vidéo."
i18n_source_hash: be272730fff5
i18n_provenance: human
i18n_output_hash: 7eecafb0406d
---
# Embed Subtitles {#embed-subtitles}
Multiplexe un fichier de sous-titres dans le conteneur vidéo sous forme de piste de sous-titres souple que les spectateurs peuvent activer ou désactiver.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/embed-subtitles`
Accepte des données de formulaire multipart avec un fichier vidéo et un fichier de sous-titres, plus un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| language | string | No | `"eng"` | Code de langue ISO 639-2/B (3 lettres minuscules, par exemple `"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}
- Téléversez deux fichiers : le premier doit être une vidéo, le second doit être un fichier de sous-titres (.srt, .vtt ou .ass).
- Les sous-titres intégrés (souples) peuvent être activés par le spectateur dans son lecteur multimédia. Pour des sous-titres visibles en permanence, utilisez plutôt l'outil Burn Subtitles.
- Le code de langue est stocké sous forme de métadonnées dans le conteneur et aide les lecteurs multimédias à étiqueter la piste de sous-titres.
+48
View File
@@ -0,0 +1,48 @@
---
description: "Extrait la piste audio d'une vidéo."
i18n_source_hash: f5b8330a5f89
i18n_provenance: human
i18n_output_hash: 34c9cc8b7e46
---
# Extract Audio {#extract-audio}
Extrait la piste audio d'un fichier vidéo et l'enregistre au format MP3, WAV, M4A ou OGG.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/extract-audio`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| format | string | No | `"mp3"` | Format audio de sortie : `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}
- Si la vidéo n'a pas de piste audio, la requête renvoie une erreur 400.
- Le MP3 est avec perte mais largement compatible. Le WAV est sans perte mais volumineux. Le M4A (AAC) offre un bon compromis entre qualité et taille. L'OGG est disponible pour les workflows de codecs ouverts.
- Lorsque l'audio source est déjà en AAC et que le format de sortie est M4A, le flux audio est copié sans réencodage.
@@ -0,0 +1,45 @@
---
description: "Extrait la piste de sous-titres d'une vidéo sous forme de fichier SRT."
i18n_source_hash: 48db860f6676
i18n_provenance: human
i18n_output_hash: 4f4e04376914
---
# Extract Subtitles {#extract-subtitles}
Extrait la piste de sous-titres intégrée d'un conteneur vidéo et la télécharge sous forme de fichier SRT.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/extract-subtitles`
Accepte des données de formulaire multipart avec un fichier vidéo. Cet outil n'a aucun réglage configurable.
## Parameters {#parameters}
Cet outil n'a aucun paramètre. Il extrait la première piste de sous-titres trouvée dans le conteneur vidéo.
## 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}
- La vidéo doit contenir une piste de sous-titres intégrée. Si aucune piste de sous-titres n'est trouvée, la requête renvoie une erreur 400.
- Si la vidéo comporte plusieurs pistes de sous-titres, la première est extraite.
- Le format de sortie est SRT, quel que soit le format de sous-titres d'origine dans le conteneur.
+48
View File
@@ -0,0 +1,48 @@
---
description: "Convertit un GIF animé en vidéo MP4, WebM ou MOV."
i18n_source_hash: c3737b31146d
i18n_provenance: human
i18n_output_hash: a15529b605cc
---
# GIF to Video {#gif-to-video}
Convertit un GIF animé en un fichier vidéo compact MP4, WebM ou MOV.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/gif-to-video`
Accepte des données de formulaire multipart avec un fichier GIF et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| format | string | No | `"mp4"` | Format de sortie : `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}
- Convertir un GIF en vidéo réduit généralement la taille du fichier de 80 à 90 % tout en conservant la même qualité visuelle.
- Seuls les fichiers GIF animés sont acceptés. Les images statiques doivent utiliser l'outil image Convert.
- MP4 et MOV utilisent l'encodage H.264, WebM utilise VP9.
@@ -0,0 +1,54 @@
---
description: "Transforme un ensemble d'images en une vidéo diaporama."
i18n_source_hash: 2c6f183feb6d
i18n_provenance: human
i18n_output_hash: d9c51a1bf4d8
---
# Images to Video {#images-to-video}
Transforme un ensemble d'images en une vidéo diaporama avec une durée par image, une résolution et une fréquence d'images configurables.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/images-to-video`
Accepte des données de formulaire multipart avec deux fichiers image ou plus et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| secondsPerImage | number | No | `2` | Durée d'affichage par image en secondes (0.5-10) |
| resolution | string | No | `"720p"` | Résolution de sortie : `1080p`, `720p`, `square` |
| fps | integer | No | `30` | Fréquence d'images de sortie (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}
- Accepte 2 à 60 fichiers image par requête. Les images apparaissent dans la vidéo dans l'ordre de téléversement.
- Les images sont redimensionnées et complétées par un remplissage pour s'adapter à la résolution cible tout en préservant le rapport d'aspect.
- L'option de résolution `square` produit une vidéo 1080x1080, utile pour les réseaux sociaux.
- Le format de sortie est toujours MP4 (H.264).
+46
View File
@@ -0,0 +1,46 @@
---
description: "Assemble plusieurs clips vidéo en un seul fichier."
i18n_source_hash: 90463dfbb580
i18n_provenance: human
i18n_output_hash: 711b7daad579
---
# Merge Videos {#merge-videos}
Assemble plusieurs clips vidéo en un seul fichier MP4. Toutes les entrées sont normalisées à la résolution de la première vidéo et à 30 fps.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/merge-videos`
Accepte des données de formulaire multipart avec deux fichiers vidéo ou plus. Il s'agit d'un point de terminaison asynchrone : il renvoie immédiatement `202 Accepted` et la progression est diffusée via SSE sur `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
Cet outil n'a aucun paramètre de réglage. Téléversez 2 à 10 fichiers vidéo sous forme de plusieurs parties `file`.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/merge-videos \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@intro.mp4" \
-F "file=@main.mp4" \
-F "file=@outro.mp4"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
## Notes {#notes}
- Les clips sont concaténés dans l'ordre où ils sont téléversés.
- Tous les clips sont réencodés pour correspondre à la résolution, à la fréquence d'images (30 fps) et au codec (H.264) du premier clip. Les entrées non concordantes sont automatiquement normalisées.
- Accepte 2 à 10 fichiers vidéo par requête.
- Les mises à jour de progression sont disponibles via SSE sur `GET /api/v1/jobs/{jobId}/progress` jusqu'à la fin de la tâche.
+44
View File
@@ -0,0 +1,44 @@
---
description: "Supprime la piste audio d'une vidéo."
i18n_source_hash: 9a0c60bbcaa3
i18n_provenance: human
i18n_output_hash: 5c222cea7c4a
---
# Mute Video {#mute-video}
Supprime la piste audio d'une vidéo, ne laissant que le flux visuel.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/mute-video`
Accepte des données de formulaire multipart avec un fichier vidéo. Cet outil n'a aucun réglage configurable.
## Parameters {#parameters}
Cet outil n'a aucun paramètre. Il supprime la piste audio de la vidéo téléversée.
## 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}
- Le flux vidéo est copié sans réencodage, il n'y a donc aucune perte de qualité.
- Si la vidéo d'entrée n'a pas de piste audio, le fichier est renvoyé inchangé.
+46
View File
@@ -0,0 +1,46 @@
---
description: "Remplace la piste audio d'une vidéo par un autre fichier."
i18n_source_hash: fabc2a953103
i18n_provenance: human
i18n_output_hash: 0903f78deec1
---
# Replace Audio {#replace-audio}
Remplace la piste audio d'une vidéo par un fichier audio. Téléversez à la fois une vidéo et un fichier audio.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/replace-audio`
Accepte des données de formulaire multipart avec exactement deux fichiers : un fichier vidéo suivi d'un fichier audio.
## Parameters {#parameters}
Cet outil n'a aucun paramètre de réglage. Téléversez un fichier vidéo et un fichier audio sous forme de deux parties `file`.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/replace-audio \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F "file=@voiceover.mp3"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 13100000
}
```
## Notes {#notes}
- Exactement deux fichiers doivent être téléversés : le premier doit être une vidéo, le second doit être un fichier audio.
- Si le fichier audio est plus long que la vidéo, il est coupé pour correspondre à la durée de la vidéo. S'il est plus court, la vidéo restante est jouée en silence.
- Le flux vidéo est copié sans réencodage, il n'y a donc aucune perte de qualité vidéo.
+61
View File
@@ -0,0 +1,61 @@
---
description: "Met à l'échelle une vidéo vers une nouvelle résolution ou une taille prédéfinie."
i18n_source_hash: bb1f67871fea
i18n_provenance: human
i18n_output_hash: c8ec5b3a3d79
---
# Resize Video {#resize-video}
Met à l'échelle une vidéo vers une nouvelle résolution à l'aide de dimensions en pixels personnalisées ou d'un préréglage standard.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/resize-video`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| width | integer | No | - | Largeur cible en pixels (16-7680) |
| height | integer | No | - | Hauteur cible en pixels (16-4320) |
| preset | string | No | `"custom"` | Préréglage de résolution : `custom`, `2160p`, `1440p`, `1080p`, `720p`, `480p`, `360p` |
Lorsque `preset` vaut `"custom"`, au moins l'une des valeurs `width` ou `height` doit être fournie. L'autre dimension est mise à l'échelle proportionnellement.
## 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"}'
```
Redimensionner vers des dimensions personnalisées :
```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}
- Les valeurs de préréglage correspondent à des hauteurs standard (par exemple `720p` = 1280x720, `1080p` = 1920x1080). La largeur est mise à l'échelle proportionnellement à partir du rapport d'aspect source.
- Les dimensions sont arrondies à des nombres pairs, comme l'exigent la plupart des codecs vidéo.
- La résolution maximale prise en charge est 7680x4320 (8K UHD).
+44
View File
@@ -0,0 +1,44 @@
---
description: "Lit un clip vidéo à l'envers."
i18n_source_hash: 98226f4e092d
i18n_provenance: human
i18n_output_hash: 06cd0ece1e18
---
# Reverse Video {#reverse-video}
Lit un clip vidéo à l'envers. La piste audio est également inversée.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/reverse-video`
Accepte des données de formulaire multipart avec un fichier vidéo. Cet outil n'a aucun réglage configurable.
## Parameters {#parameters}
Cet outil n'a aucun paramètre. Il inverse la vidéo entière.
## 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}
- Limité aux clips d'une durée maximale de 5 minutes. Les vidéos plus longues sont rejetées avec une erreur 400.
- Les pistes vidéo et audio sont toutes deux inversées. Pour inverser la vidéo sans l'audio, coupez le son au préalable.
+55
View File
@@ -0,0 +1,55 @@
---
description: "Fait pivoter ou retourne une vidéo."
i18n_source_hash: cf9620ca62c7
i18n_provenance: human
i18n_output_hash: eaa3996d8a2d
---
# Rotate Video {#rotate-video}
Fait pivoter une vidéo de 90, 180 ou 270 degrés, ou la retourne horizontalement ou verticalement.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/rotate-video`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| transform | string | Yes | - | Transformation à appliquer : `cw90`, `ccw90`, `180`, `hflip`, `vflip` |
### Transform Values {#transform-values}
- **cw90** - Rotation de 90 degrés dans le sens horaire
- **ccw90** - Rotation de 90 degrés dans le sens antihoraire
- **180** - Rotation de 180 degrés
- **hflip** - Retournement horizontal (miroir)
- **vflip** - Retournement vertical
## 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}
- Les rotations de 90 ou 270 degrés inversent la largeur et la hauteur de la vidéo.
- Les opérations de retournement (hflip, vflip) ne modifient pas les dimensions de la vidéo.
@@ -0,0 +1,46 @@
---
description: "Réduit les tremblements de caméra grâce à une stabilisation en deux passes."
i18n_source_hash: ec908e91a752
i18n_provenance: human
i18n_output_hash: daa1f7d1791e
---
# Stabilize Video {#stabilize-video}
Réduit les tremblements de caméra dans les séquences prises à main levée à l'aide de la stabilisation vidstab en deux passes de FFmpeg.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/stabilize-video`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`. Il s'agit d'un point de terminaison asynchrone : il renvoie immédiatement `202 Accepted` et la progression est diffusée via SSE sur `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| smoothing | integer | No | `15` | Taille de la fenêtre de lissage en images (5-60). Des valeurs plus élevées produisent un mouvement plus fluide |
## 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}
- La stabilisation est un processus en deux passes : la première passe analyse le mouvement de la caméra, et la seconde applique la correction. Cela prend environ deux fois plus de temps que les outils à une seule passe.
- Des valeurs de lissage plus élevées éliminent davantage de tremblements mais peuvent introduire un léger recadrage par zoom sur les bords.
- Les mises à jour de progression sont disponibles via SSE sur `GET /api/v1/jobs/{jobId}/progress` jusqu'à la fin de la tâche.
+50
View File
@@ -0,0 +1,50 @@
---
description: "Découpe un clip d'une vidéo en spécifiant les temps de début et de fin."
i18n_source_hash: c84481641979
i18n_provenance: human
i18n_output_hash: 4d4de37910ca
---
# Trim Video {#trim-video}
Découpe un clip d'une vidéo en spécifiant les temps de début et de fin en secondes, avec une option pour des coupes précises à l'image près.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/trim-video`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| startS | number | No | `0` | Temps de début en secondes (doit être >= 0) |
| endS | number | Yes | - | Temps de fin en secondes (doit être postérieur à startS) |
| precise | boolean | No | `false` | Réencode pour des coupes précises à l'image près au lieu d'une recherche par image clé |
## 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}
- Lorsque `precise` vaut `false` (par défaut), l'outil utilise la recherche par image clé, qui est rapide mais peut commencer quelques images avant le temps demandé.
- Définir `precise` sur `true` réencode le segment pour des limites d'image exactes, mais prend plus de temps.
- La valeur `endS` doit être supérieure à `startS`.
+51
View File
@@ -0,0 +1,51 @@
---
description: "Ajuste la luminosité, le contraste, la saturation et le gamma d'une vidéo."
i18n_source_hash: 40483b79d44b
i18n_provenance: human
i18n_output_hash: ef0c85417fbf
---
# Video Color {#video-color}
Ajuste la luminosité, le contraste, la saturation et la correction gamma d'une vidéo.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-color`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| brightness | number | No | `0` | Ajustement de la luminosité (-1 à 1) |
| contrast | number | No | `1` | Multiplicateur de contraste (0-4) |
| saturation | number | No | `1` | Multiplicateur de saturation (0-3). Mettre à 0 pour un rendu en niveaux de gris |
| gamma | number | No | `1` | Correction gamma (0.1-10) |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-color \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"brightness": 0.1, "contrast": 1.2, "saturation": 1.5}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 12300000
}
```
## Notes {#notes}
- Toutes les valeurs à leurs valeurs par défaut (luminosité 0, contraste 1, saturation 1, gamma 1) ne produisent aucun changement.
- Régler la saturation sur `0` convertit la vidéo en niveaux de gris.
- Les valeurs de gamma inférieures à 1 éclaircissent les ombres, tandis que les valeurs supérieures à 1 les assombrissent.
@@ -0,0 +1,45 @@
---
description: "Normalise le volume audio de la vidéo selon la norme de diffusion."
i18n_source_hash: 078f1e819c9a
i18n_provenance: human
i18n_output_hash: 0f0b60162fcf
---
# Normalize Audio {#normalize-audio}
Normalise le volume audio de la vidéo selon la norme de sonie de diffusion EBU R128.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-loudnorm`
Accepte des données de formulaire multipart avec un fichier vidéo. Cet outil n'a aucun réglage configurable.
## Parameters {#parameters}
Cet outil n'a aucun paramètre. Il applique la normalisation de sonie EBU R128 à la piste audio.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/video-loudnorm \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4"
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 12500000
}
```
## Notes {#notes}
- Utilise le filtre `loudnorm` de FFmpeg ciblant une sonie intégrée de -16 LUFS avec un vrai pic de -1.5 dBTP et une plage de sonie de 11 LU (norme de diffusion EBU R128).
- La fréquence d'échantillonnage de l'audio source est conservée dans la sortie.
- Si la vidéo n'a pas de piste audio, la requête renvoie une erreur 400.
@@ -0,0 +1,54 @@
---
description: "Supprime les métadonnées d'une vidéo et signale ce qui a été trouvé."
i18n_source_hash: 69621bfb98ca
i18n_provenance: human
i18n_output_hash: 6dc127077d64
---
# Clean Video Metadata {#clean-video-metadata}
Supprime les métadonnées (date de création, coordonnées GPS, modèle d'appareil, balises logicielles, etc.) d'une vidéo et signale ce qui a été supprimé.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-metadata`
Accepte des données de formulaire multipart avec un fichier vidéo. Cet outil n'a aucun réglage configurable.
## Parameters {#parameters}
Cet outil n'a aucun paramètre. Il supprime toutes les métadonnées du conteneur vidéo.
## 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}
- Les métadonnées supprimées incluent les horodatages de création, les données GPS/de localisation, les informations sur l'appareil/le périphérique et les balises logicielles.
- Les flux vidéo et audio sont copiés sans réencodage, il n'y a donc aucune perte de qualité.
- Utile pour la confidentialité avant de partager des vidéos publiquement.
+49
View File
@@ -0,0 +1,49 @@
---
description: "Accélère ou ralentit une vidéo."
i18n_source_hash: 98dfc75c0507
i18n_provenance: human
i18n_output_hash: ed48742a7fdb
---
# Video Speed {#video-speed}
Accélère ou ralentit une vidéo avec une option pour préserver la hauteur tonale de l'audio.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-speed`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| factor | number | No | `2` | Multiplicateur de vitesse (0.25-4). Les valeurs supérieures à 1 accélèrent, inférieures à 1 ralentissent |
| keepPitch | boolean | No | `true` | Préserve la hauteur tonale de l'audio lors du changement de vitesse |
## 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}
- Un facteur de `2` double la vitesse de lecture (réduit de moitié la durée). Un facteur de `0.5` réduit de moitié la vitesse de lecture (double la durée).
- Lorsque `keepPitch` vaut `true`, l'audio est étiré temporellement pour que les voix sonnent de façon naturelle. Lorsqu'il vaut `false`, la hauteur tonale se décale proportionnellement à la vitesse.
- La plage valide va de 0.25x à 4x.
@@ -0,0 +1,62 @@
---
description: "Extrait les images d'une vidéo sous forme de ZIP d'images."
i18n_source_hash: b06f038dafb3
i18n_provenance: human
i18n_output_hash: df502a36e5c0
---
# Video to Frames {#video-to-frames}
Extrait les images individuelles d'une vidéo et les télécharge sous forme d'archive ZIP d'images PNG ou JPG.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-frames`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| mode | string | No | `"all"` | Mode d'extraction : `all`, `nth`, `timestamps` |
| n | integer | No | `10` | Extrait chaque Nième image (2-1000). Utilisé uniquement lorsque le mode est `"nth"` |
| timestamps | string | No | `""` | Horodatages en secondes séparés par des virgules. Requis lorsque le mode est `"timestamps"` |
| format | string | No | `"png"` | Format d'image pour les images extraites : `png`, `jpg` |
## Example Request {#example-request}
Extraire chaque 30e image en 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"}'
```
Extraire des images à des horodatages spécifiques :
```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}
- Le mode `all` extrait chaque image et peut produire des fichiers ZIP très volumineux pour les longues vidéos. Utilisez le mode `nth` ou `timestamps` pour une extraction sélective.
- Le PNG préserve la qualité intégrale mais produit des fichiers plus volumineux. Le JPG est plus petit mais avec perte.
- La réponse est téléchargée sous forme d'archive ZIP contenant des fichiers image numérotés séquentiellement.
+49
View File
@@ -0,0 +1,49 @@
---
description: "Transforme un clip vidéo en GIF animé."
i18n_source_hash: f729dde8cd55
i18n_provenance: human
i18n_output_hash: 6853015c7c15
---
# Video to GIF {#video-to-gif}
Transforme un clip vidéo en GIF animé avec une fréquence d'images, une largeur, un temps de début et une durée configurables.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-gif`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`. Il s'agit d'un point de terminaison asynchrone : il renvoie immédiatement `202 Accepted` et la progression est diffusée via SSE sur `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fps | integer | No | `12` | Fréquence d'images de sortie (1-30) |
| width | integer | No | `480` | Largeur de sortie en pixels (64-1280). La hauteur est mise à l'échelle proportionnellement |
| startS | number | No | `0` | Temps de début en secondes (doit être >= 0) |
| durationS | number | No | `5` | Durée en secondes (supérieure à 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}
- Des valeurs plus faibles de `fps` et `width` produisent des fichiers GIF plus petits. Un GIF de 480px de large à 12 fps offre généralement un bon compromis.
- La durée maximale est de 60 secondes. Les clips plus longs produisent des fichiers très volumineux.
- Les mises à jour de progression sont disponibles via SSE sur `GET /api/v1/jobs/{jobId}/progress` jusqu'à la fin de la tâche.
+51
View File
@@ -0,0 +1,51 @@
---
description: "Convertit un clip vidéo en image WebP animée."
i18n_source_hash: 7b1a22459bd1
i18n_provenance: human
i18n_output_hash: b8e2279cc53a
---
# Video to WebP {#video-to-webp}
Convertit un clip vidéo en image WebP animée avec une fréquence d'images, une largeur et une qualité configurables.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-webp`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| fps | integer | No | `12` | Fréquence d'images de sortie (1-30) |
| width | integer | No | `480` | Largeur de sortie en pixels (16-1920). La hauteur est mise à l'échelle proportionnellement |
| quality | integer | No | `75` | Qualité de compression WebP (1-100) |
| loop | boolean | No | `true` | Boucle l'animation |
## 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}
- Le WebP animé produit des fichiers plus petits que le GIF avec une meilleure prise en charge des couleurs (palette 24 bits contre 8 bits).
- Des valeurs plus faibles de `quality` produisent des fichiers plus petits au détriment de la fidélité visuelle.
- Réglez `loop` sur `false` pour les animations qui doivent être jouées une seule fois puis s'arrêter.
@@ -0,0 +1,58 @@
---
description: "Incruste un filigrane texte sur les images de la vidéo."
i18n_source_hash: 937bb075b894
i18n_provenance: human
i18n_output_hash: 0a8884b28a29
---
# Watermark Video {#watermark-video}
Incruste un filigrane texte sur chaque image d'une vidéo avec une position, une taille, une opacité et une couleur configurables.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/watermark-video`
Accepte des données de formulaire multipart avec un fichier vidéo et un champ JSON `settings`.
## Parameters {#parameters}
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| text | string | Yes | - | Texte du filigrane (1-200 caractères) |
| position | string | No | `"br"` | Position sur l'image : `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
| fontSize | integer | No | `36` | Taille de police en pixels (8-120) |
| opacity | number | No | `0.5` | Opacité du filigrane (0.05-1) |
| color | string | No | `"#ffffff"` | Couleur hexadécimale du texte (par exemple `"#ffffff"`) |
### Position Values {#position-values}
- **tl** - En haut à gauche, **tc** - En haut au centre, **tr** - En haut à droite
- **l** - Au milieu à gauche, **c** - Au centre, **r** - Au milieu à droite
- **bl** - En bas à gauche, **bc** - En bas au centre, **br** - En bas à droite
## 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}
- Le filigrane est incrusté définitivement dans les images de la vidéo et ne peut pas être retiré après le traitement.
- Le filigrane utilise une police sans empattement intégrée à FFmpeg.
- Pour les filigranes image, utilisez plutôt l'outil image Watermark.