Cómo recortar imágenes y videos con FFmpeg
FFmpeg es una robusta utilidad de línea de comandos que hace que recortar imágenes y videos sea sencillo y eficiente. En esta guía mostramos técnicas prácticas para recortar archivos de medios directamente desde la terminal, lo que agiliza tu flujo de trabajo de desarrollo.
Introducción a FFmpeg para recortar imágenes y videos
FFmpeg es una herramienta versátil que se usa para procesar archivos de audio, video e imagen. Además de convertir formatos y codificar streams, FFmpeg puede recortar medios con precisión. Esta capacidad resulta especialmente útil cuando necesitas centrarte en una región concreta de una imagen o un video, ya sea para aplicaciones web, edición de contenido o tareas de automatización.
Instalar FFmpeg en tu sistema
Antes de adentrarte en el recorte, asegúrate de que FFmpeg esté instalado en tu sistema.
Instalar en macOS
Instala FFmpeg con Homebrew:
brew install ffmpeg
Instalar en Linux
Para sistemas basados en Debian:
sudo apt update
sudo apt install ffmpeg
Para sistemas basados en Red Hat:
sudo dnf install ffmpeg
Instalar en Windows
Descarga la compilación más reciente desde el sitio web oficial de FFmpeg.
Extrae los binarios y agrega el directorio bin de FFmpeg a la variable de entorno PATH de tu sistema.
Conceptos básicos del recorte en FFmpeg
El recorte se realiza con el filtro crop de FFmpeg, que requiere cuatro parámetros:
width(out_w): el ancho del medio de salida.height(out_h): el alto del medio de salida.x: la coordenada x de la esquina superior izquierda donde comienza el recorte.y: la coordenada y de la esquina superior izquierda donde comienza el recorte.
La sintaxis general es:
ffmpeg -i input -vf "crop=out_w:out_h:x:y" output
Recortar imágenes con FFmpeg
Aunque FFmpeg es ampliamente conocido por el procesamiento de video, maneja las imágenes con la misma solvencia. Aquí tienes un ejemplo para recortar una imagen.
Ejemplo: recortar una imagen
Para recortar una región de 200x200 píxeles a partir de las coordenadas (50,50) en input.jpg:
ffmpeg -i input.jpg -vf "crop=200:200:50:50" output.jpg
Explicación
-i input.jpgespecifica el archivo de entrada.-vf "crop=200:200:50:50"aplica el filtro de recorte con las dimensiones y los desplazamientos definidos.output.jpges la imagen recortada resultante.
Recortar videos con FFmpeg
Recortar videos funciona de forma similar a las imágenes: el filtro de recorte se aplica a cada fotograma del video.
Ejemplo: recortar un video
Para recortar una región de 1280x720 a partir de la esquina superior izquierda de input.mp4:
ffmpeg -i input.mp4 -vf "crop=1280:720:0:0" output.mp4
Explicación
-i input.mp4especifica el video de entrada.-vf "crop=1280:720:0:0"recorta el video a 1280x720 píxeles desde la esquina superior izquierda.output.mp4es el archivo de salida.
Recorte dinámico según las dimensiones de entrada
Para mayor flexibilidad, puedes usar expresiones que recorten automáticamente en relación con las dimensiones del video de entrada. Por ejemplo, para recortar el cuadrado central de un video:
ffmpeg -i input.mp4 -vf "crop='min(in_w\,in_h)':'min(in_w\,in_h)':(in_w-min(in_w\,in_h))/2:(in_h-min(in_w\,in_h))/2" output.mp4
in_wein_hrepresentan el ancho y el alto de la entrada.- La función
min(in_w\,in_h)selecciona la dimensión menor, lo que garantiza un recorte cuadrado. - Las expresiones centran el recorte horizontal y verticalmente.
Opciones de línea de comandos para recortar en FFmpeg
El comando esencial de recorte es:
ffmpeg -i input -vf "crop=out_w:out_h:x:y" output
También puedes especificar parámetros con nombre para mayor claridad:
ffmpeg -i input.mp4 -vf "crop=w=1280:h=720:x=0:y=0" output.mp4
Ambos enfoques producen el mismo resultado.
Automatizar tareas de recorte con scripts
Automatizar tareas de recorte repetitivas puede ahorrarte un tiempo valioso. Puedes escribir scripts de shell o archivos batch para aplicar ajustes de recorte consistentes a varios archivos.
Recorte por lotes de imágenes con un script de bash
El siguiente script procesa todos los archivos .jpg de un directorio:
#!/bin/bash
for img in *.jpg; do
ffmpeg -i "$img" -vf "crop=200:200:50:50" "cropped_$img"
done
Recorte por lotes de imágenes con un script batch (Windows)
for %%i in (*.jpg) do ffmpeg -i "%%i" -vf "crop=200:200:50:50" "cropped_%%i"
Usar Python para automatizar el recorte
También puedes llamar a FFmpeg desde Python:
import subprocess
import glob
for img in glob.glob("*.jpg"):
subprocess.call([
"ffmpeg",
"-i", img,
"-vf", "crop=200:200:50:50",
f"cropped_{img}"
])
¿Por qué usar FFmpeg para recortar?
FFmpeg es una opción confiable para recortar medios por varias razones:
- Automatización: fácil de usar en scripts para el procesamiento por lotes.
- Versatilidad: admite una amplia gama de formatos de entrada y salida.
- Eficiencia: procesa medios con rapidez y se integra sin problemas en flujos de trabajo automatizados.
- Funcionamiento headless: ideal para entornos de servidor sin interfaz gráfica.
Conclusión y recursos adicionales
Recortar imágenes y videos con FFmpeg es sencillo una vez que entiendes los parámetros y la sintaxis. Ya sea que abordes un proyecto puntual o automatices tareas recurrentes, FFmpeg ofrece herramientas robustas para mejorar tu pipeline de procesamiento de medios.
Para obtener información más detallada, visita la documentación de FFmpeg.
Si buscas una solución escalable para automatizar tareas de procesamiento de medios, incluido el recorte de imágenes y videos, considera explorar la API de Transloadit.
