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

関連情報