mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(docs-i18n): translate all documentation into 20 languages
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user