我们已经知道,YUV是表示原生视频帧的一种主流方式
具体如何存储所有像素的YUV数据,有多种实现方案,就形成了不同的YUV存储格式
YUV格式分类
按照YUV分量的存储顺序来分,可分为
- Packed,打包模式,类似于YUV-YUV
- Planar,平面模式,类似于YY-UU-VV,YUV分量分别形成自己的一个平面区域
- SemiPlanar,半平面模式,类似于YY-UV-UV,先连续存储Y分量,再交叉存储UV分量
- Interleaved,交错模式,类似于Y-U-V-Y,两个Y共享一组UV
- Planar一般简写成P,SemiPlanar简写为SP,Interleaved简写为I
按照YUV分量的采样方式,可分为
- YUV444,水平方向上连续4个像素,采集4个Y分量,4个U分量,4个V分量
- YUV422,水平方向上连续4个像素,采集4个Y分量,2个U分量,2个V分量
- YUV411,水平方向上连续4个像素,采集4个Y分量,1个U分量,1个V分量
- YUV420,水平方向上连续4个像素,采集4个Y分量,2个U分量,0个V分量(奇数行,偶数行正好相反,为402)
- YUV411在实际应用中比较少见,下面不再详细讲述
YUV采样方式
图中黑点表示灰度分量Y,圆圈表示彩色分量UV
不管是哪一种采样方式,Y分量都是每一个点都会采集的
但是彩色分量UV可能是相邻几个点共享的,这样就有效缩减了采样数据的大小,而且肉眼也不易察觉 YUV常见格式
YUV像素存储图示
以下会用图片来展现各种格式的数据存储方式
黑色P开头的方格表示实际的图片像素,黑色的方格列数表示图片宽度
实际的图片宽度是可变的,所以大家不用去纠结每张图片有多少列,为了能够完整地体现像素采集方式,至少会有两行四列
彩色方格表示像素在内存中的存放顺序,内存空间没有行列之分,所以彩色方格的换行是没实际意义的,仅为了方便显示
彩色相同的区域,表示这几个点共用同样的UV数据
YUV444-Packed YUV444P
YUYV422-Packed
UYVY422-Packed YUV422P
YUV422SP
YUV420-Packed
YUV420P(I420,YU12,YV12)
YU12先U后V,YV12先V后U,YU12又叫I420 YUV420SP(NV12,NV21)
NV12先U后V,NV21先V后U
资料下载
YUV帧数据播放器.exe
YUV存储结构图解.excel