FFmpeg 缩放错误

FFmpeg scaling error

我正在尝试使用 FFmpeg Android Java library 转换 Android 上的视频 我的方法采用输入和输出文件路径以及输出文件的尺寸(例如 640x480)。视频应适合裁剪这些范围。由于视频可能是横向或纵向的,我是下一个参数:

String.format("-i %s \"scale='if(gt(a,1),-1,%d)':'if(gt(1,a),%d,-1)'\" %s", in, h, w, out);

this article

根据official doc a是输入文件的纵横比(w/h)。

所以 a > 1 gt(a,1) 意味着 w > h 所以视频是横向的,而 1 > a gt(1,a) 意味着 h > w 所以视频是纵向的。

但我遇到下一个错误:

Unable to find a suitable output format for "scale='if(gt(a,1),-1,480)':'if(gt(1,a),640,-1'"
'"scale='if(gt(a,1),-1,480)':'if(gt(1,a),640,-1'" : Invalid argument

我做错了什么? 谢谢。

在缩放过滤器之前需要 -vf。它将比例过滤器解析为输出文件。所以:

-i %s -vf \"scale='if(gt(a,1),-1,%d)':'if(gt(1,a),%d,-1)'\" %s