
Estoy intentando generar miniaturas de imágenes usando ffmpeg. La carpeta contiene varios archivos jpeg con diferentes resoluciones.
ffmpeg -y -i input1.jpg -filter_complex "scale=(iw*sar)*max(238/(iw*sar)\,358/ih):ih*max(238/(iw*sar)\,358/ih), crop=238:358" thumbnail.jpg
Funciona con la mayoría de las imágenes de la carpeta, pero crop=238:358
fallará dependiendo de determinadas resoluciones de imágenes:
input1.jpg: 500x800
cambiar el tamaño y recortar correctamente
input2.jpg: 470x800
cambiar el tamaño y recortar falla:
Tamaño no válido demasiado grande o no positivo para el ancho '238' o el alto '358'
El problema ocurre cuando las imágenes escaladas se 237px
deben 238px
al escalado de la relación de aspecto.
Dado que se trata de un script que procesa un montón de archivos, estoy buscando una solución que pueda manejar todas las resoluciones de imágenes.
Respuesta1
El filtro de escala truncará el resultado de las expresiones a un número entero y es posible que la expresión produzca, por ejemplo, 237,999, que se trunca a 237. La solución es aumentar ligeramente los coeficientes, de modo que
ffmpeg -y -i input1.jpg -vf "scale=(iw*sar)*max(238.1/(iw*sar)\,358.1/ih):ih*max(238.1/(iw*sar)\,358.1/ih), crop=238:358" thumbnail.jpg