【音视频学习】四、深入解析视频技术中的YUV数据存储方式:从原理到实践
文章目录
- 引言
- 1. YUV 基础:为什么它比 RGB 更适合视频?
-
- 1.1 YUV 与 RGB 的核心区别
- 1.2 YUV色度下采样简介
- 2. YUV 的三大存储方式
-
- 方式一:平面格式(Planar)
- 方式二:半平面格式(Semi-Planar )
- 方式三:打包格式(Packed YUV)
- 三种存储方式对比:
- 3. 如何选择合适的 YUV 格式?
- 4. 总结
引言
在数字视频的世界里,YUV 是一种比 RGB 更高效的颜色表示方法,尤其在视频编码、传输和存储中占据核心地位。然而,YUV 数据的存储方式多种多样,不同的排列格式(如 I420、NV12、YUYV)直接影响着视频处理的性能、兼容性和内存效率。
本文将系统地介绍:
- YUV 的核心概念与优势
- YUV 数据的三大存储方式:平面、半平面与打包格式
- 主流格式(I420、NV12、YUYV)的内存布局与访问方法
1. YUV 基础:为什么它比 RGB 更适合视频?
1.1 YUV 与 RGB 的核心区别
-
RGB:直接存储红、绿、蓝三原色,每个像素独立保存三个分量。
- 优点:直观,适合显示渲染。
- 缺点:数据冗余,压缩效率低(如 RGB24 每像素占 3 字节)。
-
YUV:将图像分离为 亮度(Y) 和 色度(U/V),利用人眼对亮度敏感、对色度不敏感的特性,通过色度下采样大幅减少数据量。
- 优点:节省带宽(如 YUV420 比 RGB24 小 50%),更适合视频编码。
1.2 YUV色度下采样简介
格式 | 采样方式 | 色度分辨率 | 压缩率 | 典型应用 |
---|---|---|---|---|
4:4:4 | 无下采样,YUV全分辨率 | 与Y相同(100%) | 1:1 | 电影制作、专业调色 |
4:2:2 | 水平方向色度减半,垂直方向全保留 | 水平50%,垂直100% | 2:1 | 广播级视频、ProRes |
4:2:0 | 水平+垂直方向色度均减半 | 水平50%,垂直50% | 4:1 | H.264/H.265、流媒体 |
4:1:1 | 水平方向色度降为1/4,垂直全保留 | 水平25%,垂直100% | 3:1 | 部分DV摄像机 |
注:YUV420 是视频编码的主流选择,在画质和压缩率之间取得平衡。
2. YUV 的三大存储方式
YUV 数据在内存中的排列方式主要分为三类,每种方式各有优劣。以下以YUV420格式为主说明:
方式一:平面格式(Planar)
-
特点:
- 1、Y、U、V 三个分量完全分离,存储在独立的内存区域。
- 2、色度下采样:U 和 V 的分辨率通常是 Y 的 1/2 或 1/4(如 YUV420)。
- 3、适用场景:软件编码(FFmpeg/x264)、跨平台兼容。
-
代表格式:I420、YV12
格式 存储顺序 示例应用 I420(YUV420P) YYYYYYYY UU VV H.264 视频编码 YV12 YYYYYYYY VV UU 部分旧编解码器 -
存储结构:
[Y1 Y2 Y3 ...] (所有Y分量连续存储) [U1 U2 ...] (所有U分量连续存储) [V1 V2 ...] (所有V分量连续存储)
-
内存布局示例(I420,4×4 图像):
Y 分量:[Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16](16字节) U 分量:[U1 U2 U3 U4](4字节,水平/垂直各降采样2倍) V 分量:[V1 V2 V3 V4](4字节) 总大小:16 + 4 + 4 = 24 字节(对比RGB24需要 16×3=48 字节)
-
示意图如下:
-
访问方式(C 代码)
uint8_t *y_plane = frame; // Y 分量起始地址