一, 视频的基础知识
1, 数字图像表示RGB表示
红光(R)
绿光(G)
蓝光(B)
每个像素用8bit表示
- RGB的方式
对于一幅图像,一般使用整数表示方法来进行描述,比如计算一张1280×720的RGB_888图像的大小,可采用如下方式:
1280 * 720 * 3 = 2.637 MB,4分钟就达到了15G的容量。
1280 * 720 = 921600
假如是一部90分钟的电影,每秒25帧,则一部电影为2.637MB90分钟60秒*25FPS= 347.651GB
2, 数字图像表示 YUV格式
YUV格式:有两大类:planar和packed。
- planar
对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
2.planar
对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的
3, 数字图像表示 YUV
YUV存在多种格式,比如YUV420p,YUV420sp等,不同的YUV格式的数据在存储时的排列顺序是不一样的,在开发的过程中必须非常注意,否则画面会显示不正常。比如花屏,绿屏等现象。
YUV420p 的格式
4个y共用一组UV分量
YUV420sp的格式
*** 总结: ***
- YUV 4:4:4采样,每一个Y对应一组UV分量.
- YUV 4:2:2采样,每两个Y共用一组UV分量。
- YUV 4:2:0采样,每四个Y共用一组UV分量。
相较于RGB,我们可以计算一帧为1280×720的视频帧,用YUV420P的格式来表示,其数据量的大小如下:
1280 * 720 * 1 + 1280 * 720 * 0.5 = 1.318MB
如果fps(1秒的视频帧数目)是25,按照一般电影的长度90分钟来计算,那么这部电影用YUV420P的数据格式来表示的话,其数据量的大小就是:
1.318MB * 25fps * 90min * 60s = 173.76GB