YUV420P,Y,U,V三个分量都是平面格式,分为I420和YV12。在I420格式(即: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

private void YV12toNV21(final byte[] input, final byte[] output, final int width, final int height) {
        long startMs = System.currentTimeMillis();
        final int frameSize = width * height;
        final int qFrameSize = frameSize / 4;
        final int tempFrameSize = frameSize * 5 / 4;
        
        System.arraycopy(input, 0, output, 0, frameSize); // Y
 
        for (int i = 0; i < qFrameSize; i++) {
            output[frameSize + i * 2] = input[frameSize + i]; // Cb (U)
            output[frameSize + i * 2 + 1] = input[tempFrameSize + i]; // Cr (V)
        }
    }

//I420 To NV21
    private void I420ToNV21(final byte[] input, final byte[] output, final int width, final int height) {
        //long startMs = System.currentTimeMillis();
        final int frameSize = width * height;
        final int qFrameSize = frameSize / 4;
        final int tempFrameSize = frameSize * 5 / 4;
        
        System.arraycopy(input, 0, output, 0, frameSize); // Y
 
        for (int i = 0; i < qFrameSize; i++) {
            output[frameSize + i * 2] = input[tempFrameSize + i]; // Cb (U)
            output[frameSize + i * 2 + 1] = input[frameSize + i]; // Cr (V)
        }
    }

I420ToNV21 YV12toNV21相关推荐

  1. YV12toI420 yuv420、NV12、YV12相互转换

    在录像时设置了YV12要保存图片时 YUV420P.I420.NV12.YV12格式转NV12保存图片 GLSurfaceView implements SurfaceHolder.Callback, ...

  2. libYUV编译成静态库以及使用

    简介 Google提供了一套Image的开源库libyuv(git clone https://chromium.googlesource.com/libyuv/libyuv),实现对各种yuv数据之 ...

  3. yuv视频数据存储成jpg图片并裁剪小图

    /**** @param data NV21视频数据* @param width NV21宽* @param height NV21高* @param left 裁剪图片顶点坐标* @param to ...

  4. 虹软java接摄像头_虹软人脸识别SDK在网络摄像头中的实际应用

    目前在人脸识别领域中,网络摄像头的使用很普遍,但接入网络摄像头和人脸识别SDK有一定门槛,在此篇中介绍过虹软人脸识别SDK的接入流程,本文着重介绍网络摄像头获取视频流并处理的流程(红色框内),以下内容 ...

  5. Android录制视频-nv21转nv12姿势(libyuv使用)

    Android录制视频-nv21转nv12姿势(libyuv使用) 前言 为什么需要转化? libyuv简介 实际使用 1.集成 2.修改代码 3.添加方法 4.项目中使用 总结 前言 近期接触项目当 ...

最新文章

  1. 和12岁小同志搞创客开发:如何选择合适的控制器?
  2. websocket 群/单聊 基础
  3. 我是如何阅读编程书的
  4. linux服务器调用端口超时,Linux服务器可以ping,但是telnet端口超时,网站wget超时,访问超时的解决办法...
  5. SAP Spartacus BrowserPlatformLocation的初始化逻辑
  6. php 链接文件名_7、php-fpm进程管理
  7. mysql中nchar_浅谈SQL Server、MySQL中char,varchar,nchar,nvarchar区别
  8. html中websocket获取数据,如何使用websocket从数据库中获取数据来刷新视图
  9. 卡巴斯基将支持微软企业安全解决方案Forefront
  10. Redis—字符串和SDS
  11. 由SELECT ... FROM ... FOR UPDATE想到的
  12. Oracle grant connect, resource to user语句中的权限
  13. 阿里图标库iconfont下载和在旧有的iconfont中添加新的图标
  14. 可用性和可靠性的区别
  15. 域名可以用多久_一个域名能用多少年
  16. python进行回归分析与检验_R/python-回归分析
  17. 水电设计院信息管理系统1.0
  18. Matplotlib保存图片到文件
  19. URP shader 学习笔记
  20. C++源代码单词扫描程序(词法分析)

热门文章

  1. 市场调研报告-全球与中国过程文档软件市场现状及未来发展趋势
  2. DOM系列之自定义属性操作
  3. Terminal和Vim在Mac os和Linux系统下Solarized的配色配置
  4. java线程同步的实现方式
  5. 自定义带阴影的shape
  6. 计算机如何清理磁盘,电脑怎么清理磁盘空间(完美清理磁盘空间实操教程)
  7. 计算机表格模拟考试,计算机职称考试电子表格模拟题
  8. oracle输出单引号,oracle – 在PLSQL中转义单引号
  9. JS实现表格搜索内容
  10. Android开发-UI界面--类微信页面设计