2017-01-12 105 views
0

在我工作的应用程序中,我有一个区域,其中有录像预览来录制视频。我有以下的代码来启动预览:Android - 录制视频时的预览大小调整

mCamera = Camera.open(); 
mCamera.setPreviewDisplay(mHolder); 

Camera.Parameters parameters = mCamera.getParameters(); 
List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); 

Camera.Size previewSize = previewSizes.get(0); 

parameters.setPreviewSize(previewSize.width, previewSize.height); 
parameters.setVideoStabilization(false); 

mCamera.setParameters(parameters); 
mCamera.startPreview(); 
mCamera.unlock(); 

对于我MediaRecorder,我有以下设置代码:

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

mMediaRecorder.setCamera(mCamera); 

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

出于某种原因,我开始记录我的视频后,预览自身的大小,出现“放大”。我尝试了一些用户发布的问题解决方案,但这些解决方案无效。显然,我需要将预览大小设置为16:9的宽高比才能使其正常工作。有谁知道任何解决方案?

回答

0

无法保证所有设备都支持1280x720的视频录制。你应该遍历supported video recording sizes并选择一个你最喜欢的。您可以使用getPreferredPreviewSizeForVideo()作为特定设备推荐的视频记录尺寸。

而不是选择由getSupportedPreviewSizes()返回的第一个预览大小,您应该选择一个最适合您的预览大小。在所有实际情况中,可以预期在getSupportedVideoSizes()和getSupportedPreviewSizes()列表中可以找到相同的大小

您可以选择任意尺寸,但不一定是16:9纵横比中的一种。在极少数情况下,当您无法在支持的视频和预览尺寸之间找到令人满意的匹配时,应该选择具有相同宽高比(即宽/高)配比的尺寸。例如。 1280x720和640x360。

请注意,视频预览视图(通常为SurfaceView)也应具有与您选择的预览大小相同的宽高比(但大小不一样),例如,您可以选择1280x780的预览并查看1180x720的尺寸。否则,屏幕上的预览会失真(太胖或太窄)。

经书,在某些设备上,getSupportedVideoSizes()可能返回。然后,您应该使用由getSupportedPreviewSizes()返回的列表。