本文主要用于个人记忆,不一定正确,如有错误,欢迎指正
我们所见到的图片实际上是由一个个像素点所组成的,每一个像素点实际上是由RGB三种颜色按比例组合得出一个特定的颜色,多个像素点组成一张图片。
目录
图片
标识图片原始数据的两个量:
- 分辨率:
分辨率的格式一般是 a * b ,其中a是指每行有多少个像素点,b是指每列有多少个像素点,分辨率所表示的值a*b就是图片一共有多少个像素点
- 像素格式:
像素格式有一个重要指标就是位深度,就是用多少个位来存放一个像素点
像素格式大体分为两种RGB和YUV
RGB格式使用每个每个颜色占多少位来表示一个像素点的,比如常见的RGB888就是红色占8位绿色占8位蓝色占8位
YUV格式是基于人眼对亮度更敏感而对色度不太敏感的基础上采用的另一种存储格式,YUV数据由Y、U、V三个分量组成,现在通常说的YUV指的是YCbCr。
Y:表示亮度(Luminance、Luma),占8bit(1字节)
Cb、Cr:表示色度(Chrominance、Chroma)
Cb(U):蓝色色度分量,占8bit(1字节)
Cr(V):红色色度分量,占8bit(1字节)
YUV分为YUV444、YUV422和YUV420,用的比较多的是YUV420
YUV444可以理解为每个像素点都有自己的Y分量、U分量、V分量
YUV422可以理解为每个像素点都有自己的Y分量,但同一行相邻两点共用U和V分量
YUV420可以理解为每个像素点都有自己的Y分量,但在一个2*2的像素矩阵中共用U和V分量
YUV444平均一个像素占3个字节,YUV422平均一个像素占2个字节,YUV422平均一个像素占1.5个字节
YUV的存储格式可以分为3大类:
Planar(平面)
Y、U、V分量分开单独存储
名称通常以字母p结尾
Semi-Planar(半平面)
Y分量单独存储,U、V分量交错存储
名称通常以字母sp结尾
Packed(紧凑)
或者叫Interleaved (交错)
Y、U、V分量交错存储
视频
所谓视频起始就是连续播放的图片,所以视频在图片的基础上多了一个量:帧率
帧率就是指每秒播放多少张图片,单位是pts
结合图片相关知识我们可以得到标识一段视频的分辨率、图片格式、帧率
当我们有了视频的原始数据和视频的分辨率、图片格式、帧率就可以顺利播放一段视频了
可是原始视频的数据是非常庞大的,假设有一段10秒钟的视频,视频的分辨率为1920*1080,视频格式为YUV420,帧率为30fps,那么这段仅10秒钟的视频就需要(10*30)*1920*1080*1.5=933,120,000Bytes 约等于 889Mbytes。在有限的存储空间和带宽能力下很难做到视频原始数据的存储和传输,这时就需要用到视频的编解码了。
常用的视频编码有H.264