Обрезка ffmpeg: «Недопустимый слишком большой или неположительный размер ширины»

Обрезка ffmpeg: «Недопустимый слишком большой или неположительный размер ширины»

Я пытаюсь сгенерировать миниатюры изображений с помощью ffmpeg. Папка содержит различные файлы jpeg с разным разрешением.

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

Он работает с большинством изображений в папке, но crop=238:358может дать сбой в зависимости от определенных разрешений изображений:

input1.jpg: 500x800изменение размера и обрезка выполнены успешно

input2.jpg: 470x800Не удалось изменить размер и обрезать:

Недопустимый слишком большой или неположительный размер для ширины «238» или высоты «358»

Проблема возникает, когда 237pxвместо масштабированных изображений используются масштабированные изображения 238pxиз-за масштабирования соотношения сторон.

Поскольку это скрипт, обрабатывающий кучу файлов, я ищу решение, которое может обрабатывать все разрешения изображений.

решение1

Фильтр масштабирования усекает результат выражений до целого числа, и возможно, что выражение даст, например, 237,999, которое будет усечено до 237. Обходной путь — немного увеличить коэффициенты, поэтому

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

Связанный контент