簡體   English   中英

Android相機拍攝分辨率

[英]Android Camera Capture Resolution

我使用前置攝像頭捕獲用戶使用應用程序時的動作。 然后將視頻保存到設備。 我將使用VideoView播放視頻。 我看到相機預覽的(FrameLayout)分辨率正確(480 x 640)。 但是我在VideoView上播放分辨率更改為(176 x 144)。 現在我看到視頻視圖太小。 我已經設置了setPictureSize 但也行不通。

當我在設備中使用Camera應用程序時,我使用前置攝像頭捕獲了一些東西。 它的分辨率是480 x640。我設置的地方有問題嗎? 請幫忙。 謝謝

for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
Camera.CameraInfo newInfo = new Camera.CameraInfo();
Camera.getCameraInfo(i, newInfo);

if (newInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
    mCamera = Camera.open(i); // attempt to get a Camera instance
    Camera.Parameters parameters = mCamera.getParameters();
    parameters.set("orientation", "portrait");
    mCamera.setParameters(parameters);
    mCamera.setDisplayOrientation(90);
    if (cameraDelegate != null)
        cameraDelegate.OnCameramCreated();
    }
}


private boolean prepareVideoRecorder(){
    mMediaRecorder = new MediaRecorder();

    // Step 1: Unlock and set camera to MediaRecorder
    mCamera.unlock();
    mMediaRecorder.setCamera(mCamera);

    // Step 2: Set sources
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

    // Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
//       mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

    mVideoPath = getOutputMediaFile(MEDIA_TYPE_VIDEO).toString();

    // Step 4: Set output file
    mMediaRecorder.setOutputFile(mVideoPath);

    // Step 5: Set the preview output
//        mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());

    // Step 6: Prepare configured MediaRecorder
    try {
        mMediaRecorder.prepare();
    } catch (IllegalStateException e) {
        e.printStackTrace();
        Log.d(TAG, "IllegalStateException preparing MediaRecorder: " + e.getMessage());
        releaseMediaRecorder();
        return false;
    } catch (IOException e) {
        e.printStackTrace();
        Log.d(TAG, "IOException preparing MediaRecorder: " + e.getMessage());
        releaseMediaRecorder();
        return false;
    }

    return true;
}

Camera的預覽大小與MediaRecorder的視頻大小不同。 您必須為MediaRecorder指定視頻大小。

mMediaRecorder.setVideoSize(960, 640);

但是請注意,並非所有大小都受支持,並且支持的大小由攝像頭硬件確定,請參見Camera.Parameters#getSupportedVideoSizes()

MediaRecord.setProfile()是配置視頻輸出格式的更好方法,有些預定義的CamcorderProfiles包含有關output formatframe ratevideo sizeencoding bitrate等的設置。您應該嘗試一下。

暫無
暫無

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

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