A conversão de formatos de vídeo é uma das tarefas mais comuns no processamento de mídia. Seja MP4 para a web, MOV para fluxos de trabalho Apple ou WebM para projetos open source, o FFmpeg resolve tudo pela linha de comando. Este guia cobre desde conversões básicas até a seleção avançada de codecs e processamento em lote.
Conversão básica de formato
A conversão mais simples apenas altera o formato do contêiner. O FFmpeg detecta o formato de saída pela extensão do arquivo:
# Converter MKV para MP4
ffmpeg -i input.mkv output.mp4
# Converter AVI para MOV
ffmpeg -i input.avi output.mov
# Converter MP4 para WebM
ffmpeg -i input.mp4 output.webmQuando você não especifica codecs, o FFmpeg escolhe os padrões para o contêiner de destino. Funciona, mas não oferece controle sobre qualidade ou compatibilidade.
Entendendo contêineres vs codecs
Antes de aprofundar, é útil entender a diferença:
- Contêiner (MP4, MKV, MOV, AVI, WebM) — o formato de arquivo que contém vídeo, áudio e metadados
- Codec de vídeo (H.264, H.265, VP9, AV1) — como os dados de vídeo são comprimidos
- Codec de áudio (AAC, Opus, MP3, FLAC) — como os dados de áudio são comprimidos
Um contêiner é como uma caixa; os codecs são o que está dentro. O mesmo codec de vídeo pode estar em diferentes contêineres.
| Contêiner | Codecs de vídeo comuns | Codecs de áudio comuns | Ideal para |
|---|---|---|---|
| MP4 | H.264, H.265, AV1 | AAC, MP3 | Web, dispositivos móveis, uso geral |
| MKV | Qualquer | Qualquer | Arquivamento, mídia multi-faixa |
| MOV | H.264, H.265, ProRes | AAC, PCM | Ecossistema Apple, edição |
| WebM | VP8, VP9, AV1 | Vorbis, Opus | Web (open source) |
| AVI | H.264, MPEG-4 | MP3, PCM | Compatibilidade legada |
Guia de seleção de codecs
H.264 — Máxima compatibilidade
O H.264 (libx264) funciona em praticamente todos os dispositivos e navegadores. É a escolha mais segura para distribuição geral.
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4H.265 (HEVC) — Melhor compressão
O H.265 (libx265) produz arquivos cerca de 50% menores com a mesma qualidade. O suporte está crescendo, mas ainda não é universal.
ffmpeg -i input.avi -c:v libx265 -crf 28 -preset medium -c:a aac -b:a 128k output.mp4Nota: O H.265 usa uma escala de CRF diferente. CRF 28 no H.265 é aproximadamente equivalente a CRF 23 no H.264.
VP9 — Open source e otimizado para web
O VP9 é o codec livre de royalties do Google. Funciona com WebM e é suportado por todos os navegadores modernos.
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webmO -b:v 0 instrui o FFmpeg a usar o modo CRF puro (sem teto de bitrate).
AV1 — Próxima geração
O AV1 oferece a melhor taxa de compressão, mas a codificação é muito lenta. Use quando tiver tempo e quiser os menores arquivos possíveis.
ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -cpu-used 4 -c:a libopus -b:a 128k output.mkv-cpu-used 4 acelera significativamente a codificação (intervalo 0-8, maior = mais rápido, mas menor qualidade).
Comparação de codecs
| Codec | Compressão | Velocidade | Suporte em navegadores | Licença |
|---|---|---|---|---|
| H.264 | Boa | Rápida | Universal | Licenciado |
| H.265 | Melhor | Média | Crescente | Licenciado |
| VP9 | Melhor | Lenta | Todos os modernos | Livre de royalties |
| AV1 | A melhor | Muito lenta | Crescente | Livre de royalties |
Combinações de codecs de áudio
Cada contêiner funciona melhor com certos codecs de áudio:
# MP4 + AAC (combinação mais comum)
ffmpeg -i input.mkv -c:v libx264 -crf 23 -c:a aac -b:a 192k output.mp4
# WebM + Opus (melhor qualidade por bitrate)
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm
# MKV + FLAC (áudio lossless)
ffmpeg -i input.mov -c:v libx264 -crf 18 -c:a flac output.mkv
# MOV + PCM (descomprimido, para edição)
ffmpeg -i input.mp4 -c:v copy -c:a pcm_s16le output.mov| Codec de áudio | Qualidade | Tamanho do arquivo | Melhor contêiner |
|---|---|---|---|
| AAC | Boa | Pequeno | MP4, MOV |
| Opus | Excelente | O menor | WebM, MKV |
| MP3 | Boa | Pequeno | MP4, AVI, MKV |
| FLAC | Lossless | Grande | MKV |
| PCM | Lossless | Muito grande | MOV, WAV |
Stream copy — Conversão instantânea
Quando os codecs de origem são compatíveis com o contêiner de destino, você pode copiar os streams sem recodificar. É instantâneo e sem perda de qualidade:
# Remuxar MKV para MP4 sem recodificar
ffmpeg -i input.mkv -c copy output.mp4
# Copiar vídeo, recodificar apenas o áudio
ffmpeg -i input.mkv -c:v copy -c:a aac -b:a 128k output.mp4O stream copy só funciona quando os codecs são suportados pelo contêiner de destino. Por exemplo, não é possível colocar vídeo VP9 em um contêiner AVI.
Qualidade vs tamanho do arquivo
Modo CRF — Ideal para arquivos locais
O CRF (Constant Rate Factor) oferece a melhor relação qualidade/tamanho. O codificador ajusta o bitrate cena a cena. Para uma análise mais profunda das técnicas de compressão, consulte nosso guia de compressão de vídeo.
# Alta qualidade (arquivo maior)
ffmpeg -i input.avi -c:v libx264 -crf 18 -c:a aac -b:a 192k output.mp4
# Qualidade equilibrada
ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4
# Arquivo menor (qualidade inferior)
ffmpeg -i input.avi -c:v libx264 -crf 28 -c:a aac -b:a 96k output.mp4Codificação em duas passagens — Ideal para tamanho alvo
Quando você precisa de um tamanho de arquivo específico, use a codificação em duas passagens:
# Passagem 1: análise
ffmpeg -i input.avi -c:v libx264 -b:v 2M -pass 1 -an -f null /dev/null
# Passagem 2: codificação
ffmpeg -i input.avi -c:v libx264 -b:v 2M -pass 2 -c:a aac -b:a 128k output.mp4Presets — Velocidade vs compressão
Presets mais lentos produzem arquivos menores com a mesma qualidade:
# Codificação rápida, arquivo maior
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset fast -c:a aac output.mp4
# Codificação lenta, arquivo menor
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset slow -c:a aac output.mp4Conversão com alteração de resolução
Combine a conversão de formato com redimensionamento:
# Converter para MP4 em 720p
ffmpeg -i input.mkv -c:v libx264 -crf 23 -vf "scale=-2:720" -c:a aac -b:a 128k output.mp4
# Converter para WebM em 1080p
ffmpeg -i input.avi -c:v libvpx-vp9 -crf 30 -b:v 0 -vf "scale=-2:1080" -c:a libopus output.webmScripts de conversão em lote
Converter todos os arquivos em um diretório
# Converter todos os arquivos AVI para MP4
for f in *.avi; do
ffmpeg -i "$f" -c:v libx264 -crf 23 -c:a aac -b:a 128k "${f%.avi}.mp4"
done
# Converter todos os arquivos MKV para MP4 (stream copy se possível)
for f in *.mkv; do
ffmpeg -i "$f" -c copy "${f%.mkv}.mp4"
doneConversão com qualidade personalizada por formato
#!/bin/bash
# Conversão em lote para múltiplos formatos
INPUT="input.mp4"
# MP4 otimizado para web
ffmpeg -i "$INPUT" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k -movflags +faststart web.mp4
# Arquivo MKV de alta qualidade
ffmpeg -i "$INPUT" -c:v libx265 -crf 22 -preset slow -c:a flac archive.mkv
# WebM para hospedagem open source
ffmpeg -i "$INPUT" -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k web.webmConversão recursiva
# Encontrar e converter todos os arquivos AVI recursivamente
find . -name "*.avi" -exec sh -c '
ffmpeg -i "$1" -c:v libx264 -crf 23 -c:a aac "${1%.avi}.mp4"
' _ {} \;Otimização para web — faststart
Para arquivos MP4 servidos na web, sempre adicione -movflags +faststart. Isso move os metadados para o início do arquivo, permitindo que a reprodução comece antes do download ser concluído:
ffmpeg -i input.mkv -c:v libx264 -crf 23 -c:a aac -movflags +faststart output.mp4Receitas comuns de conversão
Aqui estão comandos prontos para as conversões mais frequentes:
# MOV (iPhone) para MP4 para compartilhar
ffmpeg -i input.mov -c:v libx264 -crf 23 -c:a aac -b:a 128k -movflags +faststart output.mp4
# AVI para MP4 (recodificação)
ffmpeg -i input.avi -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
# MP4 para WebM para incorporação na web
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus -b:a 128k output.webm
# MKV para MP4 (remux sem perda)
ffmpeg -i input.mkv -c copy -movflags +faststart output.mp4
# Qualquer formato para GIF (clipe curto)
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" -t 5 output.gif
# MP4 para HLS para streaming
ffmpeg -i input.mp4 -c copy -hls_time 10 -hls_list_size 0 output.m3u8Solução de problemas
Avisos "Discarding packet" — O contêiner de origem tem problemas de compatibilidade. Adicione -err_detect ignore_err para ignorar pacotes corrompidos.
Erros "Non-monotonous DTS" — Problemas de timestamp na origem. Corrija com:
ffmpeg -i input.mkv -fflags +genpts -c:v libx264 -crf 23 -c:a aac output.mp4Codec não suportado no contêiner — Você está tentando colocar um codec incompatível em um contêiner (ex.: VP9 em AVI). Altere o contêiner ou recodifique com um codec compatível.
Arquivo de saída maior que o de entrada — Isso acontece ao converter de um codec mais eficiente para um menos eficiente, ou quando a origem estava muito comprimida. Tente reduzir o valor do CRF ou usar um codec mais eficiente.
Alternativa na nuvem com FFHub
Converter formatos de vídeo localmente funciona bem para tarefas pontuais, mas conversões em lote podem ocupar sua máquina por horas. O FFHub permite executar comandos FFmpeg na nuvem via API — mesma sintaxe FFmpeg, sem uso de CPU local.
Isso é especialmente útil quando você precisa converter grandes lotes de arquivos, integrar conversão de formato em uma aplicação web ou processar vídeos em máquinas sem FFmpeg instalado.
Resumo
- Use stream copy (
-c copy) quando os codecs forem compatíveis — é instantâneo - Escolha H.264 + AAC em MP4 para máxima compatibilidade
- Escolha VP9 + Opus em WebM para entrega focada na web e livre de royalties
- Use o modo CRF para codificação focada em qualidade
- Adicione
-movflags +faststartpara arquivos MP4 servidos na web - Use scripts em lote para converter diretórios inteiros de uma vez
Artigos Relacionados
- Como comprimir vídeo com FFmpeg - Reduzir o tamanho do arquivo com CRF, presets e redimensionamento de resolução
- Como extrair áudio de vídeo com FFmpeg - Extrair faixas de áudio de qualquer formato de vídeo
- Melhores práticas de compressão de vídeo com FFmpeg - Estratégias avançadas de codificação para qualidade e tamanho ideais

