【视频】视频基本参数介绍

视频(Video)泛指将一系列静态影像以电信号的方式加以捕捉、纪录、处理、储存、传送与重现的各种技术。
连续的图像变化每秒超过24帧(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这样连续的画面叫做视频。
单纯传输视频画面,视频量非常大,对现有的网络和存储来说是不可接受的。
为了能够使视频便于传输和存储,人们发现视频有大量重复的信息,如果将重复信息在发送端去掉,在接收端恢复出来,这样就大大减少了视频数据的文件,因此有了H.264视频压缩标准。

视频文件格式
视频文件后缀都有诸如mp4、rmvb、mkv、avi等等,这些是文件的扩展名,也就是视频文件格式

视频编码方式
指视频文件格式中视频流数据的压缩编码方式,MPEG-4、MPEG-4/AVC、H.264等等

帧率
表示一秒播放的视频中有多少个帧,单位是(Frame Per Second)简称:FPS或“赫兹”(Hz)以及Gop(表示多少秒一个I帧),人眼能接受的视频连续播放的最小帧率为25帧/秒。
帧是组成视频的基本单位。视频文件本身是由很多连续的图片组成,当这些图片以一定的时间间隔显示时就是所谓的视频播放,而人眼感官视频连续最大延时间隔为40ms,当然每秒显示的帧数越多画面看起来就越流畅。
所以说要想得到非常流畅的画面感,帧率当然是越高越好,但是超过60帧每秒估计人类也可能感知不出效果了。
ffmpeg -i input.mp4 –r 29.00 output.mp4

分辨率
单位英寸中所包含的像素点数,影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。
-s 640x360   ffmpeg -i input.mp4 -s 640x360 output.mp4

清晰度
在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。
在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。

码率(比特率)
比特率,英文为 bit rate,描述每秒钟输出多少 KB 的参数,单位是 Kbps,也就是 kbit/s,8Kbit/s = 1KB/s。也就是说800Kbps意思就是每秒视频就要占用100KB磁盘空间  规范写法是800Kbps,也就是800Kbit/s 
由于保存完整的一帧一帧图片的视频原文件太大,必须要通过某种视频压缩算法将视频中的图片压缩,以减小视频文件大小,那么读者应该可以想到,压缩比越大,解压缩还原后用来播放的视频就会有越严重的失真,因为压缩的同时不可避免的丢失了视频中原来图像的数据信息。
在理解这个的前提下,我来举个例子,一个分辨率为1080P的原视频(未经压缩)被压缩成分别为4GB 和 1GB的两个视频文件。由于1GB的视频的压缩比更大,所以在观看1GB视频的明显感觉到没有4GB视频清晰(虽然他们的分辨率都是1080P)。
所谓码率,简单来说就是指在压缩视频的时候给这个视频指定一个参数,用以告诉压缩软件期望的压缩后视频的大小。码率的英文名为bps(bit per second),就是用平均每秒多少bit来衡量一个视频大小。
比如那个被压缩的1080P的视频,假设它的长度为100分钟,大小为1GB。
100M=100X60S=6000s
1GB=1024MB= 1024X1024KB=1024X1024X1024Byte=1024X1024X1024X8bit=8589934592bit
那么这个视频的码率大概就是1.4Mbit/s(8589934592/6000),这个比特率在在线视频中已经是非常高的了,一般主流视频平台的最高码率在1Mbit左右,比如直播网站斗鱼的高清选项实际播放的视频码率是900Kbit/s(0.9Mbit)。

码率控制对于在线视频比较重要。因为在线视频需要考虑其能提供的带宽。
那么,什么是码率?很简单: 
bitrate = file size / duration 
比如一个文件20.8M,时长1分钟,那么,码率就是: 
biterate = 20.8M bit/60s = 20.8*1024*1024*8 bit/60s= 2831Kbps
一般音频的码率只有固定几种,比如是128Kbps, 
那么,video的就是 
video biterate = 2831Kbps -128Kbps = 2703Kbps。

那么ffmpeg如何控制码率。 
ffmpg控制码率有3种选择,-minrate -b:v -maxrate 
-b:v主要是控制平均码率。 
比如一个视频源的码率太高了,有10Mbps,文件太大,想把文件弄小一点,但是又不破坏分辨率。 
ffmpeg -i input.mp4 -b:v 2000k output.mp4 
上面把码率从原码率转成2Mbps码率,这样其实也间接让文件变小了。目测接近一半。 
不过,ffmpeg官方wiki比较建议,设置b:v时,同时加上 -bufsize 
-bufsize 用于设置码率控制缓冲器的大小,设置的好处是,让整体的码率更趋近于希望的值,减少波动。(简单来说,比如1 2的平均值是1.5, 1.49 1.51 也是1.5, 当然是第二种比较好) 
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k output.mp4

-minrate 就简单了,在线视频有时候,希望码率波动,不要超过一个阈值,可以设置maxrate。 
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4

总结
对于视频来讲,码率应该是最重要的参数,从上面的例子我们看出,码率直接与视频压缩比相关。直观来讲,码率越大代表一个视频的画质也清晰(不考虑各种压缩算法的优劣问题)。

你可能感兴趣的:(机器学习,视频)