Corte ffmpeg: 'Inválido, tamanho muito grande ou não positivo para largura'

Corte ffmpeg: 'Inválido, tamanho muito grande ou não positivo para largura'

Estou tentando gerar miniaturas de imagens usando ffmpeg. A pasta contém vários arquivos JPEG com diferentes resoluções.

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 com a maioria das imagens da pasta, mas crop=238:358falhará dependendo de determinadas resoluções de imagens:

input1.jpg: 500x800redimensionar e cortar com sucesso

input2.jpg: 470x800redimensionar e cortar falha:

Tamanho inválido muito grande ou não positivo para largura '238' ou altura '358'

O problema acontece quando as imagens dimensionadas são obtidas 237pxem vez de 238pxdevido ao dimensionamento da proporção.

Como este é um script que processa vários arquivos, estou procurando uma solução que possa lidar com todas as resoluções de imagens

Responder1

O filtro de escala truncará o resultado das expressões para um número inteiro, e é possível que a expressão produza, por exemplo, 237.999, que é truncado para 237. A solução alternativa é aumentar ligeiramente os coeficientes, então

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

informação relacionada