2010-10-21 61 views
11

可以通过android MediaRecorder捕获分辨率高于320*240的视频吗?Android MediaRecorder问题setVideoSize()

当我使用MediaRecorder::setVideoSize()设置视频尺寸时,捕获的视频全部为320*240的分辨率。更糟糕的是,更高级的人无法获得清晰的视频,他们有点绿色。 (使用的编码器是h263,格式为mpeg4)这里使用

的Android版本1.6

可以请人帮我吗?

回答

2

首先你要确定你的相机支持什么。尝试:

  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(); 

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

+0

我只希望他们会写(约VideoSize和PreviewSize)在他们的API文档。 – artsylar 2011-08-19 03:31:24

+0

是不是setVideoSize()只是调用setPreviewSize()?也就是说,只要视频尺寸是支持的预览尺寸之一,它们最终仍会具有相同的值。 – artsylar 2011-08-20 01:35:49

+0

什么是“params”? – Felix 2013-05-06 04:15:17

7

我有一个类似于这里描述的问题。事实证明,在调整视频大小之前,我不得不重构我的代码。

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

至于旁注,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);  
+2

这给了我错误“E/MediaRecorder:启动失败:-19'。 – 2015-01-26 14:47:39

+0

这个答案值得更多upvotes – Bhargav 2015-10-29 06:58:34

相关问题