《FFmpeg Basics》中文版-04-调整和伸缩视频
创始人
2024-01-29 09:17:40

正文

在FFmpeg中调整视频的大小意味着可以通过一个选项改变其宽度和高度,而缩放则意味着使用一个具有高级功能的scale filter来改变帧的大小。

调整视频

输出视频的宽度和高度可以在输出文件名之前设置-s选项。视频分辨率以wxh格式输入,其中w为像素宽度,h为像素高度。例如,要将初始分辨率的输入调整为320x240,我们可以使用以下命令:

 ffmpeg -i input_file -s 320x240 output_file

给大家看看我的测试命令行:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -s 320x480 /Users/zhangfangtao/Desktop/newtest.mp4 

原来的视频信息如下图:

【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

  

重新编码之后如下图:

确实发生了改变。

预定义的视频帧大小

FFmpeg工具没有输入视频宽度和高度的精确数字,而是提供了在下一页的表中列出的预定义视频大小。下面两个命令的结果相同:

ffmpeg -i input.avi -s 640x480 output.avi
ffmpeg -i input.avi -s vga output.avi

输入vga参数之后显示的如下图:(确实是640:480)

FFmpeg中视频大小的缩写

大小缩写典型用法
128x96sqcif手机
160x120qqvga手机
176x144qcif手机
320x200cga旧的CRT显示器
320x240qvga手机、摄像头
352x288cif手机
640x350ega旧的CRT显示器
640x480vga显示器,摄像头
704x5764cif官方数字视频大小的电视。
800x600svga显示器
852x480hd480, wvga摄像机
1024x768xga显示器,摄像头
1280x720hd720高清电视,摄像机
1280 x1024sxga显示器
1366x768wxga显示器
1408x115216cif设备使用CIF
1600x1024wsxga显示器
1600x1200uxga显示器,摄像机
1920x1080hd1080高清电视,摄像机
1920x1200wuxga宽屏显示器
2048x1536qxga显示器
2560x1600woxga显示器
2560x2048qsxga显示器
3200x2048wqsxga显示器
3840x2400wquxga显示器
5120x4096hsxga显示,显微镜相机
6400x4096whsxga显示器
7680x4800whuxga显示器

调整大小时的注意事项-奈奎斯特采样定理。

视频通常被调整为比来源更小的分辨率,这被称为下采样,主要用于便携式设备,通过互联网流媒体等。重要的是要考虑,在较小的尺寸中,一些细节将会丢失,这一事实解释了奈奎斯特 -Shannon采样定理。 它的一般形式与任何信号有关,并告知为了完全重构采样信号,我们必须使用比信源频率高至少2倍的频率。 这意味着要将小细节保留在缩小的视频中,它们的原始尺寸必须高于缩放比例除以2。

例如,800x600(SVGA)分辨率的视频包含2像素宽的细节。 当缩放到640x480(VGA)分辨率时,缩放比率为0.8,并且2像素再缩放为2像素:

640 pixels / 800 pixels = 0.8
2 pixels * 0.8 = 1.6 ≈ 2 pixels

但是当这个视频被缩放到160x120 (QQVGA)分辨率时,细节就丢失了:

160 pixels / 800 pixels = 0.2
2 pixels * 0.2 = 0.4 ≈ 0 pixels

这意味着在向下采样后,可见的只有输入大小至少3个像素的细节。(采用的是四舍五入的向下取整的方式)

专业的扩大滤波器

将视频调整为更大的帧大小比较少见,因为该功能几乎可以提供所有媒体播放器,但由此产生的图像有时并不清晰,特别是当源解析度非常小时。 用于平滑放大的源的特殊滤波器是super2xsai滤波器:

视频过滤器:super2xsai

视频过滤器:super2xsai

描述在不减少锐度的情况下,使用像素艺术缩放算法放大源帧的大小2倍。“2xSaI”的意思是“2倍尺度和插值”。
Syntax-vf super2xsai

例如,将128x96视频从移动电话放大到分辨率256x192像素,可以使用下一个命令:

 ffmpeg -i phone_video.3gp -vf super2xsai output.mp4

给大家看一下我的测试指令:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -vf super2xsai /Users/zhangfangtao/Desktop/newTest.mp4 

原始的视频信息如下图:

重新编码之后的视频信息:

高级缩放技能

当使用-s选项更改视频帧大小时,会在相关滤镜图片的末尾插入缩放视频滤镜。 要管理缩放过程开始的位置,可以直接使用缩放过滤器。

视频过滤器:缩放

描述通过更改输出样本宽高比来缩放源,显示宽高比保持不变。
语法scale=width:height[:interl={1|-1}]
**********变量表示宽度和高度参数。
iw or in_w输入的宽度
ih or in_h输入的高度
ow or out_w输出的宽度
oh or out_h输出的高度
a纵横比,与iw/ih相同。
sar输入样本纵横比,与dar/a相同。
dar输入显示纵横比,与*sar相同。
hsub水平色度子样本值,为yuv422p像素格式为2。
vsub垂直色度子样本值,为yuv422p像素格式为1。
**********可选的interl参数的可用值。
1应用交错感知扩展。
-1如果源被标记为交错的,应用是交错的意识扩展。

例如,下面两个命令的结果相同:

ffmpeg -i input.mpg -s 320x240 output.mp4
ffmpeg -i input.mpg -vf scale=320:240 output.mp4

scale filter的优点是,对于框架设置,可以使用上面表中描述的其他参数。

按比例缩放视频输入

如果不知道输入框的大小,可以使用scale filter的ih和iw参数相应地改变其分辨率,例如创建一个半大小的视频,我们可以使用下一个命令:

ffmpeg -i input.mpg -vf scale=iw/2:ih/2 output.mp4

我的测试指令:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -vf scale=iw/2:ih/2 /Users/zhangfangtao/Desktop/newTest.mp4 

转换之前的视频信息:

转换之后的视频信息:

90%大小的视频命令:

ffmpeg -i input.mpg -vf scale=iw*0.9:ih*0.9 output.mp4

这个就不需要测试了吧。

用黄金比例缩放输入值= 1.61803398874989484820…用PHI来表示这个数值:

ffmpeg -i input.mpg -vf scale=iw/PHI:ih/PHI output.mp4

扩展到预定义的宽度或高度。

当输出视频应该有一定的宽度或一定的高度时,输入视频的大小和纵横比都是未知的,第二个维度可以通过一个方面参数来指定,比如下面的例子。要将输出宽度设置为400像素,高度按比例设置,我们可以使用以下命令:

ffmpeg -i input.avi -vf scale=400:400/a

我的测试指令:宽度确实成为了400.高度是等比缩放的,300

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -vf scale=400:400/a /Users/zhangfangtao/Desktop/newTest.mp4 

输出文件的视频信息:

若要将输出高度更改为300像素,宽度按比例改变,命令可以是:(注意到了么,如果需要指定高度,需要用*,不是/,我试了一下,貌似用除号不行,因为那个参数a意思是纵横比,下面我有说明)

ffmpeg -i input.avi -vf scale=300*a:300

看看我的测试指令:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -vf scale=300*a:300 /Users/zhangfangtao/Desktop/newTest.mp4 

输出视频信息:

如果指令里面这样写:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -vf scale=300/a:300 /Users/zhangfangtao/Desktop/newTest.mp4

会报下面的错误:

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
平遥古城在哪 平遥古城基本现状 城垣恢宏,雉堞连云市井街巷,店肆林立四合院落,青砖瓦屋这里是平遥古城历经千年沧桑而古朴宛然,风姿依旧...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
平遥古城在哪 平遥古城基本现状 城垣恢宏,雉堞连云市井街巷,店肆林立四合院落,青砖瓦屋这里是平遥古城历经千年沧桑而古朴宛然,风姿依旧...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...