ffmpeg 通过添加框或边框来扩展(不调整大小)视频大小

问题描述 投票:0回答:2

假设我有一个特殊分辨率的视频,例如 1280x718,我想将其更改为 1280x720。

但是我不想将 718 像素垂直插值到 720,我宁愿只在顶部和底部添加一行。

所以基本上,我正在寻找一种方法来告诉 ffmpeg 创建 1280x720 的输出视频,其中 1280x718 的输入视频覆盖中心,所有未覆盖的区域都是黑色或其他。

我想我们可以称之为裁剪的相反。我知道如何 resize 视频(带插值)但在这种情况下我不想重新缩放或弄乱原始内容,只需添加一个小边框。

video ffmpeg resize border resolution
2个回答
13
投票

找到答案,张贴在这里供参考:

ffmpeg -i input.mp4 -vcodec libx264 \
-vf "pad=width=1280:height=720:x=0:y=1:color=black" -acodec copy result.mkv

width
height
是预期的输出分辨率,
x
y
是放置输入的左上角坐标(在新输出中)。
color
(可选)是边框颜色,也可以使用
color=0xff00ff
表示法。


2
投票

虽然接受的答案可以添加填充,但它不会使图像在该填充中居中。要填充视频居中,请添加

:x=-1:y=-1

ffmpeg -i "input.mp4" -c:a copy -c:v libx264 \
 -vf "pad=width=1280:height=720:x=-1:y=-1:color=black" output.mp4

之所以有效,是因为

pad
过滤器的文档指出:

x, y

指定偏移量以将输入图像放置在填充的 区域,相对于输出图像的上/左边界。

x表达式可以引用y表达式设置的值,反之亦然

x和y的默认值为0。

如果 x 或 y 评估为负数,它们将被更改,因此输入图像以填充区域为中心。

© www.soinside.com 2019 - 2024. All rights reserved.