ffmpeg:框架缩略图,保留纵横比,应用背景/填充/填充颜色

时间:2014-10-15 21:02:12

标签: ffmpeg

我已经找到了如何缩放缩略图以保持在指定的边界尺寸内,同时保持纵横比。例如,要将显示在6秒内的帧放入input.mp4视频文件中,并将其缩放为适合96x60(16:10宽高比):

ffmpeg -y -i input.mp4 -ss 6 -vframes 1 -vf scale="'if(gt(a,16/10),96,-1)':'if(gt(a,16/10),-1,60)'" output.png

这很好,它有效。

接下来,我想做同样的事情,但如果视频的宽高比不完全是16:10,那么我想通过上面的转换强制输出图像的宽高比为16:10,并用白色填充或填充空间。也就是说,我希望输出就像我拍摄的96x48图像一样,并将其放在96x60的白色背景上,在96x48图像的上方和下方产生白色条纹。

理想情况下,我不想使用其他工具或库,例如ImageMagick。如果ffmpeg可以自己做到这一点,那将是最好的。

2 个答案:

答案 0 :(得分:4)

这就是我的用途。对于-vf参数:

-vf "scale='if(gt(a,16/10),96,-1)':'if(gt(a,16/10),-1,60)', pad=w=96:h=60:x=(ow-iw)/2:y=(oh-ih)/2:color=white"

这将按顺序应用两个过滤器,用逗号分隔。

答案 1 :(得分:0)

target_H = 2436
target_W = 1124

ffmpeg -i 1.mp4 -ss 1 -vframes 1 -vf "scale=min(iw*2436/ih\,1124):min(2436\,ih*1124/iw),pad=1124:2436:(1124-iw)/2:(2436-ih)/2:green" output.png