YUV格式 I420,YV12
来源:互联网 发布:淘宝修改发货地址 编辑:程序博客网 时间:2024/05/21 04:43
转自
http://blog.csdn.net/leixiaohua1020/article/details/12234821
https://zh.wikipedia.org/wiki/YUV
http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html
http://www.latelee.org/my-study/yuv-learning-yuv420p-to-rgb24.html
做个记录
YV12和I420的区别
一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Byte,RGB32的size=width×heigth×4,如果是I420(即YUV标准格式4:2:0)的数据量是 size=width×heigth×1.5 Byte。
在采集到RGB24数据后,需要对这个格式的数据进行第一次压缩。即将图像的颜色空间由RGB2YUV。因为,X264在进行编码的时候需要标准的YUV(4:2:0)。但是这里需要注意的是,虽然YV12也是(4:2:0),但是YV12和I420的却是不同的,在存储空间上面有些区别。如下:
YV12 : 亮度(行×列) + V(行×列/4) + U(行×列/4)
I420 : 亮度(行×列) + U(行×列/4) + V(行×列/4)
可以看出,YV12和I420基本上是一样的,就是UV的顺序不同。
继续我们的话题,经过第一次数据压缩后RGB24->YUV(I420)。这样,数据量将减少一半,为什么呢?呵呵,这个就太基础了,我就不多写了。同样,如果是RGB24->YUV(YV12),也是减少一半。但是,虽然都是一半,如果是YV12的话效果就有很大损失。然后,经过X264编码后,数据量将大大减少。将编码后的数据打包,通过RTP实时传送。到达目的地后,将数据取出,进行解码。完成解码后,数据仍然是YUV格式的,所以,还需要一次转换,这样windows的驱动才可以处理,就是YUV2RGB24。
在采集到RGB24数据后,需要对这个格式的数据进行第一次压缩。即将图像的颜色空间由RGB2YUV。因为,X264在进行编码的时候需要标准的YUV(4:2:0)。但是这里需要注意的是,虽然YV12也是(4:2:0),但是YV12和I420的却是不同的,在存储空间上面有些区别。如下:
YV12 : 亮度(行×列) + V(行×列/4) + U(行×列/4)
I420 : 亮度(行×列) + U(行×列/4) + V(行×列/4)
可以看出,YV12和I420基本上是一样的,就是UV的顺序不同。
继续我们的话题,经过第一次数据压缩后RGB24->YUV(I420)。这样,数据量将减少一半,为什么呢?呵呵,这个就太基础了,我就不多写了。同样,如果是RGB24->YUV(YV12),也是减少一半。但是,虽然都是一半,如果是YV12的话效果就有很大损失。然后,经过X264编码后,数据量将大大减少。将编码后的数据打包,通过RTP实时传送。到达目的地后,将数据取出,进行解码。完成解码后,数据仍然是YUV格式的,所以,还需要一次转换,这样windows的驱动才可以处理,就是YUV2RGB24。
补充=============
详细的格式之间的差异可以参考:
FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
附一个YUV播放器的源代码:http://download.csdn.net/detail/leixiaohua1020/6374065
查看YUV的时候也可以下载使用成熟的YUV播放器 ——YUV Player Deluxe:http://www.yuvplayer.com/
yuv420p就是I420格式,使用极其广泛,它的示意图:
0 0
- YUV格式 I420,YV12
- YUV转为IplImage格式(I420和YV12)
- YUV转为IplImage格式(I420和YV12)
- YV12,I420,YUV420P的区别与格式转换
- 图解YV12和NV12以及I420色度采样格式
- YV12,I420,YUV420P的区别与格式转换
- 视频存储格式YUV420 NV12 NV21 i420 YV12
- YV12转为I420
- NV12与YV12,YUV的主要格式
- YV12和I420的区别
- YV12和I420的区别
- YV12,I420,YUV420P的区别
- YV12,I420,YUV420P的区别 .
- YV12,I420,YUV420P的区别
- YV12、I420、YUV420P的区别
- YV12和I420的区别
- YV12和I420的区别
- YV12,I420,YUV420P的区别
- Linux-Vim编辑器之高级功能入门
- hdu 5893 List wants to travel 2016ACM/ICPC沈阳赛区网络赛1002
- Android Intent Flag组合使用
- 仿知乎日报第七篇:为菜单区加载布局以及加载数据
- Gradle 实现 Android 多渠道定制化打包
- YUV格式 I420,YV12
- Objective_C-按钮(UIButton)详解
- Caffe框架源码剖析(7)—全连接层InnerProductLayer
- java 判断是否是闰年的方法
- 题
- 如何获取ios设备型号
- SolrCloud Hello Word
- 数据结构 学习笔记(一):基本概念:什么是数据结构和算法,应用实例
- const用法详解