前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >音视频直播技术--YUV视频格式详解

音视频直播技术--YUV视频格式详解

作者头像
音视频_李超
发布2020-04-02 10:24:57
1.4K0
发布2020-04-02 10:24:57
举报

什么是YUV

YUV(也称YCbCr)是电视系统所采用的一种颜色编码方法。其中 Y 表示明亮度,也就是灰阶值,它是基础信号;U 和 V 表示的则是色度,UV 的作用是描述影像色彩及饱和度,它们用于指定像素的颜色。U和V不是基础信号,它俩都是被正交调制的.

YUV与RGB视频信号相比,最大的优点在于只需占用极少的带宽,YUV只需要占用RGB一半的带宽。

YUV采样格式

主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4 ,其中 YCbCr 4:2:0是最常用的采样格式。

YUV 4:4:4

YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。

代码语言:javascript
复制
下面的四个像素为: 
                    [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的码流为:     
                    Y0 U0 V0    Y1 U1 V1   Y2 U2 V2   Y3 U3 V3

YUV 4:2:2

每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。

代码语言:javascript
复制
下面的四个像素为:
                    [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的码流为:    
                    Y0 U0       Y1 V1      Y2 U2      Y3 V3
映射出像素点为:  
                    [Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]

YUV4:2:0

4:2:0并不意味着只有Y、Cb两个分量,而没有Cr分量。它实际指得是对每行扫描线来说,只有一种色度分量,它以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,所以可以说色度的抽样率是4:1。对非压缩的8比特量化的视频来说,每个由2x2个2行2列相邻的像素组成的宏像素需要占用6字节内存。

代码语言:javascript
复制
下面八个像素为:
                [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
                [Y5 U5 V5] [Y6 U6 V6] [Y7 U7 V7] [Y8 U8 V8]
              
存放的码流为:  
                Y0 U0      Y1         Y2 U2      Y3
                Y5 V5      Y6         Y7 V7      Y8
                 
映射出的像素点为:
                [Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]
                [Y5 U0 V5] [Y6 U0 V5] [Y7 U2 V7] [Y8 U2 V7]

图形表式法

我们用三个图来直观地表示采集的方式吧,以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。

YUV

YUV 4:4:4采样,每一个Y对应一组UV分量。 YUV 4:2:2采样,每两个Y共用一组UV分量。 YUV 4:2:0采样,每四个Y共用一组UV分量,如图中的红色部分。

存储格式

YUV存储格式分为两大类:planar(平面)格式 和 packed(打包)格式。对于planar格式,先连续存储所有像素点的Y分量,紧接着存储所有像素点的U分量,最后是所有像素点的V分量。对于packed格式,每个像素点的 Y、U、V 分量是连续交叉存储的。由于我们比较常用的是YUV 4:2:0格式,所以我们下面只介绍它的存储格式,其它如YUV 4:4:4 和 YUV 4:2:2请大家参阅其它文章。

YUV420P中的Y、U、V分量都是平面格式,如下图所示:

yuv420p

YUV420P又分为 I420 和 YV12 两种格式。I420格式和YV12格式的不同处在U平面和V平面的位置不同。在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)。

代码语言:javascript
复制
I420: YYYYYYYY UU VV    =>YUV420P
YV12: YYYYYYYY VV UU    =>YUV420P

YUV420SP中的Y分量为平面格式,UV分量为打包格式,即 U 和 V 分量交错排列。如下图所示:

yuv420sp.png

YUV420SP也分为两种格式 NV12 和 NV21,这两种格式的不同在于UV交错排列的顺序不同。

代码语言:javascript
复制
NV12: YYYYYYYY UVUV     =>YUV420SP
NV21: YYYYYYYY VUVU     =>YUV420SP

小结

本篇文章为大家介绍了什么是YUV,YUV和采样格式及其存储格式。这里并没有介绍RGB与YUV之间的转换,有兴趣的同学可以自行查阅相关信息。

YUV格式是做音视频直播的一个基本知识点,所以这也是我音视频直播系列文章中的一节,希望大家喜欢,如有不足也请指正。

后面我还会有更多精彩的文章,也希望大家关注我的头条号。

参考

  1. 百度百科 https://baike.baidu.com/item/YUV/3430784?fr=aladdin
  2. http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是YUV
  • YUV采样格式
    • YUV 4:4:4
      • YUV 4:2:2
        • YUV4:2:0
          • 图形表式法
          • 存储格式
          • 小结
          • 参考
          相关产品与服务
          对象存储
          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档