要从视频中获取200x100
缩略图,我会ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -s 200x100 image.jpg
。但如果源视频与200x100
的宽高比不同,则缩略图会变形(拉伸或压扁,水平或垂直)并且看起来很糟糕。
ffmpeg
是否可以找出500x200
视频100px
太宽,并从右侧删除50px
50px
的方法从左边开始制作视频400x200
?由于400x200
与200x100
具有相同的宽高比,因此缩略图不会失真。
我知道还有其他工具可以对ffmpeg
生成的缩略图执行此操作,但我更喜欢在ffmpeg
内执行,而不必再次处理缩略图。
答案 0 :(得分:4)
如果缩略图大小为200x100,则运行
ffmpeg -ss 100 -i /tmp/video.mp4 -vf "scale='if(gt(dar,200/100),100*dar,200)':'if(gt(dar,200/100),100,200/dar)',setsar=1,crop=200:100" -frames:v 1 image.jpg
缩放滤镜检查源和缩放的宽高比,使一个尺寸适合200x100画布,另一个尺寸适合超调,除非它是完美匹配。然后,裁剪过滤器从中心将其裁剪为200x100,从而处理出界区域。
答案 1 :(得分:4)
您可以使用scale过滤器中的force_original_aspect_ratio
选项。
ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -q:v 2 -vf "scale=200:100:force_original_aspect_ratio=increase,crop=200:100" image.jpg