FFmpeg 给视频增加黑边

本文介绍如何使用FFmpeg的pad滤镜为视频添加黑边。通过设置视频的宽度、高度及黑边的位置,可以将任意尺寸的视频标准化至指定尺寸,并保持原有画面的比例不变。
使用FFmpeg给视频增加黑边需要用到 pad 这个滤镜,具体用法如下:
   -vf pad=1280:720:0:93:black

按照从左到右的顺序依次为:
​   “宽”、“高”、“X坐标”和“Y坐标”,宽和高指的是输入视频尺寸(包含加黑边的尺寸),XY指的是视频所在位置。

比如一个输入视频尺寸是1280x534的源,想要加上黑边变成1280x720,那么用上边的语法可以实现,93是这样得来的,(720-534)/2。

如果视频原始1920x800的话,完整的语法应该是:
   -vf 'scale=1280:534,pad=1280:720:0:93:black'

先将视频缩小到1280x534,然后在加入黑边变成1280x720,将1280x534的视频放置在x=0,y=93的地方,
FFmpeg会自动在上下增加93像素的黑边。
注:black可以不写,默认是黑色
<think>好的,我现在需要帮助用户解决使用FFmpeg缩放视频时保持比例并用黑色填充至720x1280尺寸的问题。首先,我得回顾一下用户的需求:他们希望将视频缩放到720:1280的尺寸,同时保持原始宽高比,并用黑色填充多余的部分。用户可能是在处理手机竖屏视频,或者需要适配特定分辨率的设备,比如社交媒体上的视频格式。 首先,我应该考虑FFmpeg中用于缩放和填充的滤镜。常用的滤镜组合是scale和pad。scale负责调整视频尺寸,而pad则用于添加填充区域。为了保持宽高比,通常需要在缩放时指定一个参数,让FFmpeg自动计算另一个维度,例如设置宽度为720,高度自动计算,或者高度为1280,宽度自动计算,具体取决于原视频的宽高比和目标尺寸的比例。 接下来,我需要确定如何正确设置scale滤镜的参数。用户的目标尺寸是720x1280,但需要保持原始比例。假设原视频是横屏(比如16:9),那么缩放后的视频宽度可能为720,高度可能小于1280,这时需要在上下添加黑边。反之,如果原视频是竖屏(比如9:16),则高度设置为1280,宽度可能小于720,需要在左右添加黑边。因此,scale滤镜的参数应该根据原视频的宽高比来动态调整,保持较大的边符合目标尺寸,较小的边自动计算,然后用pad滤镜将另一边扩展到目标尺寸,并填充黑色。 然后,考虑如何组合这两个滤镜。在FFmpeg中,可以使用-vf参数串联多个滤镜,用逗号分隔。例如,先使用scale调整尺寸,再使用pad添加填充。同时,需要计算pad的位置,使视频居中。pad的x和y参数可以通过表达式计算,比如(目标宽度 - 缩放后的宽度)/2和(目标高度 - 缩放后的高度)/2,这样视频就会居中显示。 另外,颜色格式的问题。FFmpeg默认可能会使用YUV颜色空间,但pad的颜色参数需要正确指定。黑色通常用black表示,也可以使用十六进制值如#000000。需要确保pad滤镜中的color参数正确设置。 还要注意,用户可能希望输出的视频编码参数保持不变,或者需要重新编码。因此,在命令中可能需要指定编码器,例如使用-c:v libx264来保持H.264编码,或者使用其他编码器。同时,保持音频流不被处理,使用-c:a copy来直接复制音频流,避免重新编码导致质量损失或时间增加。 最后,测试这个命令是否有效。例如,原视频是1920x1080(16:9),目标720x1280(9:16)。缩放时,保持高度为1280,宽度按比例计算为1280*(16/9)=2275.55,这显然超过了目标宽度720,所以应该反过来,保持宽度为720,高度自动计算为720*(9/16)=405,这样高度405小于1280,需要用pad将高度扩展到1280,并在上下添加黑色填充,总高度为405 + (1280-405)/2上下各加437.5,但由于FFmpeg可能需要整数,可能需要调整表达式,使用(iw*1280/ih)这样的计算方式,或者使用min函数确保正确缩放。 可能的错误点:用户可能混淆了目标尺寸的顺序,720:1280是否是宽度:高度还是高度:宽度。通常FFmpeg中的尺寸是宽x高,所以正确的目标应该是720x1280,即宽度720,高度1280。如果原视频是横屏,缩放后宽度720,高度按比例缩小,然后pad到1280高度,但这样可能需要调整pad的参数为宽度保持720,高度扩展到1280,但实际上这样会导致图像变形。因此正确的做法应该是,缩放视频使其适应目标尺寸的较大边,然后在另一侧添加填充。 或者,可能更准确的是,使用scale滤镜的force_original_aspect_ratio参数,设置为decrease或increase,这样可以自动调整尺寸,保持比例,然后使用pad来扩展到目标尺寸。例如:scale=720:1280:force_original_aspect_ratio=decrease,pad=720:1280:(ow-iw)/2:(oh-ih)/2:color=black。这样FFmpeg会自动缩放视频,保持原始比例,不超过目标尺寸,然后在需要的地方填充黑色。 总结,正确的命令应该结合scale和pad滤镜,使用force_original_aspect_ratio来保持比例,然后pad到目标尺寸,并居中显示。同时,确保颜色正确,音频流正确处理。</think>要使用FFmpeg缩放视频至720x1280分辨率并保持宽高比,同时用黑色填充空白区域,可以使用 `scale` 和 `pad` 滤镜组合。具体命令如下: ```bash ffmpeg -i input.mp4 -vf "scale=720:1280:force_original_aspect_ratio=decrease,pad=720:1280:(ow-iw)/2:(oh-ih)/2:color=black" output.mp4 ``` ### 分步说明: 1. **缩放视频 (`scale`)** - `scale=720:1280` 指定目标分辨率。 - `force_original_aspect_ratio=decrease` 表示保持原始宽高比,并将视频缩放到不超过目标尺寸的最大可能尺寸[^1]。 2. **填充黑色区域 (`pad`)** - `pad=720:1280` 设置最终输出分辨率。 - `(ow-iw)/2:(oh-ih)/2` 自动计算左右/上下填充的起始位置,使视频居中。 - `color=black` 指定填充颜色为黑色。 ### 补充说明: - 如果原视频为竖屏比例(如9:16),缩放后可能宽度不足720,此时左右填充黑色。 - 如果原视频为横屏比例(如16:9),缩放后可能高度不足1280,此时上下填充黑色。 - 音频默认会保留原格式,如需重新编码可添加 `-c:a aac` 等参数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值