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

相关内容