YUV420P,Y,U,V三个分量都是平面格式,分为I420和YV12。I420格式和YV12格式的不同处在U平面和V平面的位置不同。在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)。
YUV420SP, Y分量平面格式,UV打包格式, 即NV12。 NV12与NV21类似,U 和 V 交错排列,不同在于UV顺序。
I420: YYYYYYYY UU VV    =>YUV420P
YV12: YYYYYYYY VV UU    =>YUV420P
NV12: YYYYYYYY UVUV     =>YUV420SP
NV21: YYYYYYYY VUVU     =>YUV420SP
1、 NV21 nv12
private void swapNV21ToNV12( byte [] nv21, byte [] nv12, int width, int height){
if (nv21 == null || nv12 == null ) return ;
int framesize = width*height;
int i = 0 ,j = 0 ;
System. arraycopy (nv21, 0 , nv12, 0 , framesize);
for (j = 0 ; j < framesize/ 2 ; j+= 2 )
{
nv12[framesize + j + 1 ] = nv21[j + framesize];
}
for (j = 0 ; j < framesize/ 2 ; j += 2 )
{
nv12[framesize + j] = nv21[j + framesize + 1 ];
}
}
2、YV12转I420
private void swapYV12toI420( byte [] yv12bytes, byte [] i420bytes, int width , int height)
{
System. arraycopy (yv12bytes, 0 , i420bytes, 0 , width *height);
System. arraycopy (yv12bytes, width *height+ width *height/ 4 , i420bytes, width *height, width *height/ 4 );
System. arraycopy (yv12bytes, width *height, i420bytes, width *height+ width *height/ 4 , width *height/ 4 );
}
3、yv12转nv12
void swapYV12toNV12( byte [] yv12bytes, byte [] nv12bytes, int width, int height)
{
int nLenY = width * height;
int nLenU = nLenY / 4 ;
System. arraycopy (yv12bytes, 0 , nv12bytes, 0 , width * height);
for ( int i = 0 ; i < nLenU; i++) {
nv12bytes[nLenY + 2 * i + 1 ] = yv12bytes[nLenY + i];
nv12bytes[nLenY + 2 * i] = yv12bytes[nLenY + nLenU + i];
}
}
4、nv12转I420
void swapNV12toI420(byte[] nv12bytes, byte[] i420bytes, int width,int height)
{
int nLenY = width * height;
int nLenU = nLenY / 4;
System.arraycopy(nv12bytes, 0, i420bytes, 0, width * height);
for (int i = 0; i < nLenU; i++) {
i420bytes[nLenY + i] = nv12bytes[nLenY + 2 * i + 1];
i420bytes[nLenY + nLenU + i] = nv12bytes[nLenY + 2 * i];
}

yv12、I420、nv12、nv21相互转换相关推荐

  1. yuv420格式nv12,nv21,I420,YV12互转

    YUV格式有两大类:planar和packed. 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V. 对于packed的YUV格式,每个像素点的Y ...

  2. 音视频数据处理入门:原始视频格式YUV,NV12,NV21,YV12,YU12(I420)

    我们知道,在Camera中设置Preview的回调函数onPreviewFrame时谷歌推荐我们使用NV21,YV12两种格式,因为这两种格式几乎在所有的设备里都通用.然而,视频的格式远远不止这俩种, ...

  3. I420、YV12、NV12、NV21等常见的YUV420存储格式

    今天要讲的,主流的采样格式YUV420,它的存储格式通常就有四种:I420.YV12.NV12.NV21. 1.  I420.YV12.NV12.NV21的存储格式 简单来讲,它们的存储格式分别为: ...

  4. YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)

    如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额1元起步,多少随意 锋影 email:174176320@qq.com YUV图解 (YUV444, YUV422, YUV ...

  5. yv12转nv12,nv12转I420

    yv12跟I420区别其实就是u.v顺序不一样,是平面格式,内存中u.v在连续的一块,nv12是打包格式,u.v交叉. yv12转nv12: void swapYV12toNV12(byte[] yv ...

  6. YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)-- 转

    YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)

  7. YV12 and NV12异同,

    用videoCapture和IAMStreamConfig拿到的支持的格式列表. 发现支持2中图像格式,YV12和NV12. 具体是怎么样的内存分布不知道.查了些文档.自己修改了几个图.看出了点端倪 ...

  8. 【转】YV12 and NV12

    用videoCapture和IAMStreamConfig拿到的支持的格式列表. 发现支持2中图像格式,YV12和NV12. 具体是怎么样的内存分布不知道.查了些文档.自己修改了几个图.看出了点端倪 ...

  9. 视频存储格式YUV420 NV12 NV21 i420 YV12

    1)YUV简介 YUV格式有两大类:planar和packed. 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V. 对于packed的YUV格式 ...

最新文章

  1. Android BaseAdapter和ViewHolder 优化 解决ListView的item抢焦点问题和item错乱问题
  2. 【网络安全】如何使用ppmap检测和利用XSS漏洞
  3. resnet50网络结构_Resnet50详解与实践(基于mindspore)
  4. 如何把一个软件嵌入另一个软件_新增一个软件一个游戏
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的药方中医管理系统
  6. ASP.NET技巧:使Div内内容可编辑
  7. UVA 11468 - Substring AC自动机+DP
  8. 第一次做socket的一些心得
  9. 服务器管理器添加php,为web服务器添加php的支持
  10. 塞班系统 微信 服务器忙,微信QQ遭停用,塞班系统部分机型彻底不能登陆
  11. AMD RX580刷BIOS提高ETH算力
  12. AT24C04、AT24C08、AT24C16系列EEPROM芯片单片机读写驱动程序
  13. 虚拟偶像养成记:人工智能人格化与IP化打造出完美“爱豆”
  14. 计算机怎么放映文档,如何从Apple TV上的计算机播放视频文件
  15. Carsim安装中遇到的一些坑(invalid license key)
  16. 极致的遮罩处理(一):DeepFaceLab手动遮罩编辑。
  17. 在 关闭页面/卸载(unload)文档 之前向服务器发送请求
  18. Java实战项目二(超详细)---奔跑吧小恐龙
  19. ValueError(“Incompatible indexer with Series“)
  20. c++cmath函数库

热门文章

  1. 那些打印对称图形的题
  2. Linux碎片整理工具,Linux不需要磁盘碎片整理
  3. 3.Open3D教程——点云数据操作
  4. java -ArrayList的用法实例--学生宿舍管理系统
  5. 适合零基础学习者的Java学习路线图到底长啥样?一篇文章带你学会Java
  6. arduino入门教程书籍推荐,arduino从入门到精通
  7. matplotlib画图修改刻度线的粗细、刻度字体的大小以及标题字体的大小
  8. 佳能EOS20D本站真机评测 下
  9. Css3之画哆啦A梦
  10. stm32f407zgt6的pdr_on引脚怎么接