我正在尝试使用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)。
所以> 1 gt(a,1)
表示w> h所以视频是风景,1> 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
我做错了什么? 感谢。
答案 0 :(得分:4)
在缩放过滤器之前需要-vf。它将比例过滤器解析为输出文件。所以:
-i %s -vf \"scale='if(gt(a,1),-1,%d)':'if(gt(1,a),%d,-1)'\" %s