android MediaRecorder
可以捕获分辨率高于320*240
的视频吗?
当我使用MediaRecorder::setVideoSize()
设置视频尺寸时,捕获的视频的分辨率均为320*240
。更糟糕的是,较高的人无法得到一个清晰的视频,他们在某种程度上是绿色的。 (使用的编码器为h263
,格式为mpeg4
)
此处使用的Android版本为1.6
你能帮助我吗?
答案 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不同,它可能会导致奇怪的行为。