2011-12-30 12 views
6

मैंने मूल कैमरा एप्लिकेशन (वीडियो मोड) के साथ परीक्षण किया सैमसंग गैलेक्सी टैब 8.9 के साथ आता है। सहेजा गया फ्रंट कैमरा वीडियो 24 एफपीएस, 640x480 प्राप्त करने में सक्षम है। (विंडोज मशीन में स्थानांतरण के बाद वीडियो फ़ाइल के गुणों को देखकर)क्यों एफपीएस मूल कैमरा ऐप के समान नहीं है

हालांकि, जबकि मैं सामने Camera कोड लिखने के लिए लिखता हूं।

mCamera2.setPreviewCallbackWithBuffer(new PreviewCallback() { 
    public void onPreviewFrame(byte[] data, Camera camera) { 
     // image processing code placed here. 
    } 
}); 

अधिकतम परिणाम मैं प्राप्त कर सकते हैं (डिस्क के लिए वीडियो सहेजे बिना। मैं केवल मापने कॉलबैक फ़ंक्शन onPreviewFrame दर चालू होने वाले) है

  • 15 एफपीएस
  • 320x240, 800x600

मैं सैमसंग मूल कैमरा ऐप के समान प्रदर्शन करना चाहता हूं। क्या मुझे पता चलेगा कि मुझे कुछ तकनीक याद आ रही है?

+0

कि कच्चे फ्रेम पर कब्जा कर है? यहां तक ​​कि 800x600 @ 24 बिट @ 15fps = 21meg/सेकेंड डेटा। इससे ऊपर कुछ भी आंतरिक फ्लैश स्टोरेज की लिखने की गति से अधिक हो जाएगा। –

+0

@MarcB कृपया मेरे संशोधित प्रश्न को अधिक विस्तार से देखें। –

उत्तर

5

कारण आप इन परिणामों को देख रहे हैं यह है कि आपकी कॉलबैक वास्तविक वीडियो की बजाय वीडियो का नमूनाकरण कर रही है।

जब कैमरा फ़ाइल सिस्टम पर इसका आउटपुट डंप कर रहा है, तो यह बहुत कम स्तर के लेखन ऑपरेशन कर रहा है जो कैमरे के वीडियो बफर से डेटा को फ़ाइल सिस्टम में कॉपी करता है, बिना जेवीएम को छूए। वीडियो को उच्च गुणवत्ता और कम विलंबता पर रखने की आवश्यकता है, और एक चिकनी अंतिम वीडियो सुनिश्चित करता है। यदि आपको वास्तविक वीडियो पर वीडियो प्रोसेसिंग करने की आवश्यकता है, तो वीडियो के रिकॉर्ड होने के बाद यह बेहतर होता है।

पूर्वावलोकन कॉलबैक आपको वास्तविक वीडियो कैप्चर का नमूना दे रहा है, न कि पूरे वीडियो कैप्चर - क्योंकि अधिकांश 15fps वीडियो अभी भी चिकनी दिखेंगे, पूर्वावलोकन कॉलबैक केवल आपको कम रिज़ॉल्यूशन दे रहा है, कम एफपीएस पूर्वावलोकन संस्करण वास्तविक वीडियो कब्जा कर लिया जा रहा है। यहां तक ​​कि अंतर्निहित सैमसंग कैप्चर एप्लिकेशन केवल पूर्वावलोकन संस्करण दिखाएगा, क्योंकि यह सब पूर्वावलोकन इंटरफ़ेस दिया जा रहा है।

फ़ाइल सिस्टम डंप या निम्न-स्तरीय बाइट सरणी डेटा संरचनाओं (उदाहरण के लिए जेएनआई रैपर का उपयोग करके) के अलावा किसी अन्य चीज़ से एंड्रॉइड में वीडियो रिकॉर्डिंग का सटीक बेंचमार्क प्राप्त करना असंभव होगा। यह काफी आसान होगा, लेकिन इसे करने का प्रयास सीधे कैमरे से इनपुट पढ़ने को अवरुद्ध करेगा और वैसे भी आपके मानक को उड़ा देगा।

+1

पर्याप्त दिलचस्प है। क्या आपके पास कोई जानकारी है कि मैं सीधे कैमरा वीडियो बफर कैसे एक्सेस कर सकता हूं? जहां तक ​​मैं एंड्रॉइड-एनएनडी समूह से प्राप्त जानकारी से प्राप्त करता हूं: http://groups.google.com/group/android-ndk/browse_thread/thread/ec7e28a83fa93c8c, ऐसा लगता है कि सीधे एनडीके से कैमरे तक पहुंच आधिकारिक तौर पर समर्थित नहीं है। –

+0

यह मेरी समझ भी है - इस तथ्य के बाद फ़ाइल के माध्यम से आप कैमरे से कच्चे बाइटस्ट्रीम तक नहीं पहुंच सकते हैं क्योंकि कोई एनडीके/एसडीके एक्सेसर्स नहीं हैं। यह देखने के लिए एंड्रॉइड स्रोत कोड में खुदाई हो सकती है कि यह देखने के लिए कि क्या कोई हुक संभवतः उपलब्ध हो सकता है: एंड्रॉइड/फ्रेमवर्क/बेस/मीडिया/जावा/एंड्रॉइड/मीडिया/मीडियाआरकॉर्डर.जावा –

+0

ओह ठीक है, मुझे लगता है कि मैं कुछ भी नहीं कर सकता मेरी तरफ करो –

4

कैमरा एफपीएस प्रकाश की स्थिति और ऑटोएक्सपोजर पैरामीटर पर निर्भर करता है। सभी प्रकाश की स्थिति में तय फ्रेम दर प्राप्त करने के लिए (एपीआई 14 से, एंड्रॉयड 4.0):

Camera.Parameters p = camera.getParameters(); 
p.setPreviewFpsRange(30000, 30000); // for 30 fps 
if (p.isAutoExposureLockSupported()) 
    p.setAutoExposureLock(true); 
camera.setParameters(p); 
+0

क्या ऑटो-एक्सपोजर लॉक को सत्य पर सेट करने के लिए कोई दुष्प्रभाव है? – suitianshi

+0

खैर, गहरा चित्र, अगर इसे साइड इफेक्ट के रूप में माना जा सकता है। – ggurov

+0

धन्यवाद। लेकिन लगता है कि आपका समाधान मेरे लिए काम नहीं करता है। अभी भी पूर्वावलोकन एफपीएस चमकदार/अंधेरे वातावरण में स्थिर नहीं है। – suitianshi

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