当前位置: 首页 > news >正文

做saas网站可行吗许昌抖音推广公司

做saas网站可行吗,许昌抖音推广公司,永久免费的自助建站,建设厅官方网站北京目录 java imagereader编码保存 java NV21toYUV420SemiPlanar 编码保存视频用#xff1a; imageReader获取nv21 代码来自博客#xff1a; 【Android Camera2】彻底弄清图像数据YUV420_888转NV21问题/良心教学/避坑必读!_yuv420888转nv21_奔跑的鲁班七号的博客-CSDN博客 …目录 java imagereader编码保存 java NV21toYUV420SemiPlanar 编码保存视频用 imageReader获取nv21 代码来自博客 【Android Camera2】彻底弄清图像数据YUV420_888转NV21问题/良心教学/避坑必读!_yuv420888转nv21_奔跑的鲁班七号的博客-CSDN博客 java imagereader编码保存 //Planar格式P的处理private static ByteBuffer getuvBufferWithoutPaddingP(ByteBuffer uBuffer,ByteBuffer vBuffer, int width, int height, int rowStride, int pixelStride){int pos 0;byte []byteArray new byte[height*width/2];for (int row0; rowheight/2; row) {for (int col0; colwidth/2; col) {int vuPos col*pixelStride row*rowStride;byteArray[pos] vBuffer.get(vuPos);byteArray[pos] uBuffer.get(vuPos);}}ByteBuffer bufferWithoutPaddingsByteBuffer.allocate(byteArray.length);// 数组放到buffer中bufferWithoutPaddings.put(byteArray);//重置 limit 和postion 值否则 buffer 读取数据不对bufferWithoutPaddings.flip();return bufferWithoutPaddings;}//Semi-Planar格式SP的处理和y通道的数据private static ByteBuffer getBufferWithoutPadding(ByteBuffer buffer, int width, int rowStride, int times,boolean isVbuffer){if(width rowStride) return buffer; //没有buffer,不用处理。int bufferPos buffer.position();int cap buffer.capacity();byte []byteArray new byte[times*width];int pos 0;//对于y平面要逐行赋值的次数就是height次。对于uv交替的平面赋值的次数是height/2次for (int i0;itimes;i) {buffer.position(bufferPos);//part 1.1 对于u,v通道,会缺失最后一个像u值或者v值因此需要特殊处理否则会crashif(isVbuffer itimes-1){width width -1;}buffer.get(byteArray, pos, width);bufferPos rowStride;pos poswidth;}//nv21数组转成buffer并返回ByteBuffer bufferWithoutPaddingsByteBuffer.allocate(byteArray.length);// 数组放到buffer中bufferWithoutPaddings.put(byteArray);//重置 limit 和postion 值否则 buffer 读取数据不对bufferWithoutPaddings.flip();return bufferWithoutPaddings;}private static byte[] YUV_420_888toNV21(Image image) {int width image.getWidth();int height image.getHeight();ByteBuffer yBuffer getBufferWithoutPadding(image.getPlanes()[0].getBuffer(), image.getWidth(), image.getPlanes()[0].getRowStride(),image.getHeight(),false);ByteBuffer vBuffer;//part1 获得真正的消除padding的ybuffer和ubuffer。需要对P格式和SP格式做不同的处理。如果是P格式的话只能逐像素去做性能会降低。if(image.getPlanes()[2].getPixelStride()1){ //如果为true说明是P格式。vBuffer getuvBufferWithoutPaddingP(image.getPlanes()[1].getBuffer(), image.getPlanes()[2].getBuffer(),width,height,image.getPlanes()[1].getRowStride(),image.getPlanes()[1].getPixelStride());}else{vBuffer getBufferWithoutPadding(image.getPlanes()[2].getBuffer(), image.getWidth(), image.getPlanes()[2].getRowStride(),image.getHeight()/2,true);}//part2 将y数据和uv的交替数据除去最后一个v值赋值给nv21int ySize yBuffer.remaining();int vSize vBuffer.remaining();byte[] nv21;int byteSize width*height*3/2;nv21 new byte[byteSize];yBuffer.get(nv21, 0, ySize);vBuffer.get(nv21, ySize, vSize);//part3 最后一个像素值的u值是缺失的因此需要从u平面取一下。ByteBuffer uPlane image.getPlanes()[1].getBuffer();byte lastValue uPlane.get(uPlane.capacity() - 1);nv21[byteSize - 1] lastValue;return nv21;}java NV21toYUV420SemiPlanar 编码保存视频用 public byte[] NV21toYUV420SemiPlanar(byte[] nv21, int width, int height) {byte[] yuv420sp new byte[width * height * 3 / 2];int frameSize width * height;int i, j;System.arraycopy(nv21, 0, yuv420sp, 0, frameSize); // Y分量直接复制for (i 0; i frameSize / 4; i) {j i * 2;// NV21的UV分量交替排列转为NV12需要调换U和V的位置yuv420sp[frameSize j] nv21[frameSize j 1]; // U分量yuv420sp[frameSize j 1] nv21[frameSize j]; // V分量}return yuv420sp;} imageReader获取nv21 plane[0] plane[2] NV21;; plane[0] plane[1] NV12 Image image reader.acquireLatestImage(); if (image null) {return; }Image.Plane[] planes image.getPlanes();ByteBuffer yBuffer image.getPlanes()[0].getBuffer(); int ySize yBuffer.remaining();ByteBuffer vBuffer image.getPlanes()[2].getBuffer(); int vSize vBuffer.remaining();byte[] nv21_s new byte[WIDTH*HEIGHT * 3 / 2];try {yBuffer.get(nv21_s, 0, yBuffer.remaining());vBuffer.get(nv21_s, ySize, vBuffer.remaining());imageQueue.put(nv21_s); } catch (Exception e) {throw new RuntimeException(e); }image.close(); 注 1.这种方式会缺最后一个像素的U分量或V分量如果追求完美对NV21可以从plane[1]中取出最后的值追加到末尾对NV12则是在plane[2]中取出最后的值追加到末尾 2.只适用于图像宽度为8的整数倍的情况否则因为需要做内存对齐后面会补0,导致image.getWidth() plane.getRowStride()这就需要对每一行舍去后面多余的0然后再拼接效率会低很多。
http://www.w-s-a.com/news/348614/

相关文章:

  • 网站建设找谁做seo基础知识培训
  • 微网站怎么做的好建设网站不会写代码
  • 广州外贸网站制作wordpress信息搜索插件
  • 福建高端网站建设个人公众号怎么制作教程
  • 企业网站有哪些举几个例子wordpress ie兼容插件
  • 高端的深圳网站页面设计福清市建设局官方网站
  • 安装网站到服务器合肥建设干部学校网站
  • 影视网站如何做销售案例网站
  • 建设网站对比方案龙岗网站开发公司
  • 网站开发标准网站建设公司兴田德润可信赖
  • 如何建设一个公众号电影网站自动seo优化
  • 个人网站能备案吗酱香拿铁采取了哪些网络营销方式
  • 网站建设及推广好做吗自己做的网站加入购物车价格
  • 涡阳在北京做网站的名人注册一个免费的网站
  • 三门峡建设环境局网站公司注册网上核名通道
  • 叶县建设局网站要看网海外域名是多少
  • 网站运行环境配置Wordpress支付时效
  • logo设计网站知乎港北网站建设
  • 北京市保障性住房建设投资中心官方网站有限责任公司的特点
  • 做网站卖互联网营销怎么做
  • 晋州市建设局网站建站网站系统
  • 专业网站优化方案广东微信网站制作报价表
  • 北京网站建设公司分形科技简述营销网站建设策略
  • 汉中网站建设有限公司vue网站开发
  • 网站备案背景幕布阳江东莞网站建设
  • 北京网站建设要多少钱html网站标签
  • 做兼职做网站的是什么公司网站怎么修改
  • 舆情监控都有哪些内容西安seo网站公司
  • 网站有域名没备案天津网络营销
  • 哈巴狗模式网站开发电子商务平台建设与运营技术