2016-05-05 7 views
11

हम एक साधारण छवि प्रसंस्करण ऑपरेशन (उदाहरण के लिए 3x3 रूपांतरण) करने के लिए नियॉन असेंबली या जीपीयू शेडर्स का उपयोग कर 120 एफपीएस (या 60 एफपीएस) कैमरा पूर्वावलोकन डेटा को संसाधित करना चाहते हैं। हम स्क्रीन पर छवि को प्रदर्शित करने में रुचि नहीं रखते हैं, इसलिए कैमरा डेटा सीधे सतह सतह पर जाना चाहिए।60/120 एफपीएस पूर्वावलोकन डेटा?

हमने सोचा कि हम कैमराकोनस्ट्रेनेड हाइस्पेड कैप्चर सत्र का उपयोग करके नेक्सस 5 पर कैमरा 2 एपीआई का उपयोग करके ऐसा कर सकते हैं लेकिन असफल रहे हैं।

इंटरनेट पर वर्तमान में कोई कार्यात्मक कोड नहीं है (कम से कम जिस हिस्से को हमने स्क्रैप किया है) जो यह अनुमति देता है और फिर भी ऐसा लगता है कि कार्यक्षमता मौजूद है।

उच्च गति रिकॉर्डिंग के लिए camera2 एपीआई का उपयोग कर का सबसे अच्छा उदाहरण यहाँ है: https://github.com/PkmX/lcamera

आदेश में एक समाधान मैं इस सवाल पर एक इनाम डाल रहा हूँ पोस्ट करने के लिए किसी को प्रोत्साहित करने के लिए प्रयास करने के लिए।

उत्तर

1

हमने सैमसंग एस 6 पर 120 एफपीएस डेटा दर प्राप्त करने के लिए कैमरे 2 वीडियो नमूना को सफलतापूर्वक संशोधित किया।

कोड here है।

हमने अभी तक पिक्सेल निकालने में कामयाब नहीं किया है, लेकिन जब हम करते हैं तो यहां अपडेट हो जाएगा।

+0

क्या आपको फ्रेम डेटा पढ़ने का कोई तरीका मिला? – Alex

1

यह pjsip में पूरा किया गया है। अपनी मशीन के लिए रेपो खींचो:

svn checkout -r 4687 https://svn.pjsip.org/repos/pjproject/trunk 

फिर उस वीडियो डेटा एक SurfaceTexture को सीधे तार से आने वाली renders एक उदाहरण अनुप्रयोग के लिए pjmedia/src/swig फ़ोल्डर खोलें।

मैं दो सबसे अधिक प्रासंगिक सी स्रोत फ़ाइलें (एक नज़र — पर निश्चित रूप से कर रहे हैं अन्य) अपलोड कर दिया है यहाँ तुम्हारे लिए,:

  1. android_dev.c
  2. android_opengl.c

स्वाभाविक रूप से, उन फ़ाइलों आपके लिए बहुत सारे अप्रासंगिक कोड हैं, लेकिन उम्मीद है कि आप जिस स्निपेट को ढूंढ रहे हैं उसे उम्मीद है।

आप पहले के आदेश pjmedia/src/pjmedia-videodev/android/PjCamera*.java फ़ाइलों को न्यूनतम जावा/सी इंटरफ़ेस यदि आप ऐसा करने के तरीके में अनिश्चित हैं संभाल उत्पन्न करने के लिए निर्देश found here में से कुछ का पालन करना होगा। मैं उनके निर्देशों का पालन करने में — का उपयोग कर एनडीके (वर्क्स डब्ल्यू/10 डी या 10 ई) और ओपनएसएल (1.0.2 ए) — के लिए बिल्कुल वही संस्करणों का उपयोग कर रहा हूं और सफलतापूर्वक वीडियो प्रस्तुत कर सकता हूं और एक कस्टम ऐप बना सकता हूं। यह स्रोत ठीक वही पूरा करता है जो आप खोज रहे हैं यदि आप केवल जेएनआई हुक के माध्यम से अपने एपीआई का उपयोग करने के लिए सी-लेवल वीडियो कैप्चर को संशोधित करते हैं, वैसे ही वे करते हैं।

एपीआई बदलने के लिए जेएनआई हुक का उपयोग करने के उदाहरण के लिए, pjmedia में उनके ऑडियोआईड फ़ोल्डर को देखें।

यदि आप अपनी परियोजना का निर्माण करते हैं, तो openssl 1.0.2a के निर्माण के लिए नए एनडीके संस्करणों के लिए बहुत नीचे दिए गए निर्देशों का पालन करना सुनिश्चित करें। मानक को निष्पादित करने के रूप में/configure पर पूंजी 'सी' पर ध्यान दें ./configure गलत कॉन्फ़िगरेशन प्रक्रिया लॉन्च कर सकता है। मैं सुझाव देता हूं कि उनके प्रदत्त आदेशों को एक स्क्रिप्ट में कॉपी और चिपकाएं। आप अपने उद्देश्यों के लिए पूरी तरह से openssl छोड़ने में सक्षम हो सकते हैं; एक बार जब मैं openssl समर्थन को एकीकृत करता हूं तो मैं केवल अपने एंड्रॉइड डिवाइस को एसआईपी खातों को पंजीकृत करने में सक्षम था।

+0

विस्तृत उत्तर के लिए धन्यवाद। क्या आपने धारा से 60 या 120 एफपीएस प्राप्त करने में कामयाब रहे हैं? – twerdster

+0

यह डिवाइस पर निर्भर करता है, लेकिन निश्चित रूप से: 2 आधुनिक उपकरणों के बीच, मैं अधिकतम रिज़ॉल्यूशन पर रीयलटाइम में कैमरे से स्ट्रीम कर सकता हूं, जो (मेरे लिए) आमतौर पर 30 या 60 एफपीएस (डब्ल्यू/पूर्ण स्ट्रीम का संचार) pjsip में प्रतिपादन के लिए एक दूसरा डिवाइस)। एक स्थानीय डिवाइस पर सीधे एक छिपे हुए बनावट को प्रतिपादित करने पर, मैंने देखा है कि अधिकतम फ़्रेमेट ~ 200 एफपीएस है। कैमरे से – EntangledLoops

+0

60fps? 200 एफपीएस से आपका क्या मतलब है? मैं विशेष रूप से भौतिक डिवाइस कैमरे से आने वाले फ्रेम के बारे में पूछ रहा हूं। और आप किस डिवाइस का उपयोग कर रहे हैं? – twerdster

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