Compresión FFmpeg: ¿CRF, CBR o VBR?

Conclusión primero: la compresión de vídeo FFmpeg tiene tres modos de control de bitrate — CRF (calidad constante) para archivo y almacenamiento local, CBR (bitrate constante) para streaming en vivo, y VBR (bitrate variable) para streaming bajo demanda. Para un mismo vídeo de 1080p, CRF 23 produce 42 MB con la mejor calidad, CBR 4 Mbps produce 38 MB con el bitrate más estable, y VBR produce 36 MB con el tamaño más pequeño pero calidad variable. Elegir el modo equivocado supone desperdiciar tamaño o perder calidad. A continuación se ofrece una guía de selección desde tres niveles: principio, comandos y datos reales.

Si aún no está familiarizado con los métodos generales de compresión de vídeo, le recomendamos leerGuía de compresión de vídeo

1. Comparación de principios de los tres modos de bitrate

El modo de control de bitrate determina cómo el codificador asigna los recursos de bits. La diferencia central entre modos radica en "qué priorizar": CRF prioriza la calidad, CBR prioriza la estabilidad del bitrate, y VBR es un compromiso entre ambos. Comprender estos tres modos es la base para una buena compresión de vídeo.

AspectoCRF (Constant Rate Factor)CBR (Constant Bitrate)VBR (Variable Bitrate)
Nombre completoFactor de velocidad constanteBitrate constanteBitrate variable
Objetivo principalCalidad constanteBitrate constanteTamaño controlable
Asignación de bitrateAsignación dinámica según complejidadBitrate fijo por fotogramaFluctúa entre límites
Consistencia de calidad★★★★★★★☆☆☆★★★☆☆
Control de tamaño★★☆☆☆★★★★★★★★★☆
Velocidad de codificaciónMediaMáximaLenta
Escenario de usoArchivo/almacenamiento localStreaming en vivoStreaming bajo demanda

En pocas palabras: CRF hace que el codificador "asigne bitrate según la dificultad de la escena" — más bitrate para escenas de acción, menos para diálogos estáticos, logrando calidad uniforme en cada fotograma; CBR "da el mismo bitrate independientemente de la complejidad" — desperdicia bitrate en escenas simples y genera artefactos en escenas complejas; VBR es intermedio, estableciendo un rango de bitrate para que el codificador ajuste.

2. Ejemplos de comandos FFmpeg y parámetros

Los tres modos se escriben de forma diferente en FFmpeg, con distintos parámetros clave. A continuación se ofrece la plantilla de comando estándar y la descripción de parámetros de cada modo.

ModoParámetros claveDescripción de parámetrosRango de valores típicos
CRF-crfFactor de calidad, menor valor = mayor calidad0-51 (18-28 habitual)
CRF restringido-maxrate / -bufsizeLimitar bitrate máximomaxrate 2-8 Mbps
CBR-b:v / -minrate / -maxrateLos tres con el mismo valor para CBR2-8 Mbps
VBR-b:vBitrate medio objetivo2-6 Mbps
Rango VBR-minrate / -maxrateRango de fluctuación de bitratemin 1-2 Mbps / max 4-8 Mbps
General-presetEquilibrio velocidad/tasa de compresiónultrafast-fast-medium-slow

1. Comando modo CRF

CRF es el modo de compresión para archivo más recomendado. El codificador asigna bitrate automáticamente según la complejidad, garantizando calidad uniforme. CRF 23 es el valor predeterminado de H.264, adecuado para la mayoría de escenarios.

Modo CRF puro (sin límite de bitrate):
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

Modo CRF restringido (limita el bitrate máximo, adecuado para escenarios que requieren un límite):
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -maxrate 4M -bufsize 8M -preset medium output.mp4

2. Comando modo CBR

CBR se logra estableciendo minrate, maxrate y b:v al mismo valor. El streaming en vivo debe usar CBR para garantizar la estabilidad del bitrate.

Modo CBR estándar:
ffmpeg -i input.mp4 -c:v libx264 -b:v 4M -minrate 4M -maxrate 4M -bufsize 8M -preset fast output.mp4

Modo streaming en vivo (con RTMP):
ffmpeg -i input.mp4 -c:v libx264 -b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 8000k -g 60 -preset fast -f flv rtmp://server/live/stream

3. Comando modo VBR

VBR establece un bitrate medio objetivo y el codificador ajusta libremente dentro del rango. Adecuado para streaming bajo demanda donde se necesita estimar el tamaño.

Modo VBR estándar:
ffmpeg -i input.mp4 -c:v libx264 -b:v 4M -preset medium -c:a aac -b:a 128k output.mp4

VBR de dos pasadas (Two-pass, control de tamaño más preciso):
ffmpeg -y -i input.mp4 -c:v libx264 -b:v 4M -pass 1 -an -f mp4 /dev/null
ffmpeg -i input.mp4 -c:v libx264 -b:v 4M -pass 2 -c:a aac -b:a 128k output.mp4

3. Datos reales: comparación de tres modos con el mismo vídeo

Usamos el mismo vídeo de prueba 1080p/30 fps (350 MB originales, H.264, 5 minutos) para comprimir con los tres modos y comparar tamaño, calidad y tiempo de codificación.

ModoParámetrosTamaño de salidaTasa de compresiónPuntuación de calidadTiempo de codificación
CRF 18-crf 18 -preset medium85.2MB75.7%★★★★★142 s
CRF 23-crf 23 -preset medium42.1MB88.0%★★★★☆128 s
CRF 28-crf 28 -preset medium22.5MB93.6%★★★☆☆115 s
CBR 4M-b:v 4M -minrate 4M -maxrate 4M38.3MB89.1%★★★☆☆98 s
CBR 2M-b:v 2M -minrate 2M -maxrate 2M19.4MB94.5%★★☆☆☆92 s
VBR 4M-b:v 4M -preset medium36.8MB89.5%★★★★☆135 s
VBR 4M dos pasadas-b:v 4M -pass 236.2MB89.7%★★★★☆268 s

Los datos revelan varias conclusiones clave: CRF 23 logra el mejor equilibrio entre calidad y tamaño (42 MB, calidad cuatro estrellas y media); CBR 4M tiene un tamaño similar a CRF 23 pero calidad ligeramente inferior (artefactos en escenas complejas); VBR de dos pasadas ofrece el tamaño más preciso pero duplica el tiempo. Para archivo, CRF 23 es la opción óptima.

Veamos el impacto de diferentes presets en CRF 23:

presetTamaño de salidaTiempo de codificaciónDiferencia de tamañoEscenario recomendado
ultrafast58.2MB32 s+38%Vista previa en tiempo real
fast45.6MB68 s+8%Compresión rápida
medium42.1MB128 sReferenciaPredeterminado general
slow39.8MB285 s-5%Archivo de alta calidad
slower38.5MB612 s-9%Compresión máxima

Referencia de bitrate recomendado por resolución para elegir el bitrate objetivo CBR/VBR:

ResoluciónFpsBitrate CBR recomendadoBitrate VBR objetivoValor CRF recomendadoEscenario de uso
480p30fps1.0Mbps1.0MbpsCRF 24Baja definición para móvil
720p30fps2.5Mbps2.5MbpsCRF 23Claridad estándar web
1080p30fps4.0Mbps4.0MbpsCRF 23HD general
1080p60fps6.0Mbps6.0MbpsCRF 22HD alta fps
1440p30fps8.0Mbps8.0MbpsCRF 22Calidad 2K
2160p(4K)30fps16.0Mbps16.0MbpsCRF 20Archivo UHD

4. Recomendaciones por escenario: diferentes usos, diferentes modos

Los distintos escenarios tienen diferentes requisitos de calidad, tamaño y estabilidad de bitrate. La clave para elegir el modo es matching con las necesidades del escenario.

Escenario de usoModo recomendadoParámetros recomendadosRazónTasa de compresión esperada
Archivo localCRF-crf 23 -preset mediumCalidad prioritaria, tamaño óptimo85%–90%
Archivo de alta calidadCRF-crf 18 -preset slowCasi sin pérdida, preservación a largo plazo70%–80%
Streaming en vivoCBR-b:v 4M -minrate 4M -maxrate 4MBitrate estable, evita interrupcionesDepende del origen
Streaming bajo demandaVBR dos pasadas-b:v 4M -pass 2Tamaño preciso, calidad equilibrada80%–90%
Reproducción móvilCRF restringido-crf 26 -maxrate 2M -bufsize 4MLimitar bitrate para redes móviles90%–95%
Vídeo webCRF restringido-crf 24 -maxrate 3M -bufsize 6MEquilibra calidad y velocidad de carga88%–92%
Grabación de vigilanciaCBR-b:v 1M -minrate 1M -maxrate 1MBitrate constante facilita cálculo de almacenamientoDepende del origen
Vídeo por correoCRF-crf 28 -preset fastTamaño prioritario, calidad aceptable93%–96%

SmartSlim, en la compresión de vídeo, se basa en un motor de compresión Rust propio con una biblioteca de parámetros por escenario — 4 niveles × 15 escenarios × 5 niveles de rendimiento = 300 combinaciones —, seleccionando automáticamente el mejor modo y parámetros según el uso, sin necesidad de ajustar manualmente los comandos FFmpeg. Los usuarios empresariales pueden integrarlo vía SDK en sus sistemas para automatizar la compresión.

Para más comparaciones de códecs de vídeo, consulteComparación de códecs H.264 vs H.265 vs AV1yMétodos de evaluación de calidad de compresión de vídeo

5. Preguntas frecuentes (FAQ)

Q1: ¿Para compresión de vídeo FFmpeg, es mejor CRF o VBR?

Para archivo y almacenamiento local, CRF es mejor. CRF tiene como objetivo calidad constante: asigna más bitrate a escenas complejas y menos a simples, logrando calidad uniforme y tamaño óptimo. Se recomienda CRF 18-28: 18 es casi visualmente sin pérdida, 23 es el punto de equilibrio predeterminado, 28 tiene calidad aceptable pero menor tamaño. VBR es adecuado para escenarios que requieren controlar el límite de bitrate como el streaming, pero la calidad es menos estable que CRF.

Q2: ¿Qué valor de CRF ofrece la mejor calidad?

Cuanto menor el valor de CRF, mayor la calidad y el tamaño. Con H.264: CRF 0 es sin pérdida, CRF 18 es casi visualmente sin pérdida (50 % del original), CRF 23 es el valor predeterminado de FFmpeg (25 % del original), CRF 28 tiene calidad aceptable (12 % del original). Rango recomendado 18-28; para la mayoría de escenarios CRF 23 es suficiente; para alta calidad, CRF 18-20.

Q3: ¿Para streaming en vivo se debe usar CBR o VBR?

Para streaming en vivo se recomienda CBR. El streaming exige máxima estabilidad de bitrate: CBR mantiene un bitrate constante, evitando interrupciones por fluctuaciones de red. Las plataformas suelen requerir bitrate fijo (p. ej., Twitch 6000 kbps, Bilibili 4000 kbps); CBR lo cumple con precisión. VBR puede disparar el bitrate en escenas complejas y superar el ancho de banda, causando pérdida de fotogramas; CBR se mantiene estable. Se recomienda CBR + maxrate = bufsize = bitrate objetivo.

Q4: ¿Cuál es la diferencia entre los dos modos VBR de FFmpeg?

FFmpeg tiene dos niveles de VBR: -crf con maxrate/bufsize es VBR restringido (constrained VBR), con calidad cercana al CRF puro pero limitando el bitrate máximo; -b:v con -minrate/-maxrate es VBR tradicional, donde el bitrate fluctúa dentro de un rango. El VBR restringido es más adecuado para uso práctico, garantizando calidad y controlando el bitrate máximo. El VBR tradicional es adecuado para escenarios que requieren control preciso del rango de bitrate, como adaptarse a un ancho de banda específico.

Resumen

Los tres modos de bitrate de FFmpeg tienen cada uno su escenario óptimo: CRF prioriza la calidad para archivo (CRF 23 recomendado), CBR prioriza la estabilidad para streaming en vivo (4 Mbps constante recomendado), VBR prioriza el control del tamaño para streaming bajo demanda (codificación de dos pasadas recomendada). Elegir el modo correcto es el primer paso: archivo → CRF, streaming → CBR, bajo demanda → VBR; recuerde este principio y no se equivocará.

Si no quiere escribir comandos FFmpeg manualmente, SmartSlim ofrece una solución de compresión de vídeo lista para usar, basada en un motor de compresión Rust propio con 300 combinaciones de parámetros por escenario; admite 8 formatos de vídeo (mp4, mkv, avi, mov, wmv, flv, webm, m4v), con compresión local sin que los datos salgan del dominio.

¿Necesita comprimir archivos? Pruebe SmartSlim

Construido sobre un motor de compresión Rust propio, compatible con 10 categorías y más de 40 formatos, incluyendo PDF, imágenes, vídeo, Office y OFD, con compresión local que mantiene sus datos en sus instalaciones.