Skip to main content

Filtros e Pipeline no FFmpeg

Os filtros transformam o FFmpeg de conversor em ferramenta de processamento. Você encadeia filtros em pipeline para criar transformações complexas num único comando.

A flag -vf (Video Filter)

Terminal window
# Filtro único
ffmpeg -i input.mp4 -vf filtro output.mp4
# Múltiplos filtros separados por vírgula (ordem importa)
ffmpeg -i input.mp4 -vf "filtro1,filtro2,filtro3" output.mp4

Filtros essenciais

scale: Redimensionar

Terminal window
# Para 1920x1080:
ffmpeg -i input.mp4 -vf "scale=1920:1080" output.mp4
# Mantendo aspect ratio, largura de 1280:
ffmpeg -i input.mp4 -vf "scale=1280:-1" output.mp4
# Forçando dimensões pares (necessário para H.264):
ffmpeg -i input.mp4 -vf "scale=1280:-2" output.mp4
# 50% do tamanho original:
ffmpeg -i input.mp4 -vf "scale=iw*0.5:ih*0.5" output.mp4

crop: Recortar

x:y
ffmpeg -i input.mp4 -vf "crop=1080:1080:420:0" square.mp4
# Crop central automático para formato quadrado:
ffmpeg -i input.mp4 -vf "crop=ih:ih" output.mp4

fps: Mudar frame rate

Terminal window
ffmpeg -i input.mp4 -vf "fps=24" output.mp4

setpts: Velocidade (slow/fast motion)

Terminal window
# Metade da velocidade (2x slow motion):
ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" output.mp4
# Dobro da velocidade:
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4

pad: Adicionar bordas (letterbox)

Terminal window
ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:-1:-1:color=black" output.mp4

hflip / vflip: Espelhar

Terminal window
ffmpeg -i input.mp4 -vf "hflip" output.mp4 # horizontal
ffmpeg -i input.mp4 -vf "vflip" output.mp4 # vertical

overlay: Sobrepor imagem

Terminal window
# Marca d'água no canto inferior direito
ffmpeg -i video.mp4 -i watermark.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4

Filter Complex: múltiplas entradas

Terminal window
# Une dois vídeos lado a lado
ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex "hstack" side_by_side.mp4
# Empilha verticalmente
ffmpeg -i top.mp4 -i bottom.mp4 -filter_complex "vstack" stacked.mp4
# Coloca video2 sobre video1 no canto superior direito:
ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex "[1:v]scale=320:180[small];[0:v][small]overlay=main_w-overlay_w-10:10" output.mp4

Gerar thumbnail de um vídeo

Terminal window
# Thumbnail no frame 00:00:05:
ffmpeg -i video.mp4 -ss 00:00:05 -vframes 1 thumbnail.jpg
# Grid de thumbnails (4x4):
ffmpeg -i video.mp4 -vf "fps=1/10,tile=4x4" thumbnails.jpg

Extrair e adicionar áudio

Terminal window
# Extrair áudio
ffmpeg -i video.mp4 -vn -c:a pcm_s16le audio.wav
# Adicionar áudio a vídeo
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -shortest output.mp4

Tip

A ordem dos filtros importa: scale antes de crop, que antes de fps. Processar com resolução maior e depois recortar dá resultado melhor que recortar e depois escalar.