Cómo codificar VP9 con FFmpeg en 4 pasos
- Comprueba tu compilación de FFmpeg: ejecuta
ffmpeg -encodersy buscalibvpx-vp9en la lista. La mayoría de las compilaciones lo incluyen. - Elige una calidad:
-crf 30 -b:v 0es un buen punto de partida para vídeo web en 1080p. Un CRF más bajo significa más calidad y archivos más grandes. - Elige una velocidad:
-cpu-used 3o 4 con-row-mt 1mantiene unos tiempos de codificación razonables. - Añade audio Opus con
-c:a libopus -b:a 128ky guarda la salida como.webm.
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 (mejor) a 63 (peor calidad). Cuanto más alto es el número, mayor es la compresión y menor la calidad. Para un resultado realmente sin pérdidas hace falta -lossless 1.
| Rango CRF | Calidad | Caso de uso |
|---|---|---|
| 0 | Máxima calidad con pérdida | Archivo (usa -lossless 1 para un resultado realmente sin pérdidas) |
| 15–20 | Alta calidad | Copias maestras, distribución de alta calidad |
| 30–35 | Buen equilibrio (predeterminado) | Distribución web, uso general |
| 40–50 | Calidad baja | Vistas previas, miniaturas |
| 50–63 | Calidad deficiente | 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 el equilibrio entre velocidad de codificación y eficiencia de compresión. Los valores 0–5 se usan en la codificación normal (good); los valores más altos corresponden al modo en tiempo real (realtime).
| cpu-used | Velocidad relativa | Penalización de compresión | Caso de uso |
|---|---|---|---|
| 0 | El más lento | Ninguna (la mejor) | Procesamiento por lotes sin conexión |
| 1 | Lento | Muy pequeña | Codificación de alta calidad |
| 3 | Medio | Pequeña | Conversores online (nuestro ajuste) |
| 5 | Rápido | Apreciable | Vistas previas rápidas |
| 8 | El más rápido (modo en tiempo real) | La mayor | Tiempo real / mínima latencia |
Multihilo (row-mt)
La opción -row-mt 1 activa el multihilo por filas, que puede acelerar la codificación varias veces en sistemas multinúcleo con un impacto en la calidad escaso o nulo. Es una ganancia de velocidad pura y conviene activarla siempre.
Audio: ajustes de Opus
WebM combina el vídeo VP9 con audio Opus, que es eficiente en todos los bitrates habituales:
- 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 en dos pasadas solo es necesaria cuando tienes que alcanzar un bitrate objetivo concreto (streaming, emisión). La primera pasada analiza el contenido y la segunda codifica con una asignación de bits óptima.
El pipeline VP9 de nuestro conversor
El comando base de FFmpeg que usa nuestro conversor (también aplica las dos últimas opciones de la lista siguiente):
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— usa el códec de vídeo VP9-crf 30— objetivo de calidad (equivale a CRF 23 en H.264)-b:v 0— modo CRF puro, sin límite de bitrate-cpu-used 3— velocidad equilibrada para la conversión online-row-mt 1— multihilo por filas para codificar más rápido-c:a libopus— códec de audio Opus-b:a 128k— calidad de audio transparente para la mayoría del contenido-pix_fmt yuv420p— color de 8 bits 4:2:0, que reproduce cualquier decodificador VP9-vf scale=trunc(iw/2)*2:trunc(ih/2)*2— redondea a la baja el ancho y el alto a números pares
Ajustes recomendados por 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 |
Codificación VP9 en HandBrake
- Abre el vídeo de origen.
- En la pestaña Resumen, establece el formato en WebM.
- En la pestaña Vídeo, elige el codificador VP9 y activa Calidad constante. Igual que con CRF, un valor RF más alto significa un archivo más pequeño.
- En la pestaña Audio, elige Opus y haz clic en Iniciar codificación.
HandBrake usa el mismo codificador libvpx que FFmpeg, así que los consejos sobre CRF y velocidad de esta página también se aplican.
VP9 de 10 bits y HDR
Para vídeo de 10 bits, añade -pix_fmt yuv420p10le -profile:v 2. El HDR también necesita los metadatos de color, por ejemplo -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc. El conversor de esta página genera 8 bits 4:2:0 (yuv420p), que reproduce cualquier decodificador VP9.