Compresión de video con FFmpeg — Guía práctica para desarrolladores

Guía para principiantes sobre cómo comprimir videos con FFmpeg y la API de FFHub.

Esta guía explica cómo comprimir videos usando FFmpeg, con una descripción detallada de cada parámetro.

Entendiendo el comando básico

ffmpeg -i input.mp4 -b:v 1M output.mp4

Desglose de cada parte:

ParámetroSignificado
ffmpegEl programa que ejecutamos
-i input.mp4-i significa "input" (entrada), seguido de tu archivo fuente
-b:v 1M-b:v significa "video bitrate"; 1M = 1 Megabit por segundo
output.mp4El nombre del archivo de salida (siempre va al final)

¿Qué es el bitrate? Es la cantidad de datos que se usan por segundo de video. Mayor bitrate = mejor calidad pero archivo más grande. Menor bitrate = archivo más pequeño pero menor calidad.

Método 1: CRF (recomendado para principiantes)

CRF (Constant Rate Factor) es la forma más sencilla de comprimir video. Solo tienes que elegir un nivel de calidad:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
ParámetroSignificado
-c:v libx264-c:v significa "video codec"; libx264 es el codificador H.264
-crf 23Nivel de calidad (0–51). Menor = mejor calidad, archivo más grande

Guía de valores CRF

CRFCalidadCuándo usarlo
18Excelente (casi sin pérdidas)Archivar videos importantes
23Buena (valor por defecto)Uso general
28AceptableCompartir en línea, redes sociales
33BajaVistas previas, borradores

Consejo: Empieza con CRF 23. Si el archivo es demasiado grande, prueba con 28. Si la calidad es muy baja, prueba con 20.

Método 2: Tamaño de archivo objetivo

Si necesitas un tamaño de archivo específico, usa el modo de bitrate:

ffmpeg -i input.mp4 -c:v libx264 -b:v 2M output.mp4

Valores de bitrate comunes:

  • 500K = 500 Kilobits/segundo (archivo pequeño, menor calidad)
  • 1M = 1 Megabit/segundo (medio)
  • 2M = 2 Megabits/segundo (buena calidad)
  • 5M = 5 Megabits/segundo (alta calidad)

Velocidad de codificación: presets

La opción -preset controla la velocidad de codificación de FFmpeg:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset fast output.mp4
PresetVelocidadTamaño del archivo
ultrafastMuy rápidaMás grande
fastRápidaMás grande
mediumNormal (por defecto)Normal
slowLentaMás pequeño
veryslowMuy lentaMás pequeño

Consejo: Usa fast para resultados rápidos; slow para la entrega final.

Reducir la resolución

Una resolución menor produce archivos mucho más pequeños:

ffmpeg -i input.mp4 -vf scale=-2:720 -c:v libx264 -crf 23 output.mp4
ParámetroSignificado
-vf scale=-2:720-vf significa "video filter" (filtro de video); scale redimensiona el video
-2Calcula el ancho automáticamente para mantener la relación de aspecto
720Altura objetivo en píxeles (720p)

Resoluciones comunes:

  • scale=-2:2160 → 4K
  • scale=-2:1080 → 1080p (Full HD)
  • scale=-2:720 → 720p (HD)
  • scale=-2:480 → 480p (SD)

Comprimir el audio también

Agrega compresión de audio para reducir aún más el tamaño del archivo:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4
ParámetroSignificado
-c:a aac-c:a significa "audio codec"; aac es un formato de audio muy común
-b:a 128kBitrate de audio: 128 Kilobits/segundo

Guía de bitrate de audio:

  • 320k → Música de alta calidad
  • 192k → Buena calidad
  • 128k → Estándar (recomendado)
  • 96k → Aceptable para voz

Ejemplos completos

Mejor equilibrio (recomendado)

Buena calidad con un tamaño de archivo razonable:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

Archivo más pequeño posible

Para compartir en línea cuando la calidad es menos prioritaria:

ffmpeg -i input.mp4 -vf scale=-2:720 -c:v libx264 -crf 28 -preset slow -c:a aac -b:a 96k output.mp4

Mejor calidad

Para archivar cuando quieres preservar la calidad:

ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k output.mp4

Usar la API de FFHub

Envía tu comando a FFHub para procesarlo en la nube:

curl -X POST https://api.ffhub.io/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "command": "ffmpeg -i https://your-storage.com/input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4"
  }'

Nota: Reemplaza la URL de entrada con la URL real de tu video. FFHub lo procesará y te entregará un enlace de descarga con el resultado.

Referencia rápida

ObjetivoComando
Compresión básicaffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
Archivo más pequeñoffmpeg -i input.mp4 -c:v libx264 -crf 28 output.mp4
Mayor calidadffmpeg -i input.mp4 -c:v libx264 -crf 18 output.mp4
Redimensionar a 720pffmpeg -i input.mp4 -vf scale=-2:720 -c:v libx264 -crf 23 output.mp4
Con compresión de audioffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4
Compresión de video con FFmpeg — Guía práctica para desarrolladores — FFHub Docs