当前位置: 首页 > news >正文

【音视频学习】四、深入解析视频技术中的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 分量起始地址
    
http://www.xdnf.cn/news/1174267.html

相关文章:

  • Kubernetes 服务发布进阶
  • Web后端实战:登录认证(JWT令牌生成和Filter过滤器Interceptor拦截器)
  • 使用 MobaXterm 登录你的阿里云 ECS 实例
  • springboot 3.0 和 2.0 校验用的包不一样
  • 压测软件JMeter安装配置以及创建桌面快捷方式(详细图解)
  • 18.设备虚拟化
  • Java按模板导出Excel
  • YOLOv5模型剪枝实战教程
  • Java项目中定时任务三方工具和技术的深度应用指南
  • Android埋点实现方案深度分析
  • Docker 应用数据备份、迁移方案
  • 设计模式代码总结
  • 【2025】使用vue构建一个漂亮的天气卡片
  • ChatGPT桌面版深度解析
  • vue3笔记(2)自用
  • RCE随笔-奇技淫巧(2)
  • Android toybox常用工具介绍
  • ES6 标签模板:前端框架的灵活利器
  • mongodb的备份和还原(精简)
  • 微算法科技(NASDAQ: MLGO)研究量子机器学习算法 (Quantum Machine Learning Algorithms),加速机器学习任务
  • opencv学习(视频读取)
  • HF86611_VB1/HF86611Q_VB1:多通道USB HiFi音频解码器固件技术解析
  • 架构师--基于常见组件的微服务场景实战
  • 华为云ELB(弹性负载均衡)持续报异常
  • 博图 V18 --> 修改面板实例
  • 51c大模型~合集158
  • day21-定时表白
  • 网络--VLAN技术
  • platform平台驱动、gpio单总线通信
  • Java 爬虫实战指南:获取淘宝商品详情