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: "Adicione barras de cor sólida para se ajustar a uma proporção alvo."
i18n_source_hash: b8e17dffc341
i18n_provenance: human
i18n_output_hash: 1997e726d6c8
---
# Aspect Pad {#aspect-pad}
Adicione barras letterbox ou pillarbox de cor sólida para ajustar um vídeo a uma proporção alvo sem recortar.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/aspect-pad`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| target | string | Não | `"9:16"` | Proporção alvo: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
| color | string | Não | `"#000000"` | Cor hexadecimal para as barras de preenchimento (por exemplo `"#000000"` para preto) |
## 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}
- Se o vídeo já corresponder à proporção alvo, o arquivo é retornado sem alteração.
- Use `9:16` para formatos verticais/retrato de mídias sociais (TikTok, Reels, Shorts).
- Para preenchimento desfocado em vez de cor sólida, use a ferramenta Blur Pad.
@@ -0,0 +1,48 @@
---
description: "Gere arquivos de legenda a partir das faixas de áudio de vídeos usando IA."
i18n_source_hash: 35b1e78501ad
i18n_provenance: human
i18n_output_hash: 07156969c129
---
# Auto Subtitles {#auto-subtitles}
Gere arquivos de legenda a partir da faixa de áudio de um vídeo usando reconhecimento de fala com tecnologia de IA (faster-whisper). Oferece suporte à detecção automática e a 10 idiomas explícitos.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/auto-subtitles`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`. Este é um endpoint assíncrono - ele retorna `202 Accepted` imediatamente e o progresso é transmitido via SSE em `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| language | string | Não | `"auto"` | Idioma da fala: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko`, `id`, `th`, `vi` |
| format | string | Não | `"srt"` | Formato de legenda de saída: `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}
- Esta é uma ferramenta de IA que requer que o pacote de recurso **transcription** esteja instalado. Se o pacote não estiver instalado, a API retorna `501 Feature Not Installed` com instruções para instalá-lo pela interface de administração.
- A opção de idioma `auto` usa a detecção de idioma integrada do whisper. Especificar o idioma explicitamente melhora a precisão e a velocidade.
- SRT é o formato de legenda com suporte mais amplo. VTT (WebVTT) é o padrão para reprodutores de vídeo web.
- Atualizações de progresso ficam disponíveis via SSE em `GET /api/v1/jobs/{jobId}/progress` até o job ser concluído.
+49
View File
@@ -0,0 +1,49 @@
---
description: "Preencha as barras com uma cópia desfocada do vídeo."
i18n_source_hash: 0c72aaefc6de
i18n_provenance: human
i18n_output_hash: 04228291a6b2
---
# Blur Pad {#blur-pad}
Ajuste um vídeo a uma proporção alvo preenchendo a área de preenchimento com uma cópia desfocada e redimensionada do vídeo, em vez de barras de cor sólida.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/blur-pad`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| target | string | Não | `"16:9"` | Proporção alvo: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
| blur | number | Não | `20` | Sigma de desfoque gaussiano para o plano de fundo (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}
- Valores de desfoque mais altos produzem um plano de fundo mais suave e abstrato. Valores mais baixos mantêm mais detalhes visíveis.
- Se o vídeo já corresponder à proporção alvo, o arquivo é retornado sem alteração.
- Para preenchimento de cor sólida, use a ferramenta Aspect Pad.
@@ -0,0 +1,47 @@
---
description: "Renderiza legendas permanentemente nos quadros do vídeo."
i18n_source_hash: 2d3111589db0
i18n_provenance: human
i18n_output_hash: 4227ae56ec6f
---
# Burn Subtitles {#burn-subtitles}
Renderiza permanentemente (embute) legendas de um arquivo SRT, VTT ou ASS em cada quadro de um vídeo.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/burn-subtitles`
Aceita dados de formulário multipart com um arquivo de vídeo e um arquivo de legenda. Este é um endpoint assíncrono - ele retorna `202 Accepted` imediatamente e o progresso é transmitido via SSE em `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| fontSize | integer | Não | `24` | Tamanho da fonte da legenda em 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}
- Envie dois arquivos: o primeiro deve ser um vídeo, o segundo deve ser um arquivo de legenda (.srt, .vtt ou .ass).
- As legendas embutidas passam a fazer parte permanente do vídeo e não podem ser desativadas pelo espectador. Para legendas que podem ser ativadas e desativadas, use a ferramenta Embed Subtitles.
- As atualizações de progresso ficam disponíveis via SSE em `GET /api/v1/jobs/{jobId}/progress` até que o job seja concluído.
+48
View File
@@ -0,0 +1,48 @@
---
description: "Altera a taxa de quadros de um vídeo."
i18n_source_hash: 2bffbd04a1cb
i18n_provenance: human
i18n_output_hash: 960affca6cb3
---
# Change FPS {#change-fps}
Altera a taxa de quadros de um vídeo para um valor de destino entre 1 e 120 fps.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/change-fps`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| fps | number | Não | `30` | Taxa de quadros de destino (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}
- Reduzir a taxa de quadros descarta quadros e diminui o tamanho do arquivo. Aumentá-la duplica quadros para preencher a lacuna, mas não adiciona detalhes reais de movimento.
- Valores de destino comuns: 24 (cinema), 30 (web/broadcast), 60 (reprodução suave).
- A faixa de áudio é preservada na sua taxa de amostragem original.
@@ -0,0 +1,47 @@
---
description: "Reduz o tamanho do arquivo de vídeo com controle de qualidade."
i18n_source_hash: 9cc1f1acf74e
i18n_provenance: human
i18n_output_hash: 3e2c801a8f20
---
# Compress Video {#compress-video}
Reduz o tamanho do arquivo de vídeo usando uma força de compressão configurável e redução opcional de resolução.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/compress-video`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`. Este é um endpoint assíncrono - ele retorna `202 Accepted` imediatamente e o progresso é transmitido via SSE em `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| quality | string | Não | `"balanced"` | Força de compressão: `light`, `balanced`, `strong` |
| resolution | string | Não | `"original"` | Resolução de saída: `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}
- O preset `light` preserva a qualidade quase original. O preset `strong` reduz o tamanho do arquivo de forma agressiva à custa da fidelidade visual.
- Reduzir a resolução (por exemplo, de 4K para 720p) se soma à compressão para uma redução significativa de tamanho.
- As atualizações de progresso ficam disponíveis via SSE em `GET /api/v1/jobs/{jobId}/progress` até que o job seja concluído.
@@ -0,0 +1,47 @@
---
description: "Converte vídeos entre MP4, MOV, WebM, AVI e MKV."
i18n_source_hash: 8f9e6418b1c6
i18n_provenance: human
i18n_output_hash: 54711fa81e52
---
# Convert Video {#convert-video}
Converte vídeos entre os formatos MP4, MOV, WebM, AVI e MKV com presets de qualidade configuráveis.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/convert-video`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`. Este é um endpoint assíncrono - ele retorna `202 Accepted` imediatamente e o progresso é transmitido via SSE em `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| format | string | Não | `"mp4"` | Formato de saída: `mp4`, `mov`, `webm`, `avi`, `mkv` |
| quality | string | Não | `"balanced"` | Preset de qualidade: `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}
- O preset de qualidade `high` produz a melhor fidelidade visual, mas arquivos maiores. O preset `small` comprime de forma agressiva para o menor tamanho de arquivo.
- A saída WebM usa codificação VP9. MP4 e MOV usam H.264. AVI e MKV estão disponíveis para fluxos de trabalho legados ou de arquivamento.
- As atualizações de progresso ficam disponíveis via SSE em `GET /api/v1/jobs/{jobId}/progress` até que o job seja concluído.
+51
View File
@@ -0,0 +1,51 @@
---
description: "Recorta uma região de um vídeo."
i18n_source_hash: fab11f71a202
i18n_provenance: human
i18n_output_hash: 39215795b014
---
# Crop Video {#crop-video}
Recorta uma região retangular de um vídeo especificando o tamanho e a posição da região.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/crop-video`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| width | integer | Sim | - | Largura da região de recorte em pixels (mínimo 16) |
| height | integer | Sim | - | Altura da região de recorte em pixels (mínimo 16) |
| x | integer | Não | `0` | Deslocamento horizontal a partir do canto superior esquerdo |
| y | integer | Não | `0` | Deslocamento vertical a partir do canto superior esquerdo |
## 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}
- A região de recorte deve caber dentro das dimensões do vídeo. Se `x + width` ou `y + height` exceder o tamanho da origem, a requisição retorna um erro 400.
- O tamanho mínimo de recorte é 16x16 pixels.
- As dimensões são arredondadas para números pares, conforme exigido pela maioria dos codecs de vídeo.
@@ -0,0 +1,49 @@
---
description: "Multiplexa uma faixa de legenda no contêiner do vídeo."
i18n_source_hash: be272730fff5
i18n_provenance: human
i18n_output_hash: 57fd310a985d
---
# Embed Subtitles {#embed-subtitles}
Multiplexa um arquivo de legenda no contêiner do vídeo como uma faixa de legenda soft que os espectadores podem ativar ou desativar.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/embed-subtitles`
Aceita dados de formulário multipart com um arquivo de vídeo e um arquivo de legenda, além de um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| language | string | Não | `"eng"` | Código de idioma ISO 639-2/B (3 letras minúsculas, por exemplo `"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}
- Envie dois arquivos: o primeiro deve ser um vídeo, o segundo deve ser um arquivo de legenda (.srt, .vtt ou .ass).
- As legendas embutidas (soft) podem ser ativadas e desativadas pelo espectador no seu reprodutor de mídia. Para legendas permanentemente visíveis, use a ferramenta Burn Subtitles.
- O código de idioma é armazenado como metadado no contêiner e ajuda os reprodutores de mídia a rotular a faixa de legenda.
@@ -0,0 +1,48 @@
---
description: "Extrai a faixa de áudio de um vídeo."
i18n_source_hash: f5b8330a5f89
i18n_provenance: human
i18n_output_hash: 1607d7553340
---
# Extract Audio {#extract-audio}
Extrai a faixa de áudio de um arquivo de vídeo e a salva como MP3, WAV, M4A ou OGG.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/extract-audio`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| format | string | Não | `"mp3"` | Formato de áudio de saída: `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}
- Se o vídeo não tiver faixa de áudio, a requisição retorna um erro 400.
- MP3 tem perdas, mas é amplamente compatível. WAV não tem perdas, mas é grande. M4A (AAC) oferece um bom equilíbrio entre qualidade e tamanho. OGG está disponível para fluxos de trabalho com codecs abertos.
- Quando o áudio de origem já é AAC e o formato de saída é M4A, o stream de áudio é copiado sem recodificação.
@@ -0,0 +1,45 @@
---
description: "Extrai a faixa de legenda de um vídeo como um arquivo SRT."
i18n_source_hash: 48db860f6676
i18n_provenance: human
i18n_output_hash: 3bbcc61710ae
---
# Extract Subtitles {#extract-subtitles}
Extrai a faixa de legenda embutida de um contêiner de vídeo e a baixa como um arquivo SRT.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/extract-subtitles`
Aceita dados de formulário multipart com um arquivo de vídeo. Esta ferramenta não tem configurações ajustáveis.
## Parameters {#parameters}
Esta ferramenta não tem parâmetros. Ela extrai a primeira faixa de legenda encontrada no contêiner do vídeo.
## 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}
- O vídeo deve conter uma faixa de legenda embutida. Se nenhuma faixa de legenda for encontrada, a requisição retorna um erro 400.
- Se o vídeo tiver várias faixas de legenda, a primeira é extraída.
- O formato de saída é SRT, independentemente do formato original da legenda no contêiner.
@@ -0,0 +1,48 @@
---
description: "Converte um GIF animado em um vídeo MP4, WebM ou MOV."
i18n_source_hash: c3737b31146d
i18n_provenance: human
i18n_output_hash: 110f0e5c0b0f
---
# GIF to Video {#gif-to-video}
Converte um GIF animado em um arquivo de vídeo MP4, WebM ou MOV compacto.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/gif-to-video`
Aceita dados de formulário multipart com um arquivo GIF e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| format | string | Não | `"mp4"` | Formato de saída: `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}
- Converter GIF para vídeo normalmente reduz o tamanho do arquivo em 80-90% mantendo a mesma qualidade visual.
- Apenas arquivos GIF animados são aceitos. Imagens estáticas devem usar a ferramenta Convert de imagem.
- MP4 e MOV usam codificação H.264, WebM usa VP9.
@@ -0,0 +1,54 @@
---
description: "Transforma um conjunto de imagens em um vídeo de slideshow."
i18n_source_hash: 2c6f183feb6d
i18n_provenance: human
i18n_output_hash: cb3d679c6722
---
# Images to Video {#images-to-video}
Transforma um conjunto de imagens em um vídeo de slideshow com duração por imagem, resolução e taxa de quadros configuráveis.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/images-to-video`
Aceita dados de formulário multipart com dois ou mais arquivos de imagem e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| secondsPerImage | number | Não | `2` | Duração de exibição por imagem em segundos (0.5-10) |
| resolution | string | Não | `"720p"` | Resolução de saída: `1080p`, `720p`, `square` |
| fps | integer | Não | `30` | Taxa de quadros de saída (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}
- Aceita 2-60 arquivos de imagem por requisição. As imagens aparecem no vídeo na ordem de upload.
- As imagens são redimensionadas e preenchidas para caber na resolução de destino, preservando a proporção.
- A opção de resolução `square` produz um vídeo 1080x1080, útil para redes sociais.
- O formato de saída é sempre MP4 (H.264).
@@ -0,0 +1,46 @@
---
description: "Une vários clipes de vídeo em um único arquivo."
i18n_source_hash: 90463dfbb580
i18n_provenance: human
i18n_output_hash: dc97ef747e01
---
# Merge Videos {#merge-videos}
Une vários clipes de vídeo em um único arquivo MP4. Todas as entradas são normalizadas para a resolução do primeiro vídeo e 30 fps.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/merge-videos`
Aceita dados de formulário multipart com dois ou mais arquivos de vídeo. Este é um endpoint assíncrono - ele retorna `202 Accepted` imediatamente e o progresso é transmitido via SSE em `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
Esta ferramenta não tem parâmetros de configuração. Envie 2-10 arquivos de vídeo como várias partes `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}
- Os clipes são concatenados na ordem em que são enviados.
- Todos os clipes são recodificados para corresponder à resolução, taxa de quadros (30 fps) e codec (H.264) do primeiro clipe. Entradas incompatíveis são normalizadas automaticamente.
- Aceita 2-10 arquivos de vídeo por requisição.
- As atualizações de progresso ficam disponíveis via SSE em `GET /api/v1/jobs/{jobId}/progress` até que o job seja concluído.
+44
View File
@@ -0,0 +1,44 @@
---
description: "Remove a faixa de áudio de um vídeo."
i18n_source_hash: 9a0c60bbcaa3
i18n_provenance: human
i18n_output_hash: 8cb8043195b5
---
# Mute Video {#mute-video}
Remove a faixa de áudio de um vídeo, deixando apenas o stream visual.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/mute-video`
Aceita dados de formulário multipart com um arquivo de vídeo. Esta ferramenta não tem configurações ajustáveis.
## Parameters {#parameters}
Esta ferramenta não tem parâmetros. Ela remove a faixa de áudio do vídeo enviado.
## 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}
- O stream de vídeo é copiado sem recodificação, então não há perda de qualidade.
- Se o vídeo de entrada não tiver faixa de áudio, o arquivo é retornado inalterado.
@@ -0,0 +1,46 @@
---
description: "Substitui a faixa de áudio de um vídeo por outro arquivo."
i18n_source_hash: fabc2a953103
i18n_provenance: human
i18n_output_hash: ef52405af2b3
---
# Replace Audio {#replace-audio}
Substitui a faixa de áudio de um vídeo por um arquivo de áudio. Envie tanto um vídeo quanto um arquivo de áudio.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/replace-audio`
Aceita dados de formulário multipart com exatamente dois arquivos: um arquivo de vídeo seguido de um arquivo de áudio.
## Parameters {#parameters}
Esta ferramenta não tem parâmetros de configuração. Envie um arquivo de vídeo e um arquivo de áudio como duas partes `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}
- Exatamente dois arquivos devem ser enviados: o primeiro deve ser um vídeo, o segundo deve ser um arquivo de áudio.
- Se o arquivo de áudio for mais longo que o vídeo, ele é cortado para corresponder à duração do vídeo. Se for mais curto, o vídeo restante é reproduzido em silêncio.
- O stream de vídeo é copiado sem recodificação, então não há perda de qualidade de vídeo.
@@ -0,0 +1,61 @@
---
description: "Escala um vídeo para uma nova resolução ou tamanho predefinido."
i18n_source_hash: bb1f67871fea
i18n_provenance: human
i18n_output_hash: a449db5e331c
---
# Resize Video {#resize-video}
Escala um vídeo para uma nova resolução usando dimensões de pixels personalizadas ou um preset padrão.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/resize-video`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| width | integer | Não | - | Largura de destino em pixels (16-7680) |
| height | integer | Não | - | Altura de destino em pixels (16-4320) |
| preset | string | Não | `"custom"` | Preset de resolução: `custom`, `2160p`, `1440p`, `1080p`, `720p`, `480p`, `360p` |
Quando `preset` é `"custom"`, pelo menos um entre `width` ou `height` deve ser fornecido. A outra dimensão é escalada proporcionalmente.
## 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"}'
```
Redimensionar para dimensões personalizadas:
```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}
- Os valores de preset mapeiam para alturas padrão (por exemplo, `720p` = 1280x720, `1080p` = 1920x1080). A largura é escalada proporcionalmente a partir da proporção da origem.
- As dimensões são arredondadas para números pares, conforme exigido pela maioria dos codecs de vídeo.
- A resolução máxima suportada é 7680x4320 (8K UHD).
@@ -0,0 +1,44 @@
---
description: "Reproduz um clipe de vídeo de trás para frente."
i18n_source_hash: 98226f4e092d
i18n_provenance: human
i18n_output_hash: 0798564a0e78
---
# Reverse Video {#reverse-video}
Reproduz um clipe de vídeo de trás para frente. A faixa de áudio também é invertida.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/reverse-video`
Aceita dados de formulário multipart com um arquivo de vídeo. Esta ferramenta não tem configurações ajustáveis.
## Parameters {#parameters}
Esta ferramenta não tem parâmetros. Ela inverte o vídeo inteiro.
## 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}
- Limitado a clipes de até 5 minutos de duração. Vídeos mais longos são rejeitados com um erro 400.
- Tanto as faixas de vídeo quanto de áudio são invertidas. Para inverter o vídeo sem áudio, mute-o primeiro.
@@ -0,0 +1,55 @@
---
description: "Gira ou espelha um vídeo."
i18n_source_hash: cf9620ca62c7
i18n_provenance: human
i18n_output_hash: e830bad28e9e
---
# Rotate Video {#rotate-video}
Gira um vídeo em 90, 180 ou 270 graus, ou o espelha horizontalmente ou verticalmente.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/rotate-video`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| transform | string | Sim | - | Transformação a aplicar: `cw90`, `ccw90`, `180`, `hflip`, `vflip` |
### Transform Values {#transform-values}
- **cw90** - Gira 90 graus no sentido horário
- **ccw90** - Gira 90 graus no sentido anti-horário
- **180** - Gira 180 graus
- **hflip** - Espelha horizontalmente (espelho)
- **vflip** - Espelha verticalmente
## 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}
- Rotações de 90 ou 270 graus trocam a largura e a altura do vídeo.
- As operações de espelhamento (hflip, vflip) não alteram as dimensões do vídeo.
@@ -0,0 +1,46 @@
---
description: "Reduz a trepidação da câmera com estabilização em duas passagens."
i18n_source_hash: ec908e91a752
i18n_provenance: human
i18n_output_hash: c153d1466ace
---
# Stabilize Video {#stabilize-video}
Reduz a trepidação da câmera em filmagens feitas à mão usando a estabilização vidstab em duas passagens do FFmpeg.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/stabilize-video`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`. Este é um endpoint assíncrono - ele retorna `202 Accepted` imediatamente e o progresso é transmitido via SSE em `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| smoothing | integer | Não | `15` | Tamanho da janela de suavização em quadros (5-60). Valores mais altos produzem movimento mais suave |
## 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}
- A estabilização é um processo em duas passagens: a primeira passagem analisa o movimento da câmera e a segunda aplica a correção. Isso leva cerca de duas vezes mais tempo do que as ferramentas de passagem única.
- Valores de suavização mais altos removem mais trepidação, mas podem introduzir um leve recorte de zoom nas bordas.
- As atualizações de progresso ficam disponíveis via SSE em `GET /api/v1/jobs/{jobId}/progress` até que o job seja concluído.
+50
View File
@@ -0,0 +1,50 @@
---
description: "Extrai um clipe de um vídeo especificando os tempos de início e fim."
i18n_source_hash: c84481641979
i18n_provenance: human
i18n_output_hash: d3f2bc734849
---
# Trim Video {#trim-video}
Extrai um clipe de um vídeo especificando os tempos de início e fim em segundos, com uma opção para cortes precisos por quadro.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/trim-video`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| startS | number | Não | `0` | Tempo de início em segundos (deve ser >= 0) |
| endS | number | Sim | - | Tempo de fim em segundos (deve ser posterior a startS) |
| precise | boolean | Não | `false` | Recodifica para cortes precisos por quadro em vez de busca por keyframe |
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/video/trim-video \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@clip.mp4" \
-F 'settings={"startS": 5, "endS": 30, "precise": true}'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4",
"originalSize": 12500000,
"processedSize": 4200000
}
```
## Notes {#notes}
- Quando `precise` é `false` (o padrão), a ferramenta usa busca por keyframe, que é rápida mas pode começar alguns quadros antes do tempo solicitado.
- Definir `precise` como `true` recodifica o segmento para limites exatos de quadro, mas leva mais tempo.
- O valor de `endS` deve ser maior que `startS`.
@@ -0,0 +1,51 @@
---
description: "Ajusta brilho, contraste, saturação e gama de um vídeo."
i18n_source_hash: 40483b79d44b
i18n_provenance: human
i18n_output_hash: 51a76e6634a6
---
# Video Color {#video-color}
Ajusta o brilho, contraste, saturação e correção de gama em um vídeo.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-color`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| brightness | number | Não | `0` | Ajuste de brilho (-1 a 1) |
| contrast | number | Não | `1` | Multiplicador de contraste (0-4) |
| saturation | number | Não | `1` | Multiplicador de saturação (0-3). Defina como 0 para escala de cinza |
| gamma | number | Não | `1` | Correção de gama (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}
- Todos os valores nos seus padrões (brilho 0, contraste 1, saturação 1, gama 1) não produzem nenhuma alteração.
- Definir a saturação como `0` converte o vídeo para escala de cinza.
- Valores de gama abaixo de 1 clareiam as sombras, enquanto valores acima de 1 as escurecem.
@@ -0,0 +1,45 @@
---
description: "Normaliza o volume do áudio do vídeo para o padrão de broadcast."
i18n_source_hash: 078f1e819c9a
i18n_provenance: human
i18n_output_hash: ae3de30eeee0
---
# Normalize Audio {#normalize-audio}
Normaliza o volume do áudio do vídeo para o padrão de loudness de broadcast EBU R128.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-loudnorm`
Aceita dados de formulário multipart com um arquivo de vídeo. Esta ferramenta não tem configurações ajustáveis.
## Parameters {#parameters}
Esta ferramenta não tem parâmetros. Ela aplica a normalização de loudness EBU R128 à faixa de áudio.
## 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}
- Usa o filtro `loudnorm` do FFmpeg, com alvo de -16 LUFS de loudness integrado, -1.5 dBTP de pico verdadeiro e 11 LU de faixa de loudness (padrão de broadcast EBU R128).
- A taxa de amostragem do áudio de origem é preservada na saída.
- Se o vídeo não tiver faixa de áudio, a requisição retorna um erro 400.
@@ -0,0 +1,54 @@
---
description: "Remove metadados de um vídeo e informa o que foi encontrado."
i18n_source_hash: 69621bfb98ca
i18n_provenance: human
i18n_output_hash: b34d5f95166c
---
# Clean Video Metadata {#clean-video-metadata}
Remove metadados (data de criação, coordenadas GPS, modelo da câmera, tags de software, etc.) de um vídeo e informa o que foi removido.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-metadata`
Aceita dados de formulário multipart com um arquivo de vídeo. Esta ferramenta não tem configurações ajustáveis.
## Parameters {#parameters}
Esta ferramenta não tem parâmetros. Ela remove todos os metadados do contêiner do vídeo.
## 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}
- Os metadados removidos incluem carimbos de data/hora de criação, dados de GPS/localização, informações da câmera/dispositivo e tags de software.
- Os streams de vídeo e áudio são copiados sem recodificação, então não há perda de qualidade.
- Útil para privacidade antes de compartilhar vídeos publicamente.
@@ -0,0 +1,49 @@
---
description: "Acelera ou desacelera um vídeo."
i18n_source_hash: 98dfc75c0507
i18n_provenance: human
i18n_output_hash: 192dac2ca053
---
# Video Speed {#video-speed}
Acelera ou desacelera um vídeo com uma opção para preservar o tom do áudio.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-speed`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| factor | number | Não | `2` | Multiplicador de velocidade (0.25-4). Valores acima de 1 aceleram, abaixo de 1 desaceleram |
| keepPitch | boolean | Não | `true` | Preserva o tom do áudio ao alterar a velocidade |
## 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}
- Um fator de `2` dobra a velocidade de reprodução (reduz a duração pela metade). Um fator de `0.5` reduz a velocidade de reprodução pela metade (dobra a duração).
- Quando `keepPitch` é `true`, o áudio é esticado no tempo para que as vozes soem naturais. Quando `false`, o tom muda proporcionalmente com a velocidade.
- A faixa válida é de 0.25x a 4x.
@@ -0,0 +1,62 @@
---
description: "Extrai quadros de um vídeo como um ZIP de imagens."
i18n_source_hash: b06f038dafb3
i18n_provenance: human
i18n_output_hash: a95eac37937c
---
# Video to Frames {#video-to-frames}
Extrai quadros individuais de um vídeo e os baixa como um arquivo ZIP de imagens PNG ou JPG.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-frames`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| mode | string | Não | `"all"` | Modo de extração: `all`, `nth`, `timestamps` |
| n | integer | Não | `10` | Extrai a cada N-ésimo quadro (2-1000). Usado apenas quando o modo é `"nth"` |
| timestamps | string | Não | `""` | Carimbos de tempo em segundos separados por vírgula. Obrigatório quando o modo é `"timestamps"` |
| format | string | Não | `"png"` | Formato de imagem para os quadros extraídos: `png`, `jpg` |
## Example Request {#example-request}
Extrair a cada 30º quadro como 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"}'
```
Extrair quadros em carimbos de tempo específicos:
```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}
- O modo `all` extrai cada quadro e pode produzir arquivos ZIP muito grandes para vídeos longos. Use o modo `nth` ou `timestamps` para extração seletiva.
- PNG preserva a qualidade total, mas produz arquivos maiores. JPG é menor, mas tem perdas.
- A resposta é baixada como um arquivo ZIP contendo arquivos de imagem numerados sequencialmente.
@@ -0,0 +1,49 @@
---
description: "Transforma um clipe de vídeo em um GIF animado."
i18n_source_hash: f729dde8cd55
i18n_provenance: human
i18n_output_hash: ff4f8c864094
---
# Video to GIF {#video-to-gif}
Transforma um clipe de vídeo em um GIF animado com taxa de quadros, largura, tempo de início e duração configuráveis.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-gif`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`. Este é um endpoint assíncrono - ele retorna `202 Accepted` imediatamente e o progresso é transmitido via SSE em `GET /api/v1/jobs/{jobId}/progress`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| fps | integer | Não | `12` | Taxa de quadros de saída (1-30) |
| width | integer | Não | `480` | Largura de saída em pixels (64-1280). A altura é escalada proporcionalmente |
| startS | number | Não | `0` | Tempo de início em segundos (deve ser >= 0) |
| durationS | number | Não | `5` | Duração em segundos (acima de 0, máx 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}
- Valores mais baixos de `fps` e `width` produzem arquivos GIF menores. Um GIF de 480px de largura a 12 fps costuma ser um bom equilíbrio.
- A duração máxima é de 60 segundos. Clipes mais longos produzem arquivos muito grandes.
- As atualizações de progresso ficam disponíveis via SSE em `GET /api/v1/jobs/{jobId}/progress` até que o job seja concluído.
@@ -0,0 +1,51 @@
---
description: "Converte um clipe de vídeo em uma imagem WebP animada."
i18n_source_hash: 7b1a22459bd1
i18n_provenance: human
i18n_output_hash: 275276831ce5
---
# Video to WebP {#video-to-webp}
Converte um clipe de vídeo em uma imagem WebP animada com taxa de quadros, largura e qualidade configuráveis.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/video-to-webp`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| fps | integer | Não | `12` | Taxa de quadros de saída (1-30) |
| width | integer | Não | `480` | Largura de saída em pixels (16-1920). A altura é escalada proporcionalmente |
| quality | integer | Não | `75` | Qualidade de compressão WebP (1-100) |
| loop | boolean | Não | `true` | Repete a animação em loop |
## 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}
- O WebP animado produz arquivos menores que o GIF com melhor suporte a cores (paleta de 24 bits vs 8 bits).
- Valores mais baixos de `quality` produzem arquivos menores à custa da fidelidade visual.
- Defina `loop` como `false` para animações que devem ser reproduzidas uma vez e parar.
@@ -0,0 +1,58 @@
---
description: "Grava uma marca d'água de texto nos quadros do vídeo."
i18n_source_hash: 937bb075b894
i18n_provenance: human
i18n_output_hash: d219586f1d35
---
# Watermark Video {#watermark-video}
Grava uma marca d'água de texto em cada quadro de um vídeo com posição, tamanho, opacidade e cor configuráveis.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/video/watermark-video`
Aceita dados de formulário multipart com um arquivo de vídeo e um campo JSON `settings`.
## Parameters {#parameters}
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|-----------|------|----------|---------|-------------|
| text | string | Sim | - | Texto da marca d'água (1-200 caracteres) |
| position | string | Não | `"br"` | Posição no quadro: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
| fontSize | integer | Não | `36` | Tamanho da fonte em pixels (8-120) |
| opacity | number | Não | `0.5` | Opacidade da marca d'água (0.05-1) |
| color | string | Não | `"#ffffff"` | Cor hexadecimal do texto (por exemplo `"#ffffff"`) |
### Position Values {#position-values}
- **tl** - Superior esquerdo, **tc** - Superior centro, **tr** - Superior direito
- **l** - Meio esquerdo, **c** - Centro, **r** - Meio direito
- **bl** - Inferior esquerdo, **bc** - Inferior centro, **br** - Inferior direito
## 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}
- A marca d'água é renderizada permanentemente nos quadros do vídeo e não pode ser removida após o processamento.
- A marca d'água usa uma fonte sans-serif embutida no FFmpeg.
- Para marcas d'água de imagem, use a ferramenta Watermark de imagem.