视频的几种格式,RGBA,NV12,NV21,I420的区别

701 阅读2分钟

这几种视频格式在图像处理和视频编码中起着不同的作用,下面是它们的详细介绍和区别,并附带示例数据以帮助理解:

  1. RGBA

    • 颜色空间:RGBA是一种颜色空间,其中每个像素由四个分量组成,分别是红色(R)、绿色(G)、蓝色(B)和透明度(A)。

    • 排列方式:每个像素通常用32位表示,8位用于每个通道(R、G、B、A),通常排列顺序是从左到右,从上到下。

    • 示例数据:假设我们有一个2x2的图像,像素数据如下:

      css
      复制代码
      R G B A   R G B A
      255 0 0 255 0 255 0 255
      0 255 0 255 255 255 255 255
      
  2. NV12NV21

    • 颜色空间:NV12和NV21都是YUV颜色空间的一种表示,其中Y代表亮度,UV代表色度。

    • 排列方式:在NV12中,所有偶数行和奇数行共享一组UV值,UV值交错排列;而在NV21中,偶数行和奇数行的UV值顺序交替排列。

    • 示例数据:假设我们有一个2x2的图像,Y分量和UV分量数据如下:

      复制代码
      Y   Y     U V
      255 0   128 128
      0 255   128 128
      
  3. I420

    • 颜色空间:I420也是YUV颜色空间的一种表示,与NV12和NV21类似。

    • 排列方式:I420包含一个完整的亮度(Y)图像和两个色度(UV)分量,其中Y分量是完整的,而UV分量是亮度图像的1/4大小。

    • 示例数据:假设我们有一个2x2的图像,Y分量和UV分量数据如下:

      复制代码
      Y   Y     U   V
      255 0   128 128
      0 255   128 128
      

区别

  • RGBA是一种RGB颜色空间的表示,主要用于图形处理和渲染,每个像素都包含RGB三个通道和一个透明度通道。
  • NV12、NV21和I420是YUV颜色空间的表示,主要用于视频处理和编码,其中Y代表亮度,UV代表色度。它们的主要区别在于UV分量的排列方式和存储格式。
  • 在移动设备和视频编码中,通常使用NV12或者NV21格式,而在计算机图形处理中常使用RGBA格式。