YUV的数据格式
一、YUV格式分为两大类:planar(平面)和packed(打包)。planar格式,先连续存储所有像素点的Y分量,紧接着存储所有像素点的U,随后存储所有像素点的V。packed格式,每个像素点的Y、U、V分量是连续存储的。
二、YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。用三个图来直观地表示采集的方式,以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。如下:

1、YUV 4:4:4采样,每一个Y对应一组UV分量。
2、YUV 4:2:2采样,每两个Y共用一组UV分量。
3、YUV 4:2:0采样,每四个Y共用一组UV分量。
三、YUV各种存储格式
1、YUV420
(1)IYUV(I420)
IYUV(I420)是planar模式的YUV。

假设YUVI420视频的长为L,宽为W,则一帧YUV数据长度为L*W*3/2字节,一帧YUV数据中内存起始指针为P,Y数据的起始指针为P,U数据的起始指针为P+L*W,V数据的起始指针为P+L*W*5/4。
(2)YV12
YV12类似于IYUV(I420),只是U和V的顺序相反。
(3)NV12
NV12是two-planar模式的YUV。

(4)NV21
NV21类型与NV12,只是U和V的顺序相反。
2、YUV444
假设YUVI420视频的长为L,宽为W,则一帧YUV数据长度为L*W*3字节,一帧YUV数据中内存起始指针为P,Y数据的起始指针为P,U数据的起始指针为P+L*W,V数据的起始指针为P+L*W*2。
参考:
http://www.fourcc.org/fourcc.php
http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html
YUV的数据格式的更多相关文章
- 关于视频YUV
这里有一篇摘自MSDN的文章.介绍了YUV视频数据格式. About YUV Video Digital video is often encoded in a YUV format. This ar ...
- 快速掌握MIPI开发攻略,对接百度人工智能计算卡EdgeBoard
MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写,是MIPI联盟发起的为移动应⽤处理器制定的开放标准.MIPI采⽤高速串行接口传输数据,满⾜ ...
- 音视频开发-FFmpeg
音视频开发是个非常复杂的,庞大的开发话题,初涉其中,先看一下结合 OEIP(开源项目) 新增例子. 可以打开flv,mp4类型文件,以及rtmp协议音视频数据,声音的播放使用SDL. 把采集的麦/声卡 ...
- 详解YUV与RGB数据格式-2016.01.20
参考文献 什么是I帧,P帧,B帧 图文详解YUV420数据格式 RGB565 与 RGB888的相互转换 最简单的基于FFmpeg的libswscale的示例(YUV转RGB)
- YUV数据格式
概要: 与RGB编码方法类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它是指将亮度参量(Y:Luminance或Luma)和色度参量(UV:Chrominance或Chroma) ...
- 详解YUV数据格式
我们在讲 FFmpeg 系列的时候,有提到 YUV 的.其中包括YUV播放器.简单的YUV格式介绍. 一.YUV简介 YUV,是一种颜色编码方法.常使用在各个影像处理元件中. YUV在对照片或影片编码 ...
- YUV格式介绍
原文链接:http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html YUV格式有两大类:planar和packed.对于plana ...
- 【Android】直播必备之YUV使用总结 —— Android常用的几种格式:NV21/NV12/YV12/YUV420P的区别
说明 因工作方面接触到图像处理这一块,需要对手机摄像头采集的原始帧做Rotate或者Scale,但无奈对此的了解少之又少,于是网上搜了一顿,完事后将最近所学总结一下,以方便之后的人别踩太多坑. 首先想 ...
- 关于yuv格式
首先,内存分布 1:YUV420 (1):I420: YYYYYYYY UU VV =>YUV420P (2): ...
随机推荐
- js学习总结:DOM节点二(dom基本操作)
一.DOM继承树 DOM——Document Object Model DOM定义了表示修改文档所需要的方法.DOM对象即为宿主对象,由浏览器厂商定义,用来操作html和xml的一类厂商定义,也有人称 ...
- 使用idea创建springboot项目并打成war包发布到tomcat8上
1.将pom.xml中的打包方式修改为war <groupId>com.borya</groupId> <artifactId>Project</artifa ...
- for each循环(增强for循环)
底层实现是使用了迭代器,简化了迭代器的书写 格式: for(集合/数组的数据类型 变量名: 数组名/集合名) { // body } char[] chars = {'c', 'd', 'd', 'e ...
- HanLP中人名识别分析
HanLP中人名识别分析 在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: 名字识别的问题 #387 机构名识别错误 关 ...
- udp_server函数
#include <netdb.h> #include <stdlib.h> #include <string.h> #include <unistd.h&g ...
- REST POST PUT差别
rest api http://www.cnblogs.com/zhangpengshou/archive/2012/07/09/2583096.html Rest模式get,put,post,del ...
- lua 的语法糖
tb = {} function tb:fun1() self ---tb end function tb.fun2() self ---->无 end tb:fun1() tb.fun2() ...
- jQuery.extend 函数使用
JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解. 一.Jquery的扩展方 ...
- python 之 configparser 模块
[root@linag python]# vim config.py import configparser config = configparser.ConfigParser() config[' ...
- 【Vue】定义组件 data 必须是一个函数返回的对象
Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter/setter,从而让 data 的属性能够响应数据变化.对象必须是纯粹的对象 (含有零个或多个的 key/value ...