2010-11-14 11 views
5

में मीडियाआरकॉर्डर और यूडीपी (डेटाग्राम सॉकेट) वर्तमान में मैं एक प्रोग्राम लिख रहा हूं जो एक प्रकार का वीओआईपी क्लाइंट है। मैं 2 ग्राहकों के बीच एक कनेक्शन स्थापित करने और माइक्रोफोन से रिकॉर्ड किया गया डेटा भेजने और प्राप्त करने की कोशिश कर रहा हूं।एंड्रॉइड

मैं वर्तमान में फ़ाइलों का उपयोग कर रहा है, लेकिन यह एक भयंकर कार्यान्वयन की तरह दिखता है:

रिकॉर्डर एक अस्थायी फ़ाइल के लिए रिकॉर्डिंग शुरू होता है। एक टाइमर अंदर जाता है, रिकॉर्डर को रोकता है, फ़ाइल आकार को देखता है, फिर डेटाग्राम पैकेट का उपयोग करके सामग्री भेजता है।

यह बहुत बुरा लगता है। मुझे आश्चर्य है कि MediaRecorder और MediaPlayer क्लास में यूपीडी सॉकेट लेने का एक तरीका है क्योंकि यह फ़ाइल आउटपुट और इनपुट क्रमशः (यानी एक डेटाग्राम सॉकेट) है।

मैं सॉकेट से फ़ाइल डिस्क्रिप्टर का उपयोग कर सकता हूं, लेकिन सॉकेट टीसीपी का उपयोग करता है। मैं यूडीपी का उपयोग करना चाहता था, इसलिए मुझे डेटाग्राम सॉकेट लगता है, लेकिन मुझे अपने MediaRecorder और MediaPlayer क्लास में इसका उपयोग करने का कोई तरीका नहीं दिख रहा है।

क्या किसी के पास इसके लिए कोई अच्छा समाधान है?

आपको बहुत बहुत

उत्तर

0

सभी धन्यवाद,

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

गुड लक, बी रेड

+0

यह पूरी तरह गलत है! आपको डेटा को स्ट्रीम में एन्कोड करना होगा, जो एंड्रॉइड द्वारा मूल रूप से समर्थित नहीं है। --- आप सही हैं कि आप आसानी से यूडीपी पर फ्रेम को विस्फोट कर सकते हैं, लेकिन यह एक धारा नहीं है, वे कच्चे (वीडियो/ऑडियो) फ्रेम हैं! – debracey

3

आप शायद एक ParcelFileDescriptor में रुचि रखते हैं, और उसके बाद विशेष रूप से fromDatagramSocket(...) समारोह है, तो आप getFileDescriptor समारोह इस्तेमाल कर सकते हैं खिलाड़ी

* अद्यतन के डेटा स्रोत सेट करने के लिए : यदि आपके पास एंड्रॉइड 4.0 या उच्चतर है तो यह केवल काम करता है: एपीआई सीमा