美文网首页Android开发笔记
camera不显示预览获取帧数据

camera不显示预览获取帧数据

作者: 天敦敦 | 来源:发表于2019-05-16 19:07 被阅读0次

    Camera初始化

    Camera camera = Camera.open(mCameraIndex);
    Camera.Parameters p = camera.getParameters();
    p.setPreviewFormat(ImageFormat.NV21);
    p.setPreviewSize(1280, 720);
    p.setPictureFormat(ImageFormat.NV21);
    p.setPictureSize(1280, 720);
    p.setZoom(0);
    p.setPreviewFrameRate(30);
    p.setRotation(0);
    camera.setParameters(p);
    

    开始监听回调,设置预览

    try {
        // 主要是surfaceTexture获取预览数据,但不显示
        SurfaceTexture surfaceTexture = new SurfaceTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);
        mCamera.setPreviewTexture(surfaceTexture);
    } catch (IOException e) {
        e.printStackTrace();
    }
    // 设置 mCamera.addCallbackBuffer(mPreviewData) 后才会回调,旨在每处理完一帧数据回调一次
    mCamera.setPreviewCallbackWithBuffer(mPreviewCallback);
    // 设置缓存帧数据容器,避免重复创建 private byte[] mPreviewData = new byte[mSize.width * mSize.height * 3 / 2];
    mCamera.addCallbackBuffer(mPreviewData);
    mCamera.startPreview();
    

    帧数据监听实现

    Camera.PreviewCallback mPreviewCallback = new Camera.PreviewCallback() {
        @Override
        public void onPreviewFrame(byte[] data, Camera camera) {
            // 在此处处理当前帧数据,并设置下一帧回调
            mCamera.addCallbackBuffer(mPreviewData);
        }
    };
    

    关闭相机

    camera.stopPreview();
    camera.setPreviewCallbackWithBuffer(null);
    camera.release();
    camera = null;
    

    相关文章

      网友评论

        本文标题:camera不显示预览获取帧数据

        本文链接:https://www.haomeiwen.com/subject/vljwaqtx.html