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ámetro | Significado |
|---|---|
ffmpeg | El 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.mp4 | El 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ámetro | Significado |
|---|---|
-c:v libx264 | -c:v significa "video codec"; libx264 es el codificador H.264 |
-crf 23 | Nivel de calidad (0–51). Menor = mejor calidad, archivo más grande |
Guía de valores CRF
| CRF | Calidad | Cuándo usarlo |
|---|---|---|
| 18 | Excelente (casi sin pérdidas) | Archivar videos importantes |
| 23 | Buena (valor por defecto) | Uso general |
| 28 | Aceptable | Compartir en línea, redes sociales |
| 33 | Baja | Vistas 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
| Preset | Velocidad | Tamaño del archivo |
|---|---|---|
ultrafast | Muy rápida | Más grande |
fast | Rápida | Más grande |
medium | Normal (por defecto) | Normal |
slow | Lenta | Más pequeño |
veryslow | Muy lenta | Má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ámetro | Significado |
|---|---|
-vf scale=-2:720 | -vf significa "video filter" (filtro de video); scale redimensiona el video |
-2 | Calcula el ancho automáticamente para mantener la relación de aspecto |
720 | Altura objetivo en píxeles (720p) |
Resoluciones comunes:
scale=-2:2160→ 4Kscale=-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ámetro | Significado |
|---|---|
-c:a aac | -c:a significa "audio codec"; aac es un formato de audio muy común |
-b:a 128k | Bitrate de audio: 128 Kilobits/segundo |
Guía de bitrate de audio:
320k→ Música de alta calidad192k→ Buena calidad128k→ 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
| Objetivo | Comando |
|---|---|
| Compresión básica | ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4 |
| Archivo más pequeño | ffmpeg -i input.mp4 -c:v libx264 -crf 28 output.mp4 |
| Mayor calidad | ffmpeg -i input.mp4 -c:v libx264 -crf 18 output.mp4 |
| Redimensionar a 720p | ffmpeg -i input.mp4 -vf scale=-2:720 -c:v libx264 -crf 23 output.mp4 |
| Con compresión de audio | ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4 |