[英]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 format
, frame rate
, video size
, encoding bitrate
等的設置。您應該嘗試一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.