在录像时设置了YV12要保存图片时

YUV420P、I420、NV12、YV12格式转NV12保存图片
GLSurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback {

Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewFormat(ImageFormat.YV12);
在使用camera设置为YV12或者NV12时要转换时所用的工具

FileClientSender fileSender;UDPClientSender udpSender;private ExecutorService executorService;//如果是其他页面进来的则只显示public static boolean isAll = true;boolean isOpen = false;//false 为已打开如果是显示的则不用在设置Visibility@Overridepublic void onPreviewFrame(final byte[] data, final Camera camera) {//        executorService.execute(new Runnable() {//            @Override
//            public void run() {//                YuvUtils.scaleAndRotateYV12ToI420(data, h264,
//                       PREVIEW_WIDTH,
//                       PREVIEW_HEIGHT, 0, 504, 896);//        // 获取到一帧预览数据
//        // 将yv12的帧转化为h254的帧final int ret = avcCodec.offerEncoder(data, h264);// 发送h264数据new Thread(new Runnable() {@Overridepublic void run() {if (MainActivity.client != null) {udpSender.send(h264, ret);}}}).start();if (isAll) {if (isOpen) {customSurfaceView.setVisibility(VISIBLE);isOpen = false;}new Thread(new Runnable() {@Overridepublic void run() {fileSender.send(h264, ret);}}).start();//            }
//        });new Thread(new Runnable() {@Overridepublic void run() {long l = System.currentTimeMillis();if (keybs) {uploodTask(data, l);} else {if (uploadInt == 20) {uploodTask(data, l);uploadInt = 0;} else {uploadInt++;}}}}).start();}camera.addCallbackBuffer(data);}int uploadInt = 0;public boolean keybs = false;@SuppressLint("NewApi")private void uploodTask(final byte[] data, final long l) {new AsyncTask<String, Void, Boolean>() {@Overrideprotected Boolean doInBackground(String... params) {  /*传递多个String参数*/// ?如果你输出格式是nv21 或者 yuy2 转图片  /**照相后的保存路径*/File file = new File(SavaFileNameUtil.getImageRoot() +SavaFileNameUtil.getCaptureImageName(Config.USER_NUMBER));// ?如果你输出格式是nv21 或者 yuy2 转图片try {byte[] NV21 = new byte[MAX_SEND_SIZE];Yuv.YV12toNV21(data, NV21, PREVIEW_WIDTH, PREVIEW_HEIGHT);Bitmap bmp = Yuv.NV21ToBitmap(NV21, PREVIEW_WIDTH, PREVIEW_HEIGHT);//得到long类型当前时间//new日期对象Date date = new Date(l);//转换提日期输出格式SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");bmp = createWaterMark(bmp, null, dateFormat.format(date));FileOutputStream outStream = new FileOutputStream(file);bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream);outStream.close();LogUtils.e(TAG + "======================Ftp4jUtil", "图片写入完成----------------------------------");if (keybs) {//点击拍照上传upload(file, ftpPath, null, false);keybs = false;} else {//自动上传upload(file, ftpPath + "_auto", null, false);}} catch (Exception e) {e.printStackTrace();LogUtils.e(TAG, "Ftp4jUtil图片写入出现异常", e);}return true;}//            @Override
//            protected void onPostExecute(Boolean isSuccess) {//                if (isSuccess) {//                    //耗时操作成功后的操作
//                } else {//                    //打印错误
//                }
//            }}.execute(""); /*传递参数*/}

如果要保存图片,或着保存视频时使用的一个工具类
YUV420P、I420、NV12、YV12格式转NV12保存图片
// 将yv12的帧转化为h254的帧
?如果你输出格式是nv21 或者 yuy2 转图片

YUV420P、YV12、NV12、YV12格式转NV12保存图片

YV12toI420 yuv420、NV12、YV12相互转换相关推荐

  1. 【Android】直播必备之YUV使用总结 —— 常用的几种格式:NV21/NV12/YV12/YUV420P的区别

    转载自 gitzzp 的博客 [Android]直播必备之YUV使用总结 -- 常用的几种格式:NV21/NV12/YV12/YUV420P的区别 转自:http://www.cnblogs.com/ ...

  2. 视频教程:YUV420和RGB相互转换--C++实现(二)

    我是Gem,今天做个简单的视频,我的耳机坏了,不好意思,没有声音,请原谅~~        时间很仓促,我把作业全部做完了,完整的过程我演示你看看,有什么问题请你指出来~~ 详细的代码说明和友好的界面 ...

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

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

  4. 视频存储格式YUV420 NV12 NV21 i420 YV12详解

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

  5. android nv21 nv12,視頻存儲格式YUV420 NV12 NV21 i420 YV12

    1)YUV簡介 YUV格式有兩大類:planar和packed. 對於planar的YUV格式,先連續存儲所有像素點的Y,緊接着存儲所有像素點的U,隨后是所有像素點的V. 對於packed的YUV格式 ...

  6. 将jpg图片转换成yuv420(NV12)数据文件

    代码功能:将文件夹下所有jpg文件转换成同名的yuv文件. yuv文件是yuv420(NV12)格式的数据位,文件内容为yyyyyyyyy-uvuvuv- import os import cv2 f ...

  7. QNX-Screen官方文档理解(Configuring Screen)

    用配置文件graphics.conf 配置库,驱动和屏幕参数 khronos khronos部分指定了与khronos相关的库和参数(例如,EGL和WFD库).这个部分由begin khronos和e ...

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

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

  9. 【OpenGL】用OpenGL shader实现将YUV(YUV420,YV12)转RGB-(直接调用GPU实现,纯硬件方式,效率高)...

    这段时间一直在搞视频格式的转换问题,终于最近将一个图片的YUV格式转RGB格式转换成功了.下面就来介绍一下: 由于我的工程是在vs2008中的,其中包含一些相关头文件和库,所以下面只是列出部分核心代码 ...

最新文章

  1. 【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )
  2. spring的aop名词解释
  3. Netty源码分析第5章(ByteBuf)----第5节: directArena分配缓冲区概述
  4. java中ArrayList用法详解,基本用法(含增删改查)
  5. 饱和气压与温度的关系_高中物理讲义:固体液体与物态变化第3节《饱和汽与饱和汽压》...
  6. 华北计算机系统工程研究所录取名单,2018年华北计算机系统工程研究所接收推免研究生复试录取通知...
  7. [python小工具]小说分割器
  8. 计算机二级office基础知识题库,计算机office二级考试题库
  9. 2022年jsonpath的超详细介绍以及在爬取移动端app上的灵活运用
  10. 员工管理系统————员工添加模块
  11. 迪杰斯特拉算法(dijkstra)_朴素版_堆优化版
  12. IOS HTTPS 服务器信任评估
  13. SpringBoot 集成 MongoDB 磁盘分页查询导致的坑,allowDiskUse 基本配置
  14. stitching.cpp鱼眼图像拼接融合 源码分析
  15. python登录网页后抓取数据_Python抓取网页数据的终极办法
  16. qt中新增html,Qt和HTML笔记:初始化
  17. 学计算机南昌哪个中专比较好,南昌中专计算机主要学什么
  18. 个推推送,APP接收到推送后的操作(前台与非前台的处理不同)
  19. c++ eos智能合约开发_EOS智能合约开发为何编译成WebAssembly?
  20. [bzoj3579][乱搞]破冰派对

热门文章

  1. WPS office出现“xxx.docx中发现无法读取内容,是否恢复此文档中的内容......word在试图打开文件时遇到错误” 紧急解决方案 -- 小黑日常超细解决教程
  2. 修改服务器2012r2核数,windows-server-2012-r2 – 如何从PS远程会话启动服务器核心上的Windows Update?...
  3. linux安装docker并搭建DNS服务器,劫持百度小实验
  4. 知乎上发现的高赞 20 款网页神器,免费又高效,用过后就离不开了!
  5. LaTex学习(五)行内公式与行间公式的表示
  6. CentOS7.6搭建开源WCP知识管理系统
  7. #define宏加括号和不加括号的区别
  8. 做网站用java 还是php_做网站用java还是php
  9. 编程思想总结 - 堆排序,少做无用功
  10. 右键添加[显示、隐藏文件]