2013-01-18 58 views
5

मैं इसी तरह के कई सवाल को देखा है, लेकिन कोई भी एक 100% जवाब देता है:Android पर लाइव कैमरा डेटा को सीधे कैसे एक्सेस करें? स्काइप यह कैसे करता है?

  1. Camera.PreviewCallback सभी उपकरणों पर जरूरत फ़्रेमरेट की गारंटी नहीं देता
  2. MediaRecorder कुछ उपकरणों पर ऑडियो/वीडियो बफ़र सकता है (पहले यह है फ़ाइल/स्थानीय सॉकेट में लिखा गया)
  3. मूल सी/सी ++ एपीआई सार्वजनिक नहीं है और हर कोई इसका उपयोग करने से दृढ़ता से निराश होता है।

स्काइप यह कैसे करता है? एंड्रॉइड पर लाइव वीडियो फ्रेम तक पहुंचने का सही तरीका क्या है?

उत्तर

3

3.0 से पहले एंड्रॉइड संस्करणों पर, पूर्वावलोकन कॉलबैक एकमात्र विकल्प है; कृपया सुनिश्चित करें कि आप setPreviewCallbackWithBuffer विधि का उपयोग करें, जो कि अधिक कुशल है।

हनीकॉम पर या बाद में, आप setPreviewTexture के माध्यम से एक GPU पथ का भी उपयोग कर सकते हैं। यह पूर्वावलोकन स्ट्रीम को सीधे एक GPU बनावट में प्राप्त करेगा, जो कुछ अनुप्रयोगों के लिए अधिक उपयुक्त है।

आपको आंतरिक सी/सी ++ एपीआई का उपयोग करने की कोशिश करने से कोई बड़ा प्रदर्शन लाभ नहीं मिलेगा, और भविष्य की रिलीज में इसे बदलने की गारंटी है, इसलिए मैं इसका उपयोग करने की अनुशंसा नहीं करता हूं।

सुनिश्चित करें कि आप पूर्वावलोकन फ्रेम दर की सूची से जितना संभव हो सके पूर्वावलोकन फ्रेम दर सेट कर रहे हैं।

यदि आपको उच्च, स्थिर फ्रेम दर की आवश्यकता है, तो आप नए उपकरणों पर recording hint को सही करने के लिए भी प्रयोग कर सकते हैं।

दुर्भाग्यवश, उन तरीकों में से कोई भी स्थिर आउटपुट फ्रेम दर प्रदान करने की गारंटी नहीं है, जो दृश्य परिस्थितियों और डिवाइस के ऑटो-एक्सपोजर एल्गोरिदम के विवरण पर निर्भर है। यह कुछ ऐसा है जो हमें उम्मीद है कि भविष्य में सुधार होगा।

हालांकि, अगर मैं ऊपर दिए गए दो विकल्पों में से एक स्काइप एट अल का उपयोग नहीं करता तो मुझे आश्चर्य होगा।

+0

मैंने मीडियारेकॉर्डर/स्थानीय सॉकेट दृष्टिकोण का उपयोग करके कई लोगों को देखा, जो आपको ऑडियो को अलग-अलग कैप्चरिंग और सिंक्रनाइज़ करने से बचाता है। लेकिन बफरिंग खतरे की लागत पर आता है और परिणामी फाइल को "खोलना" पड़ता है ... उस पर आपकी राय क्या है? – badbadboy

+0

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