Cómo recortar los bordes negros de un video con FFmpeg

¿Alguna vez has tenido que lidiar con esos molestos bordes negros en tus videos? Es algo muy común, pero arruina la estética si no quieres ese efecto de letterboxing. La buena noticia es que FFmpeg tiene herramientas poderosas para solucionar esto sin mucho esfuerzo.

Vista de un video con barras negras arriba y abajo
Un ejemplo clásico de un video con letterboxing y bordes negros.

El enfoque automático: cropdetect y crop

La forma más directa de abordar este problema es usando el filtro cropdetect. Este filtro analiza los píxeles del video para encontrar automáticamente la zona que tiene menos bordes negros. Una vez que tienes esa detección, simplemente aplicas el filtro crop con las dimensiones exactas.

Puedes ejecutar este comando inicial para analizar todo el archivo:

ffmpeg -i video.mp4 -vf cropdetect -f null -

Este proceso generará una salida en la consola que te dará las coordenadas exactas, por ejemplo: crop=1920:800:0:140. Con esos valores, puedes aplicar el recorte fácilmente usando:

ffmpeg -i video.mp4 -vf "crop=1920:800:0:140" -c:a copy salida.mp4

Ojo con esto: aunque es muy rápido, cropdetect no siempre falla, pero a veces puede confundirse. Si tu video tiene subtítulos pegados, transiciones de fade a negro o escenas muy oscuras, el algoritmo podría dar resultados extraños.

Para evitar tardar horas con archivos largos, puedes optimizar el proceso usando -ss y -t. Por ejemplo, analizar solo los primeros 30 segundos desde el minuto uno te ahorrará mucho tiempo:

ffmpeg -ss 00:01:00 -i video.mp4 -t 30 -vf cropdetect -f null -

Inspeccionar y recortar en tiempo real con ffplay

A veces, confiar solo en los comandos automáticos no es suficiente. Es genial tener la opción de ver qué está pasando en tiempo real sin modificar el archivo original. Puedes usar ffplay directamente para probar el filtro de recorte al instante:

Vista dividida mostrando el letterboxing original junto a la versión sin bordes
Comparativa entre el video original con bordes y la versión recortada limpia.
ffplay -vf "crop=1920:800:0:140" video.mp4

Incluso, si no quieres depender de los cálculos automáticos, puedes usar expresiones para recortar a ojo. Por ejemplo, con in_w y in_h, puedes definir un crop manual muy rápido:

ffplay -vf "crop=in_w:in_h-280:0:140" video.mp4

Este comando mantiene el ancho original, pero reduce 280 píxeles del alto y desplaza la imagen 140 píxeles desde arriba. Es una forma muy práctica de limpiar un letterbox clásico sin tener que calcular números exactos.

En resumen, FFmpeg ofrece tanto soluciones automáticas como manuales para ajustar tus videos perfectamente a tu pantalla.