簡體   English   中英

Android Camera Video Recording問題

[英]Android Camera Video Recording issue

我創建了一個錄制視頻的項目。當我在Android 8.1.0 8.1.0中運行該項目時,出現以下錯誤。 android "mediarecorder: start failed: -19" recorder.start()上的android "mediarecorder: start failed: -19"

我正在使用代碼

private void startRecording() {

    try {

        if (checkAvailabity()) {
            flashOn();
            findViewById(R.id.btn_fail).setVisibility(View.VISIBLE);
            prepareRecorder();
            isRecordVideoClicked = true;
            isPriviewVideoClicked = false;
            enablePassButton();
            mThumbnail.setVisibility(View.GONE);
            timerValue = (TextView) findViewById(R.id.timer);
            filePathLabel.setVisibility(View.GONE);
            filePathValue.setText("");

            recordingIndicator.setVisibility(View.VISIBLE);

            startTime = 0L;

            timeInMilliseconds = 0L;

            timeSwapBuff = 0L;

            updatedTime = 0L;
            startTime = SystemClock.uptimeMillis();
            customHandler.postDelayed(updateTimerThread, 0);
            recording = true;

            recorder.start();
            start.setEnabled(false);
            start.setBackgroundResource(R.drawable.button_disabled);

            AppLogger.v(this, TAG, "Recording Started");
        } else {
            findViewById(R.id.btn_pass).setEnabled(false);
        }

    } catch (Exception e) {
        mThumbnail.setVisibility(View.GONE);
        timerValue.setVisibility(View.GONE);
        filePathLabel.setVisibility(View.GONE);
        recordingIndicator.setVisibility(View.GONE);
        Toast.makeText(CameraVideoTestActivity.this, R.string.error_on_video_recording, Toast.LENGTH_LONG).show();
         }
}

private void prepareRecorder() {
    try {
        int rotation = getWindowManager().getDefaultDisplay().getRotation();
        recorder = new MediaRecorder();
        //recorder.setVideoSize(320, 240);
        recorder.setPreviewDisplay(holder.getSurface());
        if (cameraFront) {
            CameraInfo info = new CameraInfo();
            rotation = (info.orientation - 90 + 360) % 360;
            recorder.setOrientationHint(rotation);
        } else {
            recorder.setOrientationHint(ORIENTATIONS.get(rotation));
        }

        if (usecamera) {
            camera.lock();
            camera.unlock();
            recorder.setCamera(camera);

        }
        recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

        recorder.setProfile(camcorderProfile);

        if (camcorderProfile.fileFormat == MediaRecorder.OutputFormat.THREE_GPP) {
            createthreeGppFile();
        } else {
            createOtherFormateVideo();
        }
        recorder.prepare();

    } catch (Exception e) {

        setTestPerformed(true);
        supportInvalidateOptionsMenu();

        AppLogger.exception(this, getClass().getSimpleName(), e);
    }
}

我正在使用下面的代碼來准備相機

 private void prepareCamera() throws Exception {
    parameters = camera.getParameters();

    List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
    Camera.Size previewSize = previewSizes.get(0);
    parameters.setPreviewSize(previewSize.width, previewSize.height);
    parameters.setPreviewFrameRate(camcorderProfile.videoFrameRate);

    camera.setParameters(parameters);

    camera.setPreviewDisplay(holder);
    camera.setDisplayOrientation(90);
    camera.startPreview();
    previewRunning = true;

}

並在使用以下代碼創建的onSurface中

@Override
public void surfaceCreated(SurfaceHolder holder) {
    try {
        AppLogger.v(this, TAG, "surfaceCreated");

        if (usecamera) {
            releaseCameraAndPreview();
            if (cameraFront) {
                if (camcorderProfile.fileFormat == MediaRecorder.OutputFormat.THREE_GPP) {
                    camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);
                } else {
                    camcorderProfile = CamcorderProfile.get(findFrontFacingCamera(), CamcorderProfile.QUALITY_LOW);
                }
                camera = Camera.open(findFrontFacingCamera());

            } else {
                camcorderProfile = CamcorderProfile.get(findBackFacingCamera(), CamcorderProfile.QUALITY_HIGH);
                camera = Camera.open(findBackFacingCamera());
            }
            if (camera == null) {
                start.setEnabled(false);
                start.setBackgroundResource(R.drawable.button_disabled);
                setTestPerformed(true);
                supportInvalidateOptionsMenu();
            } else {
                start.setEnabled(true);
                start.setBackgroundResource(R.drawable.shadow);
                start.setPadding(20, 0, 20, 0);
            }
        }
    } catch (Exception e) {
        AppLogger.exception(this, getClass().getSimpleName(), e);
    }

}

請提供一些解決方案。謝謝

花了1天后,我得到了解決方案,只需更改下面的代碼,現在一切都可以正常工作。

 recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_720P));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM