TL;DR
O FFmpeg aumenta a resolução de vídeo com -vf "scale=1920:1080:flags=lanczos" — Lanczos é o melhor algoritmo de escalonamento para aumento de resolução. Para remoção de ruído, hqdn3d reduz o granulado enquanto preserva as bordas. Para estabilização, vidstab lida com tremores de câmera em duas passagens. Combine os três em uma cadeia de filtros para um pipeline eficiente de melhoria de qualidade.
Introdução
A melhoria da qualidade de vídeo com FFmpeg vai além de apenas mudar a resolução. O processo ideal combina escalonamento, denoising inteligente e estabilização. Cada etapa ataca um problema diferente: suavidade ou pixelização, granulado/ruído e tremores de câmera.
Este guia mostra como implementar cada técnica separadamente e como combiná-las para um pipeline de automação.
Algoritmos de escalonamento
O algoritmo de escalonamento define como o FFmpeg preenche novos pixels ao aumentar a resolução. A escolha afeta diretamente a qualidade visual da saída.
| Algoritmo | Velocidade | Qualidade | Melhor para |
|---|---|---|---|
neighbor |
Mais Rápido | Mais Baixa | Pixel art |
bilinear |
Rápido | Baixa | Crítico para velocidade |
bicubic |
Médio | Boa | Redução de escala |
lanczos |
Mais Lento | Melhor | Aumento de escala |
Exemplo: Aumentar escala para 1080p usando Lanczos
ffmpeg -i input_720p.mp4 -vf "scale=1920:1080:flags=lanczos" -c:v libx264 -crf 20 output_1080p.mp4
Exemplo: Manter proporção de aspecto
ffmpeg -i input.mp4 -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 output.mp4
Usar -2 calcula automaticamente a altura, mantendo a proporção e garantindo múltiplos de 2.
Exemplo: Escalonar para 4K
ffmpeg -i input.mp4 -vf "scale=3840:-2:flags=lanczos" -c:v libx264 -crf 18 -preset slow output_4k.mp4
O parâmetro -preset slow otimiza ainda mais a compressão, importante para alta resolução.
Remoção de ruído com hqdn3d
O filtro hqdn3d remove ruído/granulação preservando detalhes.
Remoção de ruído padrão:
ffmpeg -i noisy_video.mp4 -vf "hqdn3d=4:3:6:4.5" -c:v libx264 -crf 20 denoised.mp4
Parâmetros: luma_spatial:chroma_spatial:luma_temporal:chroma_temporal
-
luma_spatial(0-16): Ruído espacial no brilho (padrão: 4) -
chroma_spatial(0-16): Ruído espacial na cor (padrão: 3) -
luma_temporal(0-16): Suavização temporal no brilho (padrão: 6) -
chroma_temporal(0-16): Suavização temporal na cor (padrão: 4.5)
Remoção forte de ruído:
ffmpeg -i grainy.mp4 -vf "hqdn3d=10:8:15:10" -c:v libx264 -crf 20 clean.mp4
Valores altos removem mais ruído, mas podem suavizar detalhes. Ajuste conforme necessário.
Remoção leve (preserva detalhes):
ffmpeg -i video.mp4 -vf "hqdn3d=2:1.5:3:2.5" -c:v libx264 -crf 20 output.mp4
Estabilização com vidstab
A estabilização exige duas passagens: análise e aplicação.
1. Verifique se o vidstab está disponível:
ffmpeg -filters | grep vidstab
No macOS, instale com:
brew install ffmpeg
2. Passagem 1: Analisar movimento
ffmpeg -i shaky_video.mp4 -vf "vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf" -f null -
-
shakiness=8: Quão tremido está o vídeo (1-10) -
accuracy=9: Precisão da detecção (1-15) - O arquivo
transform.trfé gerado nesta etapa.
3. Passagem 2: Aplicar estabilização
ffmpeg -i shaky_video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=1:smoothing=10" -c:v libx264 -crf 20 stabilized.mp4
-
zoom=1: Adiciona 1% de zoom para compensar recorte de bordas. -
smoothing=10: Controla o quão suave a estabilização será.
Estabilização mais agressiva:
ffmpeg -i video.mp4 -vf "vidstabtransform=input=transform.trf:zoom=3:smoothing=30:optzoom=1" -c:v libx264 -crf 20 stable.mp4
-
optzoom=1: Ajusta o zoom automaticamente para evitar bordas pretas.
Pipeline combinado de melhoria de qualidade
Execute todas as operações em uma cadeia única:
ffmpeg -i source.mp4 \
-vf "hqdn3d=4:3:6:4.5,scale=1920:-2:flags=lanczos,vidstabtransform=input=transform.trf:zoom=1:smoothing=10" \
-c:v libx264 -crf 18 -preset slow \
-c:a copy \
enhanced.mp4
Ordem recomendada dos filtros:
-
hqdn3d(denoise) — remove ruído antes de escalar. -
scale— aumenta a resolução sem amplificar o ruído. -
vidstabtransform— estabiliza após o escalonamento.
Nota: Execute a passagem vidstabdetect antes de rodar este pipeline.
Filtro de nitidez
Para vídeos suaves (sem ruído), aplique nitidez:
ffmpeg -i video.mp4 -vf "unsharp=5:5:1.5:5:5:0.5" -c:v libx264 -crf 20 sharpened.mp4
Parâmetros: lx:ly:la:cx:cy:ca
-
lx:ly: Tamanho da matriz de luma (ex: 5:5) -
la: Quantidade de nitidez (positivo = mais nítido) -
cx:cy:ca: Parâmetros equivalentes para chroma
Nitidez leve:
unsharp=3:3:0.5:3:3:0.0
Nitidez forte:
unsharp=5:5:2.5:5:5:0.0
Considerações de desempenho
Operações de melhoria são pesadas em CPU. Para um vídeo de 10 minutos em 1080p:
- Apenas escala: 2-5 minutos
- Escala + hqdn3d: 5-10 minutos
- Escala + hqdn3d + vidstab: 15-25 minutos
Ajuste o parâmetro -preset conforme a necessidade:
-
ultrafast: Mais rápido, arquivos maiores -
fast: Compromisso entre velocidade/tamanho -
slow: Mais lento, arquivos menores -
veryslow: Pouco ganho extra, geralmente não compensa
Processamento em lote:
ls *.mp4 | parallel ffmpeg -i {} -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 enhanced_{/}
Conectando-se a APIs de escalonamento de vídeo AI
Para resultados superiores em vídeos de baixa qualidade, utilize APIs especializadas além do FFmpeg.
Por exemplo, a WaveSpeedAI utiliza modelos neurais:
POST https://api.wavespeed.ai/api/v2/wavespeed-ai/video-enhance
Authorization: Bearer {{WAVESPEED_API_KEY}}
Content-Type: application/json
{
"video_url": "https://storage.example.com/source-video.mp4",
"scale": 2,
"enhance": true
}
Teste a integração com o Apidog antes de automatizar:
- Adicione asserções:
Status code is 200
Response body has field id
- Monitore o endpoint de status para checar conclusão.
Compare a saída escalonada por IA com resultados do FFmpeg (Lanczos). O escalonamento por IA lida melhor com texturas e detalhes finos, enquanto o FFmpeg é mais rápido e gratuito. Use IA para casos críticos de qualidade.
FAQ
Lanczos é melhor que bicubic sempre?
Para aumento de escala, sim. Para redução de escala, bicubic é mais rápido e tem qualidade comparável. Lanczos é mais pesado.
Vidstab funciona em vídeos de celular?
Sim, celulares costumam se beneficiar muito. Use shakiness=8-10 para vídeos gravados à mão.
Quanto zoom é necessário para esconder bordas na estabilização?
De 3% a 8% normalmente. Use optzoom=1 para ajuste automático.
O FFmpeg melhora vídeos históricos de baixa resolução?
Ajuda, mas há limites. Ferramentas baseadas em IA (ESRGAN, APIs especializadas) têm melhor resultado em vídeos muito degradados.
Remoção de ruído atrasa a reprodução?
Não. O denoising ocorre durante a conversão; o vídeo final roda normalmente.
Top comments (0)