解决华为M2 平板前置摄像头录制视频黑屏

来源:互联网 发布:fpga 单片机 工资 编辑:程序博客网 时间:2024/04/29 03:37
//解决办法直接写在注释里了
//我只试过4.4  5.0  6.0三种机型
关于黑屏的分析请看:http://blog.csdn.net/afei__/article/details/51540188
private void startPreView(SurfaceHolder holder) {    if (mCamera == null) {        mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);//默认打开前置    }    if (mCamera != null) {        mCamera.setDisplayOrientation(or);        try {            List<Camera.Size> previewSizes = mCamera.getParameters().getSupportedPreviewSizes();            for (int i = 0; i < previewSizes.size(); i++) {                Camera.Size psize = previewSizes.get(i);
//把可以设置的尺寸打印出来                LogUtils.e("BG" + "initCamera", "PreviewSize,width: " + psize.width + " height: " + psize.height);            }            mCamera.setPreviewDisplay(holder);            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//华为M2(6.0)不能设置Parameters                profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);            } else {
//华为4.4及其他5.0手机需要设置parameters,不然在SurfaceView上只有第一帧后面不动了                mParameters = mCamera.getParameters();                List<Camera.Size> mSupportedPreviewSizes = mParameters.getSupportedPreviewSizes();                List<Camera.Size> mSupportedVideoSizes = mParameters.getSupportedVideoSizes();                Camera.Size optimalSize = CameraHelper.getOptimalVideoSize(mSupportedVideoSizes,                        mSupportedPreviewSizes, mSurfaceView.getWidth(), mSurfaceView.getHeight());                                previewWidth = optimalSize.width / 2;                previewHeight = optimalSize.height;                mParameters.setPreviewSize(previewWidth, previewHeight);                profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);                // 这里是重点,分辨率和比特率                // 分辨率越大视频大小越大,比特率越大视频越清晰                // 清晰度由比特率决定,视频尺寸和像素量由分辨率决定                // 比特率越高越清晰(前提是分辨率保持不变),分辨率越大视频尺寸越大。                profile.videoFrameWidth = optimalSize.width;                profile.videoFrameHeight = optimalSize.height;                // 这样设置 1080p的视频 大小在5M , 可根据自己需求调节                profile.videoBitRate = 2 * optimalSize.width * optimalSize.height;                List<String> focusModes = mParameters.getSupportedFocusModes();                if (focusModes != null) {                    for (String mode : focusModes) {                        mode.contains("continuous-video");                    }                }                mCamera.setParameters(mParameters);            }            mCamera.startPreview();        } catch (Exception e) {            e.printStackTrace();        }    }}

原创粉丝点击