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

ffmpeg:帧缩略图,保留纵横比,应用背景/填充/填充颜色,ffmpeg,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,那么我想通过进行上述变换

我已经了解了如何在保持纵横比的同时缩放缩略图,使其保持在指定的边界尺寸内。例如,要将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能够独立完成这项工作,那就最好了。

以下是我的建议。对于
-vf
参数:

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


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

以下是我使用的内容。对于
-vf
参数:

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
-vf“scale='if(gt(a,16/10),96,-1)':'if(gt(a,16/10),-1,60)',pad=w=96:h=60:x=(owiw)/2:y=(oh-ih)/2:color=white'


这将按顺序应用两个筛选器,以逗号分隔。

值得调查。@LordNeckbeard:如果您提交包含此内容的答案,我将投票并接受。值得调查。@LordNeckbeard:如果您提交包含此内容的答案,我会投票并接受它。虽然这可能回答问题,但最好包括一些关于这如何回答我帮助解决问题的描述。虽然这可能回答问题,但最好包括一些关于这如何回答我帮助解决问题的描述。
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