Gerador de ffmpeg
Construa comandos ffmpeg comuns: converter formato, comprimir, recortar trecho, extrair áudio, gerar GIF e redimensionar.
ffmpeg em profundidade: codecs, filtros, CRF, presets e aceleração por hardware
O ffmpeg — Fast Forward MPEG — foi iniciado por Fabrice Bellard em dezembro de 2000 e se tornou o canivete suíço universal de áudio e vídeo. É tanto uma biblioteca em C (libavcodec, libavformat, libavfilter, libswscale) quanto uma CLI, e atrás de praticamente todo navegador, editor de vídeo, plataforma de streaming e player de desktop existe uma camada de ffmpeg processando pixels e amostras. A CLI segue um padrão único: ffmpeg -i entrada.ext [opções] saida.ext. Tudo entre entrada e saída — escolha de codec, bitrate, filtros, container, metadados — é expresso por flags.
Containers vs codecs: o que cada coisa significa
Confusão comum: MP4 não é codec. Um container (MP4, MKV, AVI, MOV, WebM, FLV, TS) é um envelope que abriga uma ou mais streams. Um codec (H.264, H.265/HEVC, AV1, VP9, MPEG-2 para vídeo; AAC, MP3, Opus, FLAC, AC3 para áudio) é o algoritmo que comprime cada stream. O mesmo arquivo MP4 pode ter H.264+AAC, H.265+AAC ou AV1+Opus, e o ffmpeg permite misturar qualquer combinação compatível. -c:v copy -c:a copy diz ao ffmpeg para apenas remuxar sem recodificar, terminando em segundos mesmo num fonte de 10 GB.
Operações frequentes
# Corta um trecho sem recodificar (rápido, alinhado por keyframe)
ffmpeg -ss 00:01:00 -to 00:02:00 -i in.mp4 -c copy clip.mp4
# Recodifica para H.264 com CRF
ffmpeg -i in.mp4 -c:v libx264 -preset medium -crf 23 \
-c:a aac -b:a 128k out.mp4
# Redimensiona para 720p
ffmpeg -i in.mp4 -vf scale=1280:720 -c:a copy out.mp4
# Extrai áudio sem recodificar
ffmpeg -i in.mp4 -vn -acodec copy out.aac
# Cria um GIF de 320 px de largura a 15 fps
ffmpeg -i in.mp4 -vf "fps=15,scale=320:-1:flags=lanczos" out.gif
# Concatena (mesmo codec/container)
printf "file 'a.mp4'\nfile 'b.mp4'\n" > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy joined.mp4
# Aplica marca d'água no canto superior esquerdo
ffmpeg -i in.mp4 -i logo.png -filter_complex \
"overlay=10:10" -c:a copy out.mp4
# Codifica para WebM (VP9 + Opus) para web
ffmpeg -i in.mp4 -c:v libvpx-vp9 -crf 32 -b:v 0 \
-c:a libopus -b:a 96k out.webm
CRF, presets e como dimensionar a saída
CRF (Constant Rate Factor) é o botão de qualidade do libx264 e libx265. Mais baixo é melhor:
0— matematicamente sem perda (arquivos enormes).18— visualmente sem perda: indistinguível do original em uma TV 4K.23— padrão do H.264; qualidade boa para web em 1080p.28— padrão do H.265; tamanho equivalente ao H.264 com CRF 23 na mesma qualidade visual.
Os presets trocam velocidade de codificação por eficiência de compressão, indo de ultrafast a veryslow. medium é o padrão; slow gera arquivos ~10% menores ao custo do dobro de CPU; veryslow é o limite antes do retorno decrescente. CRF e preset são independentes: -crf 23 -preset slow produz arquivo menor que -crf 23 -preset fast com a mesma qualidade visual.
Aceleração por hardware: NVENC, VAAPI, VideoToolbox, AMF
Codificação em software ocupa a CPU; encoders de hardware empurram o trabalho para silício dedicado, ao custo de eficiência de compressão (~10-20% mais arquivo na mesma qualidade visual).
- NVIDIA NVENC —
-c:v h264_nvencou-c:v hevc_nvenc. 5-10x mais rápido que o libx264. - Intel/AMD VAAPI (Linux) —
-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' -c:v h264_vaapi. - Apple VideoToolbox (macOS) —
-c:v h264_videotoolboxouhevc_videotoolbox. - AMD AMF (Windows) —
-c:v h264_amf.
Filtros: -vf, -af e a sintaxe de filtergraph
Filtros são mini-programas aplicados por frame. -vf recebe filtros de vídeo, -af recebe filtros de áudio. Encadeie com vírgulas, rode ramos paralelos com ponto e vírgula dentro do -filter_complex. Exemplos: -vf "scale=1280:720,fps=30" (redimensiona e troca de framerate); -af "loudnorm=I=-16:TP=-1.5" (normalização de loudness para broadcast); -vf "setpts=2*PTS" (slow motion de meia velocidade).
Pegadinhas
A ordem dos argumentos importa. -ss antes do -i é fast seek (pula para o keyframe mais próximo, pode ser impreciso); -ss depois do -i é accurate seek (lento em vídeos longos). Para cortes precisos frame a frame, use accurate seek e recodifique; para cortes rápidos, use fast seek e -c copy.
Licença. O ffmpeg sai sob LGPL por padrão; habilitar --enable-gpl no build (para libx264, libx265, libxvid) torna o binário GPL. Builds estáticos baixados de mirrors populares costumam ser GPL.
Drift de áudio. Alguns arquivos de câmera têm áudio com framerate variável. Adicione -fflags +genpts -async 1 ou recodifique o áudio para PCM para ressincronizar.
FAQ
GIF ou MP4/WebM para web? Quase sempre MP4 ou WebM. Um GIF de 5 segundos a 720p pode ter 20 MB; o mesmo clipe em MP4/H.264 fica em ~600 KB e roda automaticamente sem som em todo navegador.
ffmpeg consegue fazer slow motion? Sim — setpts=2*PTS dobra a duração (meia velocidade); combine com atempo=0.5 no áudio (encadeável até 0,5x por filtro). Para slow motion suave a 60 fps, interpole com minterpolate.
Vale a pena usar GPU para codificar? Para H.264/HEVC em lote numa máquina com GPU, sim — 5-10x de vazão ao custo de arquivos um pouco maiores. Para qualidade máxima a bitrate fixo, libx264/libx265 ainda ganham.
Como faço streaming RTMP/HLS? -f flv rtmp://server/app/key para RTMP, -f hls -hls_time 4 -hls_list_size 6 out.m3u8 para HLS. Adicione -c:v copy se a fonte já estiver em H.264.
Por que minha saída ficou verde ou rosa? Incompatibilidade de pixel format — muitos encoders exigem yuv420p. Adicione -pix_fmt yuv420p para forçar o formato.
Ferramentas Relacionadas
Gerador de Chave NFe
Gere chaves de acesso de NFe estruturalmente válidas para testes de software (44 dígitos com DV mod-11). Apenas para ambiente de testes.
Gerador de Empresa com CNAE Aleatório
Gera dados fictícios de empresa: razão social, fantasia, CNPJ válido, CNAE principal e endereço. Útil para popular bases de teste.
Gerador de curl form
Monte um curl com -F/--form (multipart) ou -d (urlencoded), incluindo arquivos com @ e campos com tipo de conteúdo.