mediarecorder.setVideoSize()以最大分辨率失败

时间:2013-05-28 06:18:17

标签: android android-mediarecorder

我试图通过

找到相机分辨率
final Parameters p = this.camera.getParameters();
List<Size> previewSizes=p.getSupportedPreviewSizes();

并按

设置媒体录制器的视频大小
this.mediaRecorder.setVideoSize(previewSizes.get(0).width, previewSizes.get(0).height);

我以横向模式录制视频。

MediaRecorder无法以这种高分辨率录制视频。

当我以较低的分辨率尝试时,它正在录制。

我们设置的屏幕显示尺寸和视频尺寸是否有问题?

1 个答案:

答案 0 :(得分:6)

尝试这样的事情

getBestPreviewSize()将根据提供的宽度和高度确定最佳分辨率。显然缺少主要的媒体记录和相机设置细节,但你很容易找到它们,你可能已经做到了

...
    Camera.size size = getBestPreviewSize(720,480, mCamera.getParameters());

    mMediaRecorder.setVideoSize(size.width,size.height);
    mMediaRecorder.setVideoFrameRate(15);
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
...

  private Camera.Size getBestPreviewSize(int width, int height, Camera.Parameters parameters) {
    Camera.Size result=null;

    for (Camera.Size size : parameters.getSupportedPreviewSizes()) {
        if (size.width<=width && size.height<=height) {
            if (result==null) {
                result=size;
            } else {
                int resultArea=result.width*result.height;
                int newArea=size.width*size.height;

                if (newArea>resultArea) {
                    result=size;
                }
            }
        }
    }
    return(result);
}