欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android直播页或相机预览页卡顿的解决办法

程序员文章站 2022-04-09 09:15:48
...

1,出现卡顿的一种可能原因是:摄像头返回的图片帧源数据每一帧都被做了大量的逻辑处理,如缩放,裁剪,旋转,镜像等,导致不流畅或卡顿的现象发生。如果是这个原因,那么优化图片处理的过程就变得非常必要,这时候需要用到Google官方的一个图片处理库libyuv,下载地址:https://download.csdn.net/download/look_up_at/10979014

 

2,libyuv库的使用

首先将该库下载到本地,然后以library的形式依赖到项目中,然后就可以在需要处理图片的地方使用了。

下面这段代码是我的项目中对图片源数据处理后返回的图片帧bitmap,经过该库处理后的FPS最少在30帧以上。

    public static Bitmap yuvData2Bitmap(byte[] yuvData, int width, int height) {
        final long searchStartTime = System.currentTimeMillis();

        //YUV数据的压缩,旋转,镜像操作
        int newWidth = 720;
        int newHeight = 1280;
        final byte[] newYuvData = new byte[newHeight * newWidth * 3 / 2];
        YuvUtil.compressYUV(yuvData, width, height, newYuvData, newHeight, newWidth, 0, Constant.DEVICE_TYPE == 1 ? 90 : 270, true);
        //YUV数据的裁剪
//        byte[] cropData = new byte[cropWidth * cropHeight * 3 / 2];
//        YuvUtil.cropYUV(dstData, width, height, cropData, cropWidth, cropHeight, 0, 0);
        //YUV数据转化
        byte[] nv21Data = new byte[newHeight * newWidth * 3 / 2];
        YuvUtil.yuvI420ToNV21(newYuvData, nv21Data, newWidth, newHeight);
        long yuvProcessingEndTime = System.currentTimeMillis();
        Log.i(TAG, "onNext: YUV数据旋转,压缩,镜像处理耗时" + (yuvProcessingEndTime - searchStartTime) + "毫秒");

        YuvImage yuvImage = new YuvImage(nv21Data, ImageFormat.NV21, newWidth, newHeight, null);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        yuvImage.compressToJpeg(new Rect(0, 0, yuvImage.getWidth(), yuvImage.getHeight()), 100, outputStream);

        byte[] jpegData = outputStream.toByteArray();
        long photoDataProcessingEndTime = System.currentTimeMillis();
        Log.i(TAG, "onNext: yuv转bitmap耗时" + (photoDataProcessingEndTime - yuvProcessingEndTime) + "毫秒");
        Log.i(TAG, "onNext: 图片预处理总耗时" + (photoDataProcessingEndTime - searchStartTime) + "毫秒");
        return BitmapFactory.decodeByteArray(jpegData, 0, jpegData.length);
    }

 

相关标签: 图片处理