2010-10-21 11 views
11

के साथ समस्या एंड्रॉइड MediaRecorder320*240 से अधिक रिज़ॉल्यूशन वाले वीडियो को कैप्चर कर सकता है?एंड्रॉइड मीडियाआरकॉर्डर सेटविडियो साइज()

जब मैंने वीडियो आकार सेट करने के लिए MediaRecorder::setVideoSize() का उपयोग किया, तो कब्जा कर लिया गया वीडियो 320*240 के संकल्प पर था। इससे भी बदतर, उच्च लोगों को एक स्पष्ट वीडियो नहीं मिल सकता है, वे किसी भी तरह हरे रंग के थे।

एंड्रॉयड यहां इस्तेमाल किया संस्करण 1.6

आप किसी को भी मेरी मदद कर बाहर को खुश किया जा सका है (प्रयुक्त एनकोडर h263 है, प्रारूप mpeg4 है)?

उत्तर

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 सेट करने की आवश्यकता है। साथ ही, यदि आपका कैमरा .setPreviewSize और MediaRecorder.setVideoSize भिन्न है तो यह अजीब व्यवहार कर सकता है।

+0

मैं सिर्फ आशा है कि वे यह लिखते थे उनके API दस्तावेज़ पर (VideoSize और PreviewSize के बारे में)। – artsylar

+0

सेट नहीं है VideoSize() बस setPreviewSize() को कॉल करता है? मतलब, जब तक वीडियोज़ समर्थित पूर्वावलोकन आकारों में से एक है तब तक उनके पास अभी भी वही मान होगा। – artsylar

+0

"पैरा" क्या है? – Felix

7

मुझे यहां वर्णित एक जैसा मुद्दा था। मैंने यह पता चला कि वीडियो आकार को समायोजित करने से पहले मुझे अपने कोड को थोड़ा सा पुनर्गठन करना पड़ा था।

महत्वपूर्ण बात यह है कि setVideoSize() को setVideoEncoder() से पहले कहा जाता है। मुझे दस्तावेज़ में यह नहीं मिल रहा है, हालांकि यह एक विशिष्ट वीडियो रिज़ॉल्यूशन स्थापित करने के साथ मेरी समस्याओं का समाधान करता है। यह भी ध्यान रखें कि setOutputFormat() को setVideoSize() से पहले कॉल किया जाना चाहिए।

जैसा कि साइड नोट के रूप में सेटVideoFrameRate() के लिए भी सच है। अगर इसे 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

यह मुझे त्रुटि 'ई/MediaRecorder: विफल विफल: -19'। –

+0

यह उत्तर अधिक upvotes के लायक है – Bhargav

संबंधित मुद्दे