CLI AI

Comprimir un video a MP4 con ffmpeg

2026-06-03

ffmpeg -i in.mp4 -c:v libx264 -crf 28 -preset fast out.mp4 comprime un video a MP4, sacrificando algo de calidad por un archivo bastante más pequeño — CRF es el dial, y 18–28 es el único rango que hace falta recordar. El resto cubre la escala de CRF con números reales, convertir una carpeta entera de una vez, y el paso que la mayoría de guías se saltan: revisar la duración y los códecs de un archivo antes de lanzar una recodificación de una hora.

1. Qué hay realmente dentro del archivo

clai
$ clai muéstrame la duración de este video→ ffprobe -v error -show_entries format=duration -of csv=p=0 in.mp42.000000

ffprobe viene incluido con ffmpeg y no recodifica nada. Antes de lanzar una conversión que puede tardar una hora, mira con qué estás trabajando realmente.

2. Comprimirlo controlando la calidad

clai
$ clai comprime este video, la calidad importa más que el tamaño→ ffmpeg -i in.mp4 -c:v libx264 -crf 28 -preset fast out.mp4

En el clip de prueba, el origen pesaba 13074 bytes y la salida quedó en 10861 bytes. CRF es una escala de calidad de 0 a 51, donde menos significa mejor y más grande. El rango que vale la pena conocer es 18–28: 18 es visualmente indistinguible del original, 23 es un valor por defecto razonable, 28 se nota más blando pero sirve para la mayoría de los casos.

3. Reducir la resolución si comprimir no basta

clai
$ clai comprímelo más y reduce la altura a 144 píxeles→ ffmpeg -i in.mp4 -vf "scale=-2:144" -crf 30 small.mp4

Mismo clip, ahora 8130 bytes frente a los 13074 originales. El -2 en el ancho significa «calcúlalo tú, mantén la proporción y redondea a un número par» — los códecs necesitan dimensiones pares, y ahí es exactamente donde falla la mitad de los one-liners de ffmpeg que circulan por internet.

4. Cambiar de contenedor sin tocar el contenido

clai
$ clai pasa este video de mov a mp4 sin recodificar→ ffmpeg -i input.mov -c copy output.mp4

-c copy copia los streams tal cual. Tarda segundos en vez de minutos y no pierde calidad, siempre que los códecs internos sean compatibles con el nuevo contenedor — de mov a mp4 normalmente lo son.

5. Procesar una carpeta entera

clai
$ clai convierte todos los mov de esta carpeta a mp4, conserva los nombres→ for f in *.mov; do ffmpeg -i "$f" -c:v libx264 -crf 23 "${f%.mov}.mp4"; done

${f%.mov} quita la extensión. Las comillas alrededor de $f no son opcionales — sin ellas, el primer archivo con un espacio en el nombre rompe el bucle.

6. Cortar un clip sin recodificar

clai
$ clai corta un clip de un minuto que empiece en el segundo 30→ ffmpeg -ss 30 -i input.mp4 -t 60 -c copy clip.mp4

-ss antes de -i es rápido porque ffmpeg busca en vez de decodificar. Con -c copy el corte cae en el keyframe más cercano, así que el inicio puede desviarse hasta un segundo. ¿Necesitas precisión de fotograma? Quita -c copy y paga el precio de la recodificación.

Trampas habituales

  • -preset cambia la velocidad, no la calidad. ultrafast codifica rápido y da un archivo más grande, slow hace lo contrario. Con el mismo CRF apenas afecta a la calidad — es un intercambio directo de tiempo por tamaño.
  • El audio se recodifica en silencio. Si no dices nada sobre -c:a, ffmpeg decide por ti. Añade -c:a copy cuando el audio no necesite tocarse.
  • CRF no significa lo mismo en todos los códecs. Para libx265, el mismo número da más calidad: CRF 28 en x265 equivale aproximadamente a CRF 23 en x264.

Preguntas relacionadas

¿Qué CRF debería usar? Empieza en 23. Si el archivo es muy grande, sube a 28. Para un archivo que no debe degradarse, usa 18.

¿Por qué ffmpeg es mejor que un conversor online? El clip no sale de tu máquina, no hay límite de tamaño de archivo, y un solo comando procesa una carpeta entera.

¿Cómo acelero la codificación? Usa un codificador por hardware: -c:v h264_nvenc en NVIDIA, -c:v h264_videotoolbox en macOS. Mucho más rápido, con algo menos de calidad al mismo bitrate.

Ver también

CliAI escribe los flags de ffmpeg correctos para lo que describas, CRF y filtro de escala incluidos. Instálalo en una línea.