《FFmpeg Basics》中文版-04-调整和伸缩视频

写在前面

如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑
也可以关注我的简书账户: 张芳涛,我后期会发布更多的音视频以及图像处理方面的文章。

正文

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

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

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



FFmpeg中视频大小的缩写

大小 缩写 典型用法
128x96 sqcif 手机
160x120 qqvga 手机
176x144 qcif 手机
320x200 cga 旧的CRT显示器
320x240 qvga 手机、摄像头
352x288 cif 手机
640x350 ega 旧的CRT显示器
640x480 vga 显示器,摄像头
704x576 4cif 官方数字视频大小的电视。
800x600 svga 显示器
852x480 hd480, wvga 摄像机
1024x768 xga 显示器,摄像头
1280x720 hd720 高清电视,摄像机
1280 x1024 sxga 显示器
1366x768 wxga 显示器
1408x1152 16cif 设备使用CIF
1600x1024 wsxga 显示器
1600x1200 uxga 显示器,摄像机
1920x1080 hd1080 高清电视,摄像机
1920x1200 wuxga 宽屏显示器
2048x1536 qxga 显示器
2560x1600 woxga 显示器
2560x2048 qsxga 显示器
3200x2048 wqsxga 显示器
3840x2400 wquxga 显示器
5120x4096 hsxga 显示,显微镜相机
6400x4096 whsxga 显示器
7680x4800 whuxga 显示器

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

视频通常被调整为比来源更小的分辨率,这被称为下采样,主要用于便携式设备,通过互联网流媒体等。重要的是要考虑,在较小的尺寸中,一些细节将会丢失,这一事实解释了奈奎斯特 -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

会报下面的错误:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容