我想从视频生成一个图像,但首先我想将其缩放到一定的宽度/高度,然后将其裁剪为一个正方形的大小,问题是我的新版本ffmpeg似乎没有首先使用缩放.
ffmpeg版本2.8.6-1ubuntu2
失败:
ffmpeg -y -i input.mp4 -an -ss 5 -s 150x150 -vf scale=-1:150,crop=150:150 -vframes 1 output-small.jpg
Run Code Online (Sandbox Code Playgroud)
宽度'150'或高度'150'的尺寸太大或非正尺寸无效
作品:
ffmpeg -y -i input.mp4 -an -ss 5 -s 150x150 -vf crop=150:150,scale=-1:150 -vframes 1 output-small.jpg
Run Code Online (Sandbox Code Playgroud)
然而,我不能满足于第二个命令,因为我生成的图像可能比原始尺寸大(我为每个图像创建了几个不同的尺寸),因此必须首先进行缩放.任何人都知道这里有什么改变或我做错了什么?
这可能是因为您的视频是人像,因此缩放后的图片宽度小于150像素.因此作物失败了.
此外,您应该跳过该-s选项,否则您将触发两个缩放器执行.
尝试
ffmpeg -y -i input.mp4 -ss 5 -vf scale='if(gt(iw,ih),-1,150)':'if(gt(iw,ih),150,-1)',crop=150:150 -vframes 1 output-small.jpg
Run Code Online (Sandbox Code Playgroud)