Android - 录制视频时预览调整大小
Posted
技术标签:
【中文标题】Android - 录制视频时预览调整大小【英文标题】:Android - Preview resizes when recording video 【发布时间】:2017-05-27 20:11:01 【问题描述】:在我正在开发的应用程序中,我有一个区域可以进行视频录制预览以录制视频。我有以下代码来开始预览:
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 的纵横比才能使其正常工作。有谁知道任何解决方案?
【问题讨论】:
【参考方案1】:无法保证所有设备都支持 1280x720 的视频录制。您应该遍历supported video recording sizes 并选择您最喜欢的一个。您可以使用getPreferredPreviewSizeForVideo() 为特定设备推荐的视频录制大小。
与其选择 getSupportedPreviewSizes() 返回的第一个预览尺寸,不如选择最适合您的尺寸。在所有实际情况下,您都可以在 getSupportedVideoSizes() 和 getSupportedPreviewSizes() 列表中找到相同的大小1。
您可以选择任何尺寸,不一定是 16:9 纵横比之一。在极少数情况下,当您无法在支持的视频和预览尺寸之间找到令人满意的匹配时,您应该选择具有相同纵横比(即宽度/高度)比率的尺寸。例如。 1280x720 和 640x360。
请注意,视频预览 View(通常是 SurfaceView)也应与您选择的预览尺寸具有相同的纵横比(但大小不同),例如您可以选择 1280x780 的预览和 1180x720 的视图大小。否则,屏幕上的预览会失真(太宽或太窄)。
1在某些设备上,getSupportedVideoSizes() 可能会返回 null。然后,您应该使用 getSupportedPreviewSizes() 返回的列表。
【讨论】:
以上是关于Android - 录制视频时预览调整大小的主要内容,如果未能解决你的问题,请参考以下文章
Android视频录制从不入门到入门系列教程————Camera Parameter