Modos de codificación VP9
Calidad constante (CRF + b:v 0)
Nuestro enfoque recomendado para la conversión de archivos. Fije un objetivo de calidad con CRF y deje que el codificador decida el bitrate por fotograma. El flag -b:v 0 es necesario para habilitar el modo CRF puro (de lo contrario, FFmpeg aplica un límite de bitrate por defecto).
Comando: ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm
Calidad restringida (CRF + límite de bitrate)
Combina el objetivo de calidad CRF con un bitrate máximo. Útil para streaming donde hay que mantenerse dentro de los límites de ancho de banda sin perder calidad.
Comando: ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 2M output.webm
Bitrate variable (VBR)
Apunta a un bitrate promedio específico. Se usa en emisión y streaming donde el ancho de banda debe ser predecible.
Comando: ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M output.webm
Valores CRF para VP9
La escala CRF de VP9 va de 0 (sin pérdida) a 63 (peor calidad). Los números más altos implican más compresión y menor calidad.
| Rango CRF | Calidad | Caso de uso |
|---|---|---|
| 0 | Sin pérdida | Archivo (archivos enormes) |
| 15–20 | Alta calidad | Copias master, entrega de alta calidad |
| 30–35 | Buen equilibrio (por defecto) | Entrega web, uso general |
| 40–50 | Calidad inferior | Previsualizaciones, miniaturas |
| 50–63 | Calidad pobre | Rara vez útil |
Nuestro valor por defecto es CRF 30, que produce una calidad visual aproximadamente equivalente a H.264 CRF 23 con archivos entre 30 y 50 % más pequeños.
Ajustes de velocidad (cpu-used)
El parámetro cpu-used controla la velocidad de codificación frente a la eficiencia de compresión. Rango: 0 a 8.
| cpu-used | Velocidad relativa | Penalización de compresión | Caso de uso |
|---|---|---|---|
| 0 | 1x (referencia) | Ninguna (la mejor) | Procesamiento por lotes sin conexión |
| 1 | ~2x | ~2 % | Codificación de alta calidad |
| 3 | ~8x | ~5 % | Conversores en línea (nuestro ajuste) |
| 5 | ~15x | ~10 % | Previsualizaciones rápidas |
| 8 | ~30x | ~20 % | Tiempo real / latencia mínima |
Multihilo (row-mt)
El flag -row-mt 1 habilita el multihilo basado en filas, que puede proporcionar una aceleración de 2 a 4x en sistemas multinúcleo sin impacto en la calidad. Es una ganancia de velocidad pura y debe activarse siempre.
Audio: ajustes de Opus
WebM empareja vídeo VP9 con audio Opus, superior a AAC a bitrates equivalentes:
- 64 kbps: bueno para voz y podcasts
- 128 kbps: transparente para la mayoría de contenidos (nuestro valor por defecto)
- 192 kbps: alta calidad para música
Two-pass vs. single-pass
El CRF single-pass (nuestro enfoque) produce la relación óptima calidad/tamaño para la conversión de archivos. El codificador ajusta el bitrate por fotograma según la complejidad, lo que da la mejor calidad posible al CRF objetivo.
La codificación two-pass solo es necesaria cuando se debe alcanzar un bitrate objetivo específico (streaming, emisión). La primera pasada analiza el contenido y la segunda codifica con una asignación óptima de bits.
El pipeline VP9 de nuestro conversor
El comando FFmpeg completo que usa nuestro conversor:
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 por flag:
-c:v libvpx-vp9— usar el codec de vídeo VP9-crf 30— objetivo de calidad (equivalente a H.264 CRF 23)-b:v 0— modo CRF puro, sin límite de bitrate-cpu-used 3— velocidad equilibrada para conversión en línea-row-mt 1— multihilo basado en filas para codificación más rápida-c:a libopus— codec de audio Opus-b:a 128k— calidad de audio transparente
Ajustes recomendados por Google según la resolución
| Resolución | CRF sugerido | Bitrate objetivo (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 |