YV12和I420的区别

一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的size=width×heigth×4,如果是I420(即YUV标准格式4:2:0)的数据量是 size=width×heigth×1.5 Bit。
在采集到RGB24数据后,需要对这个格式的数据进行第一次压缩。即将图像的颜色空间由RGB2YUV。因为,X264在进行编码的时候需要标准的YUV(4:2:0)。但是这里需要注意的是,虽然YV12也是(4:2:0),但是YV12和I420的却是不同的,在存储空间上面有些区别。如下:
YV12 : 亮度(行×列) + U(行×列/4) + V(行×列/4)
I420 : 亮度(行×列) + V(行×列/4) + U(行×列/4)
可以看出,YV12和I420基本上是一样的,就是UV的顺序不同。
继续我们的话题,经过第一次数据压缩后RGB24->YUV(I420)。这样,数据量将减少一半,为什么呢?呵呵,这个就太基础了,我就不多写了。同样,如果是RGB24->YUV(YV12),也是减少一半。但是,虽然都是一半,如果是YV12的话效果就有很大损失。然后,经过X264编码后,数据量将大大减少。将编码后的数据打包,通过RTP实时传送。到达目的地后,将数据取出,进行解码。完成解码后,数据仍然是YUV格式的,所以,还需要一次转换,这样windows的驱动才可以处理,就是YUV2RGB24。
YUY2 是 4:2:2 [Y0 U0 Y1 V0]

时间: 2025-01-30 03:18:40

YV12和I420的区别的相关文章

YUV RGB 常见视频格式解析

I420是YUV格式的一种,而YUV有packed format和planar format两种,而I420属于planar format的一种. 同时I420表示了YUV的采样比例4:2:0.4:2:0的YUV并不是说没有V分量,而是指对于每一个行,只有一个U或者V分量.比如第一行里,是YUYYUY,到了第二行是YVYYVY,那么对于每一行来说就是4:2:0或者4:0:2.需要说明的是,这里的排列方式是针对packedformat而言的,因此并不适用于I420这样的planar format.

mfc-LBN_SELCHANGE和LBN_DBLCLK有什么区别?

问题描述 LBN_SELCHANGE和LBN_DBLCLK有什么区别? LBN_SELCHANGE和LBN_DBLCLK有什么区别呢,我是新手,请说的详细些. 解决方案 一个在选择更改的时候触发,一个在双击的时候触发 解决方案二: msdn文档中都有,详细地自己看,或者google下

固态硬盘做系统盘和做缓存盘有什么区别

  固态硬盘做系统盘和做缓存盘有什么区别          用固态硬盘直接做缓存盘不同于直接用固态硬盘做系统盘直接在固态硬盘上读取数据,固态硬盘做缓存盘的时候是根据用户经常访问的数据,将这一部分数据保存到固态硬盘上方便下次读取的时候快速读取而已,其作用类似硬盘的内存,只不过这块内存的数据并不会伴随关机而自动清空.         推荐阅读:让SSD速度飞起来 固态硬盘优化技巧大全  因此综上所述,最立竿见影的方法就是直接将固态硬盘做系统盘,并用剩余的容量安装游戏或者其他常用软件,这样收益是最明显

[数据结构] 数组与链表的优缺点和区别

概述 数组 是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中.同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素.如果应用需要快速访问数据,很少插入和删除元素,就应该用数组. 链表 中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起,每个结点包括两个部分:一个是存储 数据元素 的 数据域,另一个是存储下一个结点地址的

关于支付系统中的同步通知和异步通知电商的区别,为什么需要通知

问题描述 关于支付系统中的同步通知和异步通知电商的区别,为什么需要通知 在电商对应的支付系统中当支付完成之后需要做相关的同步通知和异步通知操作,请大神解释一下什么是同步通知和异步通知,为什么需要同步通知和异步通知. 解决方案 同步用于即时通知支付完成 异步用于防止信息漏发漏收 解决方案二: 可以这样理解, 1.用户(买家)支付完成后,电商平台需要实时的给用户一个通知,如支付已经处理等待订单确认. 2.电商平台,这块就需要考虑系统技术方面的各个环节,考虑应对复杂多变的并发用户量.业务.流量.网络环

nil、Nil、NULL和NSNull区别

前言 记得曾经有不少朋友问过笔者,在Objective-C中nil和Nil以及NULL的区别.最重要的是,在面试中还有不少朋友常会被问到.记得当年刚找工作的时候,笔者就被面试官问到过,现在笔者在这里统一详细说明. NULL 对于学习过C/C++语言的朋友,对NULL一定很熟悉吧?这就是在C/C++中的空指针. 在C语言中,NULL是无类型的,只是一个宏,它代表空.我们不研究C++中的NULL,因为在C++11以后又有了新的定义,我们不深究. 这就是C语言中所谓的NULL(C++的定义比较复杂,这

xcode-Xcode和ObjectiveC有什么区别

问题描述 Xcode和ObjectiveC有什么区别 现在开发一个iosApp,用Xcode(Swift)好还是ObjectiveC好? 有什么优缺点? 解决方案 projectiveC还是Objective-C Objective-C是语言,XCode是苹果官方的编写工具,XCode里用的是Objective-C或swift 解决方案二: Xcode是编译器 Objective-C和Swift是语言

MathType正式版与精简版有什么区别

MathType正式版与精简版有什么区别   MathType 6.9启动界面示例 MathType正式版的功能与特点: 1.Office办公软件兼容使用,MathType 6.9版本在Windows 系统中完全兼容Office 2013和Office 365.Office 2010.2007.2003和XP等. 2.MathType在Word 2013.2010.2007.Word 2003和XP 2002中的菜单和工具栏. 插入公式:不管是否有公式编号,Word功能区的MathType选项卡

MathType几种省略号的区别

  MathType几种省略号的区别            1.水平省略号 水平省略号是使用最多的一个省略号,在分析多个公式与变量时使用,这个模板直接在MathType的"空格和椭圆"--"水平省略号"就可以编辑出来了.一般的公式中使用的都是这个省略号. 用MathType编辑水平省略号 2.数轴省略号 顾名思义,这个省略号在画数轴时使用,因为对数轴的刻度进行标示是时,如果范围比较大,是不可能把所有的刻度都标示出来的,只需要标示出开关几个与最后结尾几个就可以了,中间