ffmpeg -i in.mp4 -c:v libx264 -crf 28 -preset fast out.mp4 comprime um vídeo para MP4, trocando um pouco de qualidade por um arquivo bem menor — CRF é o controle, e 18–28 é a única faixa que vale a pena guardar. O resto cobre a escala de CRF em números reais, converter uma pasta inteira de uma vez, e o passo que a maioria dos guias pula: checar a duração e os codecs de um arquivo antes de rodar uma recodificação de uma hora.
1. O que realmente tem dentro do arquivo
$ clai mostra a duração deste vídeo→ ffprobe -v error -show_entries format=duration -of csv=p=0 in.mp42.000000
ffprobe vem junto com o ffmpeg e não recodifica nada. Antes de rodar uma conversão que pode levar uma hora, veja com o que você está lidando de verdade.
2. Comprimir controlando a qualidade
$ clai comprime este vídeo, a qualidade importa mais que o tamanho→ ffmpeg -i in.mp4 -c:v libx264 -crf 28 -preset fast out.mp4
No clipe de teste, a origem tinha 13074 bytes e a saída ficou com 10861 bytes. CRF é uma escala de qualidade de 0 a 51, onde menor significa melhor e maior. A faixa que vale a pena conhecer é 18–28: 18 é visualmente indistinguível do original, 23 é um padrão razoável, 28 fica visivelmente mais suave, mas serve para a maioria dos casos.
3. Reduzir a resolução quando comprimir não basta
$ clai comprime mais forte e reduz a altura para 144 pixels→ ffmpeg -i in.mp4 -vf "scale=-2:144" -crf 30 small.mp4
Mesmo clipe, agora com 8130 bytes contra os 13074 originais. O -2 na largura significa «calcule sozinho, mantendo a proporção, e arredonde para um número par» — os codecs exigem dimensões pares, e é exatamente aí que metade dos one-liners de ffmpeg pela internet quebra.
4. Trocar o container sem mexer no conteúdo
$ clai passa este vídeo de mov para mp4 sem recodificar→ ffmpeg -i input.mov -c copy output.mp4
-c copy copia os streams como estão. Leva segundos em vez de minutos e não perde qualidade, desde que os codecs internos sejam compatíveis com o novo container — de mov para mp4 costumam ser.
5. Processar uma pasta inteira
$ clai converte todos os mov desta pasta para mp4, mantendo os nomes→ for f in *.mov; do ffmpeg -i "$f" -c:v libx264 -crf 23 "${f%.mov}.mp4"; done
${f%.mov} remove a extensão. As aspas ao redor de $f não são opcionais — sem elas, o primeiro arquivo com espaço no nome quebra o loop.
6. Cortar um clipe sem recodificar
$ clai corta um clipe de um minuto a partir do segundo 30→ ffmpeg -ss 30 -i input.mp4 -t 60 -c copy clip.mp4
-ss antes de -i é rápido porque o ffmpeg pula em vez de decodificar. Com -c copy o corte cai no keyframe mais próximo, então o início pode desviar até um segundo. Precisa de precisão de frame? Tire o -c copy e pague com a recodificação.
Pegadinhas
-presetmuda a velocidade, não a qualidade.ultrafastcodifica rápido e gera um arquivo maior,slowfaz o oposto. Com o mesmo CRF, afeta pouco a qualidade — é uma troca direta de tempo por tamanho.- O áudio é recodificado em silêncio. Se você não disser nada sobre
-c:a, o ffmpeg decide sozinho. Adicione-c:a copyquando o áudio não precisar ser tocado. - CRF não significa a mesma coisa em todo codec. No libx265, o mesmo número rende mais qualidade: CRF 28 no x265 é mais ou menos CRF 23 no x264.
Perguntas relacionadas
Qual CRF usar? Comece em 23. Arquivo muito grande — vá para 28. Para um arquivo que não pode degradar — use 18.
Por que o ffmpeg é melhor que um conversor online? O clipe nunca sai da sua máquina, não há limite de tamanho de arquivo, e um único comando processa uma pasta inteira.
Como acelero a codificação? Use um codificador de hardware: -c:v h264_nvenc na NVIDIA, -c:v h264_videotoolbox no macOS. Bem mais rápido, com qualidade um pouco pior no mesmo bitrate.
Veja também
- Renomear centenas de arquivos: de loops for a linguagem natural
- Comprima este diretório e envie para o S3
- De one-liner a script versionado
O CliAI escreve os flags certos do ffmpeg pro que você descrever, CRF e filtro de escala inclusos. Instale em uma linha.