Разрешение захвата камеры Android - PullRequest
0 голосов
/ 11 мая 2018

Я использую фронтальную камеру для захвата действий пользователя, когда он использует приложения.И я сохраню видео на устройство.Я буду использовать VideoView для воспроизведения видео.Я видел правильное разрешение (FrameLayout) на предпросмотре камеры (480 x 640).Но я на VideoView играю с изменением разрешения на (176 х 144).Теперь я увидел, что просмотр видео слишком мал.Я уже установил setPictureSize.Но также не работает.

Когда я использовал приложения Camera на устройстве, я использовал фронтальную камеру для захвата чего-либо.Его разрешение 480 х 640. Я что-то не так установил?Пожалуйста помоги.Спасибо

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;
}

1 Ответ

0 голосов
/ 11 мая 2018

Размер предварительного просмотра Camera - это не то же самое, что размер видео MediaRecorder. Вы должны указать размер видео в MediaRecorder.

mMediaRecorder.setVideoSize(960, 640);

Но будьте осторожны, что не все размеры поддерживаются, а поддерживаемые размеры определяются аппаратным обеспечением камеры, см. Camera.Parameters # getSupportedVideoSizes () .

MediaRecord.setProfile() - лучший способ настройки формата вывода видео, есть несколько предопределенных CamcorderProfiles , которые содержат настройки примерно output format, frame rate, video size, encoding bitrate и т. Д. Вы должны попробовать.

...