音视频图像篇 YUV-RGB

音视频图像篇 YUV-RGB

      • 1.基础概念
      • 2.RGB、YUV深入讲解
        • 2.0 RGB:红、绿、蓝三基色
        • 2.1 YUV:Y表示明亮度(luminance或luma),也就是灰阶值,U和V表示的则是色度(chrominance或chroma)
          • 2.1.1 YUV采样表示法
          • 2.1.2 YUV数据存储
        • 2.3 RGB和YUV的转换
        • 2.4 RGB和YUV转换(为什么解码出错显示绿屏?)
        • 2.5 YUV Stride对齐问题

1.基础概念

位深:是指在记录数字图像的颜色时,计算机实际上是用每个像素需要的位深表示,比如红色分量用8bit。
我们看到的彩色图片,都有3哥通道,分别为red,green,blue,透明度alpha。通常每个通道用8bit表示,8bit能表示256种颜色,所以可以组成256x256x256=16777216种颜色。这里的8bit就是位深。
每个通道的位深越大,能够表示的颜色值就越大,
帧率:在1秒钟时间里传输的图片的帧数,也可以理解为图片处理器每秒钟刷新几次。比如25fps表示一秒钟内有25张图片。
码率:视频文件在单位时间内使用的数据流量。比如1Mbps。
stride:指内存中每行像素所占的空间。为了时间内存对齐每行像素中所占的空间并不一定是图像的宽带。

2.RGB、YUV深入讲解

2.0 RGB:红、绿、蓝三基色

音视频图像篇 YUV-RGB_第1张图片

2.1 YUV:Y表示明亮度(luminance或luma),也就是灰阶值,U和V表示的则是色度(chrominance或chroma)

音视频图像篇 YUV-RGB_第2张图片
YUV是一种笼统的说法,针对其他的具体排列方式,可以氛围很多种具体的格式:
打包格式(packed):将每个像素的Y、U、V分量交叉并以像素点为单位连续的存放在同一数组中,通常几个相邻的像素组成一个宏像素(macro-pixel);
音视频图像篇 YUV-RGB_第3张图片

平面(planar):使用三个数组分开连续的存放Y、U、V三个分量,即Y、U、V存放在各自的数组中。
音视频图像篇 YUV-RGB_第4张图片

2.1.1 YUV采样表示法

YUV采用A:B:C表示法来描述Y,U,V采样频率比例,下图中黑点表示采样像素点分量,空心圆表示采样像素点的UV分量。主要分为YUV 4:4:4,YUV 4:4:2,YUV 4:2:0,这几种常用的类型。
音视频图像篇 YUV-RGB_第5张图片
(实心代表Y分量,空心代表UV分量)

2.1.2 YUV数据存储

下面以每个分量数据存储在一个char或byte中为例描述YUV的数据的存储方式。

  1. 4:4:4格式
    音视频图像篇 YUV-RGB_第6张图片

  2. 4:2:2格式
    音视频图像篇 YUV-RGB_第7张图片

  3. 4:2:0格式
    音视频图像篇 YUV-RGB_第8张图片
    4:2:0格式 NV12
    音视频图像篇 YUV-RGB_第9张图片
    4:2:0格式 其他参考
    音视频图像篇 YUV-RGB_第10张图片

2.3 RGB和YUV的转换

通常情况下RGB和YUV直接的相互转换都是通过接口调用实现,比如ffmpeg的swscale或者libyuv等库。
音视频图像篇 YUV-RGB_第11张图片

2.4 RGB和YUV转换(为什么解码出错显示绿屏?)

音视频图像篇 YUV-RGB_第12张图片

2.5 YUV Stride对齐问题

比如分辨率638x480的YUV420P图像,我们在内存处理的时候如果以16字节对齐,则638不能被16整除,我们需要在每行尾部补充2个字节。就是640。此时该图片的Y stride为640字节音视频图像篇 YUV-RGB_第13张图片

你可能感兴趣的:(音视频)