视频基础知识

1. 什么是视频
视频(Video)泛指将一系列静态影像以电信号的方式加以捕捉、纪录、处理、储存、传送与重现的各种技术。连续的图像变化每秒超过24帧(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这样连续的画面叫做视频。视频(Video)泛指将一系列静态影像以电信号的方式加以捕捉、纪录、处理、储存、传送与重现的各种技术。连续的图像变化每秒超过24帧(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这样连续的画面叫做视频。

视频的基本组成是一张一张的图片,那么计算机用什么来表现一张图片?参考看不见我,看不见我。 ???????

2. 视频分辨率是什么
上面说到视频是有一张张图片组成,那么视频分辨率是指视频成像产品所成图像的大小或尺寸。常见的视像分辨率有352×288,176×144,640×480,1024×768。在成像的两组数字中,前者为图片长度,后者为图片的宽度,两者相乘得出的是图片的像素,长宽比一般为4:3.
480P : 640 x 480 个像素点
720P : 1280 x 720 个像素点
1080P : 1920 x 1080 个像素点
然后还需要关注每个像素点的存储格式,每个像素点占用的字节大小。

3. 视频帧率是什么
视频是连续变化图像而成视频,那么帧率也称为FPS(Frames Per Second)- - - 帧/秒。是指每秒钟刷新的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。越高的帧速率可以得到更流畅、更逼真的动画。每秒钟帧数(FPS)越多,所显示的动作就会越流畅。
关于帧率有如下几个基础数据:

帧率越高,cpu消耗就高
秀场视频直播,一般帧率20fps
普通视频直播,一般帧率15fps


4. 什么是视频编码和解码
前面说到视频是由许多许多图片组成,那么如果是高清的,每张图片都那么大,这个视频也就非常大,在传输过程中就非常的耗时,这个时候视频编码就来了,视频编码其实就是将没一张图片进行压缩,并且尽可能保证解码的图片的清晰度不变。
视频编码标准有两大系统: MPEG 和ITU-T,国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+、H.264等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。

常见编码格式有:
Xvid(MPEG4)
H264 (目前最常用编码格式)
H263
MPEG1,MPEG2
AC-1
RM,RMVB
H.265(目前用的不够多)

目前最常见的视频编码方式的大致性能排序基本是: MPEG-1/-2 < WMV/7/8 < RM/RMVB < Xvid/Divx < AVC/H.264(由低到高,可能不完全准确)。


5. 什么是码率

码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,一般我们用的单位是kb/s或者Mb/s。一般来说同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。码流越大,说明单位时间内采样率越大,数据流,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。
当然,码率越大,文件体积也越大,其计算公式是文件体积=时间X码率/8。例如,网络上常见的一部90分钟1Mbps码率的720P RMVB文件,其体积就=5400秒×1Mbps/8=675MB。
通常来说,一个视频文件包括了画面(视频)及声音(音频),例如一个RMVB的视频文件,里面包含了视频信息和音频信息,音频及视频都有各自不同的采样方式和比特率,也就是说,同一个视频文件音频和视频的比特率并不是一样的。而我们所说的一个视频文件码流率大小,一般是指视频文件中音频及视频信息码流率的总和。

6. 什么是视频格式
我们知道看视频不只有图像,还有声音,那么将音频和图像数据合起来放在一个容器中,这个容器就是视频的格式。
目前市面常见的存储封装格式有如下:
AVI (.avi)
ASF(.asf)
WMV (.wmv)
QuickTime ( .mov)
MPEG (.mpg / .mpeg)
MP4 (.mp4)
m2ts (.m2ts / .mts )
Matroska (.mkv / .mks / .mka )
RM ( .rm / .rmvb)
TS/PS

AVI : 可用MPEG-2, DIVX, XVID, WMV3, WMV4, AC-1, H.264
WMV : 可用WMV3, WMV4, AC-1
RM/RMVB : 可用RV40, RV50, RV60, RM8, RM9, RM10
MOV : 可用MPEG-2, MPEG4-ASP(XVID), H.264
MKV : 所有


7. 帧率、码率与分辨率之间关系

码率和帧率没有半毛钱关系
码率关系着带宽、文件体积
帧率关系着画面流畅度和cpu消耗
分辨率关系着图像尺寸和清晰度

8. 计算一个视频的大小
一个视频文件的大小为5.86M,播放时长为3分7秒

该文件对应的码率就是
5.86 * 1024 * 1024 * 8 / (3 * 60 + 7) = 262872.95657754bps
10M独享带宽能支撑的同时在线人数
10 * 1024 * 1024 / 262872.95657754 = 39.889078498294
支撑1000人同时在线的系统最少需要的带宽数为
262872 * 1000 / (1024 * 1024) = 250.69427490234M

10min,流量消耗41587KB
41587/10*60 = 69KB/s = 69 * 8 Kb/s = 532Kb/s
那么得到码率就是 532Kb/s

9. 一帧图像大小
一帧图像原始大小 = 宽像素 * 长像素 ,当然要考虑数据格式,因为数据格式不一样,大小写也不相同,一般数据采用rgb、yuv格式,如rgb32、yuv420、yuv422等。最常用的应当属于yuv420。 因此,计算公式为:
文件的字节数 = 图像分辨率 * 图像量化位数/8
图像分辨率 = X方向的像素数 * Y方向的像素数
图像量化数 = 二进制颜色位数
RGB24每帧的大小是
    size=width×heigth×3 Bit

RGB32每帧的大小是
    size=width×heigth×4

YUV420每帧的大小是
    size=width×heigth×1.5 Bit

举例说明,对于一个1024*768的图像实际的YUV422数据流大小就为:1024 *768 * 2 = 1572864bit


参考:
https://www.jianshu.com/p/c2ce926882c2
 

修改时间 2019-06-23

真诚赞赏,手留余香
赞赏
随机推荐
如何练线
Video.js 播放m3u8
Android实现推送方式解决方案
div设置overflow-y:scroll后, 如何监听滚动到底部的事件
语法图(Syntax diagram)、铁路图(railroad diagrams)
在Vue项目中添加Stylus
CentOS 时间命令 timedatectl
把Apache ModSecurity的攻击日志存储到MySQL
javascript 为什么判断是否相等用===,而不是==
JavaScript ES6与ES5对比(React相关)