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 aumentar a 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 através de um processo de duas passagens. Combine os três em uma única cadeia de filtros para um pipeline de melhoria de qualidade.
Introdução
A melhoria da qualidade de vídeo com FFmpeg vai além de apenas mudar a resolução. A verdadeira melhoria combina o escalonamento de resolução com denoising inteligente e estabilização opcional. Cada etapa aborda um problema de qualidade diferente: filmagens suaves ou pixeladas, frames granulados ou ruidosos, e movimento de câmera tremido.
Este guia aborda cada técnica independentemente e mostra como combiná-las.
Algoritmos de escalonamento
O algoritmo de escalonamento determina como o FFmpeg preenche novos pixels ao aumentar a resolução. A escolha tem um efeito visível na qualidade 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 geral |
lanczos |
Mais Lento | Melhor | Aumento de escala |
Aumentar escala para 1080p com Lanczos:
ffmpeg -i input_720p.mp4 -vf "scale=1920:1080:flags=lanczos" -c:v libx264 -crf 20 output_1080p.mp4
Manter proporção de aspecto:
ffmpeg -i input.mp4 -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 output.mp4
-2 calcula automaticamente a altura, mantendo a proporção de aspecto e garantindo que o resultado seja divisível por 2.
Escalonar para 4K:
ffmpeg -i input.mp4 -vf "scale=3840:-2:flags=lanczos" -c:v libx264 -crf 18 -preset slow output_4k.mp4
-preset slow informa ao x264 para gastar mais tempo otimizando a compressão, o que é mais importante em resoluções mais altas.
Remoção de ruído com hqdn3d
O filtro hqdn3d é uma remoção de ruído 3D de alta qualidade. Ele remove granulação e ruído enquanto preserva os detalhes das bordas.
ffmpeg -i noisy_video.mp4 -vf "hqdn3d=4:3:6:4.5" -c:v libx264 -crf 20 denoised.mp4
Os quatro parâmetros: luma_spatial:chroma_spatial:luma_temporal:chroma_temporal
luma_spatial(0-16): Ruído espacial no canal de brilho. Padrão 4.chroma_spatial(0-16): Ruído espacial nos canais de 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 de ruído mais forte:
ffmpeg -i grainy.mp4 -vf "hqdn3d=10:8:15:10" -c:v libx264 -crf 20 clean.mp4
Valores mais altos removem mais ruído, mas podem embaçar detalhes finos. Teste com diferentes configurações antes de processar o vídeo completo.
Remoção de ruído leve (preservar detalhes):
ffmpeg -i video.mp4 -vf "hqdn3d=2:1.5:3:2.5" -c:v libx264 -crf 20 output.mp4
Estabilização com vidstab
O filtro vidstab requer uma abordagem de duas passagens: primeiro analisa o movimento, depois aplica a estabilização.
Instalação: O suporte a vidstab depende da sua compilação do FFmpeg. Verifique com ffmpeg -filters | grep vidstab. No macOS: brew install ffmpeg o inclui.
Passagem 1: Analisar movimento
ffmpeg -i shaky_video.mp4 -vf "vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf" -f null -
shakiness=8 (1-10): Quanto tremor de câmera esperar. accuracy=9 (1-15): Precisão da detecção. O -f null - descarta a saída; precisamos apenas do arquivo .trf.
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 o corte de borda que a estabilização causa. Aumente se bordas pretas aparecerem. smoothing=10 controla o quão suave o caminho da câmera se torna (maior = mais suave).
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 otimiza automaticamente o zoom para evitar bordas.
Pipeline combinado de melhoria de qualidade
Execute todas as três operações juntas em uma única cadeia de filtros:
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
Aplique esta ordem: primeiro denoise (remove artefatos que podem afetar o escalonamento), depois scale, depois stabilize. Isso evita escalar o ruído para uma resolução mais alta.
Nota: Execute a passagem `vidstabdetect` primeiro antes de usar este pipeline combinado.
Filtro de nitidez
Se a filmagem parecer suave em vez de ruidosa, a nitidez pode ajudar:
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 (tamanhos e quantidades de luma/chroma)lx:ly — tamanho da matriz de luma (pixels)la — quantidade de luma (positivo = nitidez, negativo = desfoque)cx:cy:ca — equivalentes de chroma
Para nitidez leve: unsharp=3:3:0.5:3:3:0.0
Para nitidez forte: unsharp=5:5:2.5:5:5:0.0
Considerações de desempenho
As operações de melhoria são intensivas em computação. Estimativas de tempo de processamento para um vídeo de 10 minutos em 1080p:
- Apenas escala simples: 2-5 minutos
- Escala + hqdn3d: 5-10 minutos
- Escala + hqdn3d + vidstab: 15-25 minutos
Use -preset para equilibrar velocidade de codificação vs. tamanho do arquivo:
ultrafast— codificação mais rápida, arquivos maioresfast— velocidade/tamanho moderadosslow— mais lento, arquivos menores para um dado CRFveryslow— geralmente não vale a pena o tempo extra em comparação comslow
Para processamento em lote, execute vários arquivos simultaneamente ou use parallel:
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 o escalonamento impulsionado por IA (que produz melhores resultados do que os filtros do FFmpeg para filmagens de baixa qualidade ou danificadas), existem APIs especializadas ao lado das ferramentas do FFmpeg.
A WaveSpeedAI oferece modelos de escalonamento de IA que usam escalonamento neural em vez de filtros algorítmicos:
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 isso com Apidog antes de integrar:
Adicione asserções:
Status code is 200
Response body has field id
Verifique o endpoint de status para conclusão e, em seguida, compare a saída escalonada por IA com a saída Lanczos do FFmpeg. O escalonamento por IA lida com texturas e detalhes finos melhor do que os métodos algorítmicos; o FFmpeg é mais rápido e gratuito.
Use o FFmpeg para trabalho de qualidade padrão e o escalonamento por IA baseado em API para filmagens onde a qualidade é mais importante.
FAQ
Lanczos é melhor que bicubic em todos os casos?
Para aumentar a escala, sim. Para diminuir a escala, bicubic é frequentemente mais rápido com qualidade comparável. Lanczos é computacionalmente mais caro.
O vidstab funciona em filmagens de celular?
Sim. Filmagem de celular frequentemente se beneficia mais da estabilização. O parâmetro shakiness deve ser definido alto (8-10) para vídeos de celular gravados à mão.
Quanto zoom é necessário para esconder as bordas de estabilização?
Tipicamente 3-8% dependendo do quão tremida a fonte é. Defina optzoom=1 para permitir que o FFmpeg calcule automaticamente.
O FFmpeg pode melhorar filmagens históricas de baixa resolução?
Os filtros do FFmpeg ajudam, mas têm limites. Ferramentas de escalonamento baseadas em IA (como ESRGAN ou APIs especializadas de melhoria de vídeo) produzem resultados significativamente melhores em filmagens severamente degradadas.
A remoção de ruído atrasa a reprodução?
Não. A remoção de ruído é uma etapa de processamento durante a conversão, não um efeito em tempo real. O vídeo de saída é reproduzido normalmente.
