我有一个视频480x360分辨率,我想要做的是把这个视频升级到1280:720并且不会丢失原始视频的宽高比(左侧和右侧为信箱)
所以我知道人们可以使用 ffmpeg 完成这项任务,但到目前为止我还不能这样做
那么有人可以与我分享 ffmpeg 推荐吗?
非常感谢您的帮助
答案1
ffmpeg -i input.mp4 -vf "scale=(iw*sar)*min(1280/(iw*sar)\,720/ih):ih*min(1280/(iw*sar)\,720/ih), pad=1280:720:(1280-iw*min(1280/iw\,720/ih))/2:(720-ih*min(1280/iw\,720/ih))/2" output.mp4
让我为你分解一下这个命令:
ffmpeg -i input.mp4
这是 ffmpeg 的标准输入方法。将“input.mp4”替换为您的输入文件的名称。
-vf
指定命令中跟随的一些视频过滤器。指定的视频过滤器将按顺序应用于每一帧。
scale=(iw*sar)*min(1280/(iw*sar)\,720/ih):ih*min(1280/(iw*sar)\,720/ih)
第一个过滤器是缩放过滤器。缩放过滤器功能强大,因为它可以执行值替换和数学运算。在本例中,数学运算会计算新的缩放宽度和高度。它将缩放输入图像以适应所需输出格式的宽度和/或高度,而不会扭曲图像。您不需要对缩放参数进行任何修改,因为它会自动替换“iw”、“sar”和“ih”的实际值。在您的例子中,由于您的输入视频是 4x3,我们知道数学运算将计算出缩放到高度 720 但宽度小于 1280。更多信息:https://ffmpeg.org/ffmpeg-filters.html#scale-1
pad=1280:720:(1280-iw*min(1280/iw\,720/ih))/2:(720-ih*min(1280/iw\,720/ih))/2
第二个过滤器是 pad 过滤器。它具有与 scale 功能相同的数学/替换功能。因此,它会为您计算出准确的数字。您无需更改任何内容即可使其工作。参数告诉 pad 过滤器将输出设为 720x1280,并将输入图像放置在框架的中心。pad 过滤器将用黑色填充输入图像未覆盖的任何输出图像。对于您的输入,我们知道 scale 过滤器将高度缩放为 720,但宽度不足 1280。因此,将在侧面添加黑条以弥补差异。更多信息:https://ffmpeg.org/ffmpeg-filters.html#pad
output.mp4
这指定了 ffmpeg 将放置结果的输出文件。您可能需要添加格式、比特率等各种参数以满足您的确切需求。