Android Camera Preview слишком темное при записи видео - все параметры игнорируются - PullRequest
0 голосов
/ 26 октября 2019

У меня есть следующий код для записи видео:

public void initRecorder() {
    Camera.Parameters parameters = mCamera.getParameters();
    Camera.Size previewSize = getOptimalPreviewSize(surfaceWidth, surfaceHeight);

    if (previewSize != null) {
        parameters.setPreviewSize(previewSize.width, previewSize.height);
    }
    setCameraParmeters();

    if (mMediaRecorder == null) mMediaRecorder = new MediaRecorder();

    mCamera.unlock();

    mMediaRecorder.setCamera(mCamera);
    mMediaRecorder.setOrientationHint(videoOrientation);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mMediaRecorder.setVideoEncodingBitRate(3072 * 1000);
    mMediaRecorder.setVideoFrameRate(30);
    mMediaRecorder.setVideoSize(1280, 720);
    mMediaRecorder.setOutputFile(videoFile.getAbsolutePath());

    if (!mApp.videoTime) {
        mMediaRecorder.setMaxDuration(30000);
    } else {
        mMediaRecorder.setMaxDuration(Integer.MAX_VALUE);
    }
    mMediaRecorder.setOnInfoListener(new MediaRecorder.OnInfoListener() {
       //do stuff at end of video
    }
}

public void setCameraParmeters() {
    Camera.Parameters parameters = mCamera.getParameters();
    parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
    parameters.setRecordingHint(true);
    final int[] previewFpsRange = new int[2];
    parameters.getPreviewFpsRange(previewFpsRange);
    if (previewFpsRange[0] == previewFpsRange[1]) {
        final List<int[]> supportedFpsRanges = parameters.getSupportedPreviewFpsRange();
        for (int[] range : supportedFpsRanges) {
            if (range[0] != range[1]) {
                parameters.setPreviewFpsRange(range[0], range[1]);

                break;
            }
        }
    }
    if(parameters.isAutoExposureLockSupported()) {
        parameters.setAutoExposureLock(false);
    }
    mCamera.setParameters(parameters);
}

Однако, когда я начинаю запись, предварительный просмотр становится намного темнее. Код в setCameraParameters, найденный в других примерах, кажется, ничего не делает.

Кстати, мое устройство - планшет Dragon Touch V10.

Я пробовал разные решения, но ни одно из них не кажетсяработать. Есть ли способ обойти предварительный просмотр при записи видео?

...