android MediaRecorder setVideoSize()的问题

时间:2010-10-21 14:45:47

标签: android mediarecorder

android MediaRecorder可以捕获分辨率高于320*240的视频吗?

当我使用MediaRecorder::setVideoSize()设置视频尺寸时,捕获的视频的分辨率均为320*240。更糟糕的是,较高的人无法得到一个清晰的视频,他们在某种程度上是绿色的。 (使用的编码器为h263,格式为mpeg4

此处使用的Android版本为1.6

你能帮助我吗?

2 个答案:

答案 0 :(得分:8)

我遇到了类似于此处描述的问题。我发现在调整视频大小之前我必须稍微重构我的代码。

重要的是在setVideoEncoder()之前调用setVideoSize()。我在文档中找不到这个,但它解决了我设置特定视频分辨率的问题。 另请注意,应在setVideoSize()之前调用setOutputFormat()。

正如旁注所示,setVideoFrameRate()也是如此。如果在setVideoEncoder()之前没有调用它,它将不会有任何影响。

这是使用Android 2.3.3测试的

这是一个代码示例:

recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoSize(640,480);
recorder.setVideoFrameRate(30);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);       

答案 1 :(得分:3)

首先,您需要确定相机支持的内容。尝试:

            List<String> anti = params.getSupportedAntibanding(); 
    List<String> color = params.getSupportedColorEffects();
    List<String> focus = params.getSupportedFocusModes(); 
    List<String> flash = params.getSupportedFlashModes();
    List<Size> previewSize = params.getSupportedPreviewSizes();
    List<Size> sizes = params.getSupportedPictureSizes();
    List<Integer> frameRates = params.getSupportedPreviewFrameRates();
    List<Integer> pictureFormats = params.getSupportedPictureFormats();
    List<String> scene = params.getSupportedSceneModes(); 
    List<String> white = params.getSupportedWhiteBalance();

这将告诉您所有Camera支持的参数。秒确保正确初始化MediaRecorder,请参阅google文档,了解您需要设置MediaRecorder的顺序。此外,如果您的Camera.setPreviewSize和MediaRecorder.setVideoSize不同,它可能会导致奇怪的行为。