如何用FFmpeg将图片转为16:10比例的短视频并以黑色填充空白区域
如何用FFmpeg将图片转为16:10比例的短视频并以黑色填充空白区域
嗨,我来帮你搞定这个问题!你之前用crop滤镜的思路走偏啦——crop是用来裁剪画面的,不是给画布加空白填充的,难怪会报尺寸错误~要实现「保持原图比例不拉伸、用黑色填充空白区域到16:10比例」的效果,咱们得用pad滤镜(配合可选的scale滤镜来精准控制),下面给你具体的解决方案:
方法一:自动适配16:10比例(无需指定固定分辨率)
这个命令会自动计算需要填充的黑边大小,让原图在16:10的画布中居中显示,完全不拉伸:
ffmpeg -r 1/30 -i image.jpg -vf "pad='max(iw,ih*16/10)':'max(ih,iw*10/16)':(ow-iw)/2:(oh-ih)/2:black" -y video.mp4
参数解释:
max(iw,ih*16/10):自动计算画布宽度,取「原图宽度」和「原图高度按16:10换算的宽度」中的较大值,确保原图能完全放下max(ih,iw*10/16):同理自动计算画布高度(ow-iw)/2和(oh-ih)/2:让原图在新画布中居中对齐black:指定填充空白的颜色为黑色,你也可以换成其他颜色,比如red或者十六进制色值#00FF00(绿色)
方法二:指定固定16:10分辨率(比如1920×1200)
如果你需要输出固定尺寸的16:10视频(比如常见的1920×1200),可以先把原图缩放到适配这个尺寸的大小,再补黑边:
ffmpeg -r 1/30 -i image.jpg -vf "scale='min(1920,iw)':'min(1200,ih)':force_original_aspect_ratio=decrease,pad=1920:1200:(ow-iw)/2:(oh-ih)/2:black" -y video.mp4
参数解释:
scale部分:将原图缩小到不超过1920×1200的范围,同时严格保持原比例,避免拉伸变形pad部分:把画面补到1920×1200的固定尺寸,居中对齐,空白处填充黑色
为什么你之前的crop命令会失败?
crop滤镜的作用是从现有画面中裁剪掉一部分,它只能缩小画面尺寸,不能扩大画布。你用crop=in_w+200:in_h+200试图让画面尺寸变大,这违背了crop的功能逻辑,所以才会出现「尺寸太大或无效」的错误提示哦~
备注:内容来源于stack exchange,提问作者Eugen N
相关产品推荐
相关产品推荐

