2010-10-21 91 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

相關問題