FFmpeg有一个非常强大的 缩放过滤器 ,可用于完成各种任务。其中一些列在这里。更多信息可以在 官方文档中 找到。

在所有示例中,起始图像(input.jpg)将是这一个(535⨉346像素):

简单重新缩放

如果您只需将视频大小调整为特定大小(例如320⨉240),则可以使用最基本形式的缩放滤镜:

ffmpeg -i input.avi -vf scale = 320:240 output.avi

同样适用于图像:

ffmpeg -i input.jpg -vf scale = 320:240 output_320x240.png

如您所见,纵横比与原始图像不同,因此图像显示为拉伸。

保持宽高比

如果我们想保持纵横比,我们只需要指定一个组件(宽度或高度),并将另一个组件设置为-1。例如,这个命令行:

ffmpeg -i input.jpg -vf scale = 320:-1 output_320.png

将输出图像的宽度设置为320像素,并根据输入图像的宽高比计算输出图像的高度。生成的图像的尺寸为320×207像素。

一些编解码器要求宽度和高度的大小为n的倍数。您可以通过将宽度或高度设置为-n来实现此目的:

ffmpeg -i input.jpg -vf scale = 320:-2 output_320.png

输出现在为320⨉206像素。

还有一些有用的变量可用于代替数字,以指定输出图像的宽度和高度。

例如,如果要以这样的方式拉伸图像以仅使输入图像的宽度加倍,则可以使用类似这样的内容(iw =输入宽度,ih =输入高度):

ffmpeg -i input.jpg -vf scale = iw * 2:ih input_double_width.png

如果你想要图片大小的一半,只需乘以.5或除以2:

ffmpeg -i input.jpg -vf“scale = iw * .5:ih * .5”input_half_size.png
ffmpeg -i input.jpg -vf“scale = iw / 2:ih / 2”input_half_size.png

有时您想要缩放图像,但如果尺寸太小,请避免放大图像。这可以使用min表达式完成:

ffmpeg -i input.jpg -vf“scale ='min(320,iw)':'min(240,ih)'”input_not_upscaled.png

输出宽度将被评估为320的最小值和输入宽度。如果您的输入图像宽度仅为240像素,则min函数的结果将为240 - 这将是您的目标值。

适合矩形/静态大小的播放器

有时您需要缩放输入图像以使其适合指定的矩形,例如在合并来自不同来源的材料时。

您可以使用force_original_aspect_ratio选项实现此目的。它有两个可能的值:

  • 减少:如果需要,输出视频尺寸将自动减小。
  • 增加:如果需要,输出视频尺寸将自动增加。

这允许您强制图像适合320x240框,使用正确的宽高比缩小它:

ffmpeg -i input.jpg -vf scale = w = 320:h = 240:force_original_aspect_ratio =减少output_320.png

这产生了我们之前看到的320x207图像。

您可能有其他约束,例如添加黑条(柱状和letterboxing)以在缩放到某个矩形时填充剩余空间。您还可以使用pad过滤器添加黑色边框:

ffmpeg -i input.jpg -vf“scale = 320:240:force_original_aspect_ratio = decrease,pad = 320:240:(ow-iw)/ 2:(oh-ih)/ 2”output_320_padding.png

更多的例子可以发现在这个超级用户答案

指定缩放算法

您可以使用-sws_flags选项指定用于调整大小的算法。例如,要使用双线性而不是默认的双三次缩放:

ffmpeg -i test.tif -vf scale = 504:376 -sws_flags bilinear out.bmp

有关详细信息,请参阅缩放器文档。要设置多个标志,您可以将它们与+号组合。例如:

-sws_flags lanczos + full_chroma_inp

您还可以直接在比例过滤器中指定选项,例如:

-vf scale = 1920x1080:flags = lanczos
原文链接:https://blog.p2hp.com/archives/5515 springboot + FFmpeg 实战视频切片,主要用于大视频切片上传处理。客户端上传视频到服务器,服务器对视频进行切片后,返回m3u8,封面等访问路径。可以在线的播放。 服务器可以对视频做一些简单的处理,例如裁剪,封面的截取时间。 公司项目需求是,一个视频,需要转码成不同比例的视频,并且添加一个水印,这个水印透明度可调节,本来想用公司渲染引擎,考虑需要gpu环境的服务器,成本比较高,后来想了下使用ffmpeg命令行也能完成这些事情。导出视频1920*1080,如果收入视频比例不一致,把它fidin到1920*1080,多的地方黑色背景填充,lut=a=val*0.5, 0.5是水印的透明度,也就是半透明。input.mp4 输入视频比例可以任意。logo.png 水印文件。overlay 添加水印。 FFmpeg工具没有输入视频宽度和高度的精确数字,而是提供了在下一页的表中列出的预定义视频大小。输入vga参数之后显示的如下图:(确实是640:480)FFmpeg视频大小的缩写大小缩写典型用法128x96sqcif手机160x120qqvga手机176x144qcif手机320x200cga旧的CRT显示器320x240qvga手机、摄像头352x288cif手机640x350ega旧的CRT显示器640x480vga显示器,摄像头704x576。 随着视频制作的普及,视频文件的体积也越来越大,给存储和传输带来了很大的困扰。为了解决这个问题,我们可以使用FFmpeg这个强大的工具来缩小视频的体积。本文将介绍三种常用的方法:调整视频的分辨率、调整视频的码率和使用更高效的视频编码格式。 视频缩放视频开发中一项最基本的功能。通过对视频的像素数据进行采样或插值,可以将低分辨率的视频转换到更高的分辨率,或者将高分辨率的视频转换为更低的分辨率。通过FFMpeg提供了libswscale库,可以轻松实现视频的分辨率转换功能。除此之外,libswscale库还可以实现颜色空间转换等功能。 通常情况下视频缩放的主要思想是对视频进行解码到像素域后,针对像素域的像素值进行采样或差值操作。这种方式需要在解码端消耗一定时间,但是通用性最好,不需要对码流格式作出任何特殊处理。在FFMpeg中libswscale 指导8:软件缩放 软件缩放库libswscale 近来ffmpeg添加了新的接口:libswscale来处理图像缩放。 但是在前面我们使用img_convert来把RGB转换成YUV12,我们现在使用新的接口。新接口更加标准和快速,而且我相信里面有了MMX优化代码。换句话说,它是做缩放更好的方式。 我们将用来缩放的基本函数是sws_scale。但一开始,我们必需建立一个SwsContext的概念。... 1. resize and scale video 调整视频的大小和尺寸   1-1.调整视频大小(resize)是改变视频的宽度和高度。       使用-s参数实现,语法:ffmpeg -i input_file -s wxh output_file (wxh是宽x高,比如320x240)     调整视频尺寸(scale)是改变帧的数量。 上篇文章《安装FFmpeg多媒体库,以及命令行程序使用介绍》学会如何安装FFmpeg,以及FFmpeg的简单使用,本章将深入FFmpeg命令行进行讲解,介绍如何对视频进行缩放和裁剪操作。通过ffmpeg --help查看ffmpeg命令的使用规则。ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...