DEV Community

Cover image for Como Aumentar e Melhorar a Qualidade de Vídeo com FFmpeg: Escalonamento, Remoção de Ruído, Estabilização
Lucas
Lucas

Posted on • Originally published at apidog.com

Como Aumentar e Melhorar a Qualidade de Vídeo com FFmpeg: Escalonamento, Remoção de Ruído, Estabilização

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.

Experimente o Apidog hoje

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
Enter fullscreen mode Exit fullscreen mode

Exemplo: Manter proporção de aspecto

ffmpeg -i input.mp4 -vf "scale=1920:-2:flags=lanczos" -c:v libx264 -crf 20 output.mp4
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

No macOS, instale com:

brew install ffmpeg
Enter fullscreen mode Exit fullscreen mode

2. Passagem 1: Analisar movimento

ffmpeg -i shaky_video.mp4 -vf "vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform.trf" -f null -
Enter fullscreen mode Exit fullscreen mode
  • 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
Enter fullscreen mode Exit fullscreen mode
  • 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
Enter fullscreen mode Exit fullscreen mode
  • 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
Enter fullscreen mode Exit fullscreen mode

Ordem recomendada dos filtros:

  1. hqdn3d (denoise) — remove ruído antes de escalar.
  2. scale — aumenta a resolução sem amplificar o ruído.
  3. 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Nitidez forte:

unsharp=5:5:2.5:5:5:0.0
Enter fullscreen mode Exit fullscreen mode

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_{/}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

Teste a integração com o Apidog antes de automatizar:

  • Adicione asserções:
Status code is 200
Response body has field id
Enter fullscreen mode Exit fullscreen mode
  • 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)