Modos de codificação VP9
Qualidade constante (CRF + b:v 0)
Nossa abordagem recomendada para conversão de arquivos. Defina um alvo de qualidade com CRF e deixe o codificador decidir o bitrate por quadro. A flag -b:v 0 é necessária para ativar o modo CRF puro (caso contrário o FFmpeg aplica um limite de bitrate padrão).
Comando: ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm
Qualidade restrita (CRF + limite de bitrate)
Combina o alvo de qualidade CRF com um bitrate máximo. Útil para streaming, quando é preciso ficar dentro dos limites de banda mantendo a qualidade.
Comando: ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 2M output.webm
Bitrate variável (VBR)
Aponta para um bitrate médio específico. Usado em broadcast e streaming, quando a banda precisa ser previsível.
Comando: ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M output.webm
Valores CRF para VP9
A escala CRF do VP9 vai de 0 (sem perdas) a 63 (pior qualidade). Números mais altos significam mais compressão e qualidade menor.
| Faixa CRF | Qualidade | Caso de uso |
|---|---|---|
| 0 | Sem perdas | Arquivamento (arquivos enormes) |
| 15–20 | Alta qualidade | Cópias master, entrega de alta qualidade |
| 30–35 | Bom equilíbrio (padrão) | Entrega web, uso geral |
| 40–50 | Qualidade inferior | Prévias, miniaturas |
| 50–63 | Qualidade ruim | Raramente útil |
Nosso padrão é CRF 30, que produz uma qualidade visual aproximadamente equivalente a H.264 CRF 23 com arquivos de 30 a 50% menores.
Configurações de velocidade (cpu-used)
O parâmetro cpu-used controla a relação entre velocidade de codificação e eficiência de compressão. Faixa: 0 a 8.
| cpu-used | Velocidade relativa | Penalidade de compressão | Caso de uso |
|---|---|---|---|
| 0 | 1x (referência) | Nenhuma (a melhor) | Processamento em lote offline |
| 1 | ~2x | ~2% | Codificação de alta qualidade |
| 3 | ~8x | ~5% | Conversores online (nossa configuração) |
| 5 | ~15x | ~10% | Prévias rápidas |
| 8 | ~30x | ~20% | Tempo real / latência mínima |
Multithreading (row-mt)
A flag -row-mt 1 ativa o multithreading baseado em linhas, que pode fornecer uma aceleração de 2 a 4x em sistemas multi-core sem impacto na qualidade. É um ganho de velocidade puro e deve estar sempre ativado.
Áudio: configurações do Opus
O WebM combina vídeo VP9 com áudio Opus, superior ao AAC em bitrates equivalentes:
- 64 kbps: bom para voz e podcasts
- 128 kbps: transparente para a maior parte do conteúdo (nosso padrão)
- 192 kbps: alta qualidade para música
Two-pass vs. single-pass
O CRF single-pass (nossa abordagem) produz a melhor relação qualidade/tamanho para conversão de arquivos. O codificador ajusta o bitrate por quadro com base na complexidade, resultando na melhor qualidade possível no CRF alvo.
A codificação two-pass só é necessária quando é preciso atingir um bitrate alvo específico (streaming, broadcast). A primeira passagem analisa o conteúdo e a segunda codifica com alocação ideal de bits.
O pipeline VP9 do nosso conversor
O comando FFmpeg completo que nosso conversor usa:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -cpu-used 3 -row-mt 1 -c:a libopus -b:a 128k output.webm
Flag a flag:
-c:v libvpx-vp9— usar o codec de vídeo VP9-crf 30— alvo de qualidade (equivalente a H.264 CRF 23)-b:v 0— modo CRF puro, sem limite de bitrate-cpu-used 3— velocidade equilibrada para conversão online-row-mt 1— multithreading baseado em linhas para codificação mais rápida-c:a libopus— codec de áudio Opus-b:a 128k— qualidade de áudio transparente
Configurações recomendadas pelo Google por resolução
| Resolução | CRF sugerido | Bitrate alvo (VBR) |
|---|---|---|
| 360p | 36–40 | 200–400 kbps |
| 480p | 33–36 | 500–900 kbps |
| 720p | 30–33 | 1–2 Mbps |
| 1080p | 28–32 | 2–4 Mbps |
| 2160p (4K) | 25–30 | 8–16 Mbps |