Recorte de ffmpeg: 'Tamaño no válido demasiado grande o no positivo para el ancho'

Recorte de ffmpeg: 'Tamaño no válido demasiado grande o no positivo para el ancho'

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:358fallará dependiendo de determinadas resoluciones de imágenes:

input1.jpg: 500x800cambiar el tamaño y recortar correctamente

input2.jpg: 470x800cambiar 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 237pxdeben 238pxal 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

información relacionada