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);
根据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
我正在尝试使用 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);
根据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