2013-04-28 17 views
9

मैं एक परियोजना जहाँ मैंएंड्रॉयड - मैं में इस लाने के लिए कर रहा हूँ - mp4 फाइल करने के लिए एक RTSP (h264) धारा

  1. करने की जरूरत है एक IPCamera से पढ़ें इनपुट 264 इनकोडिंग धारा पर काम कर रहा हूँ सहेजें //192.168.1.83: RTSP की तरह एक RTSP uRL के माध्यम से 8001/

  2. प्रदर्शन IPCamera धारा - यह मैं


का उपयोग कर ऐसा करने में सक्षम हूँ
  1. अब मैं एक MP4 फ़ाइल को यह धारा रिकॉर्ड करना चाहते हैं। यह वह जगह है जहां मैं फंस गया हूं और मैं निम्नलिखित विकल्पों पर विचार कर रहा हूं

ए) मीडियाआरकॉर्डर - मेरी Google खोजों के आधार पर मैं इस वर्ग के लिए विश्वास करता हूं कि इनपुट केवल डिवाइस कैमरे से ही हो सकता है। क्या इस पर ट्विक करने का कोई तरीका है जहां मैं आरटीएसपी स्ट्रीम से इनपुट प्रदान कर सकता हूं?

बी) मीडियाकोडेक एपीआई - 4.1 इसके बाद एंड्रॉइड ने इस निम्न स्तर के एपीआई और मीडिया एक्स्ट्रेक्टर और मीडियाकोडेक को जारी किया है। इस विकल्प के लिए मैं एक RTSP धारा निम्नलिखित स्निपेट में नहीं किया जा सकता

final String STREAM_URL = "rtsp://192.168.1.83:8001/"; 
MediaExtractor mediaExtractor = new MediaExtractor(); 
mediaExtractor.setDataSource(STREAM_URL); // I get an exception 04-28 18:30:18.914: E/AndroidRuntime(8140): Caused by: java.io.IOException: Failed to instantiate extractor. 

ग) मैं यूआरएल से पढ़ने करते हैं और एक फाइल है जैसे कि यह स्टोर कर सकते हैं लगता है। मैं इस स्ट्रीम को MP4 फ़ाइल में कैसे परिवर्तित करूं? कोई भी कोड स्निपेट वास्तव में सहायक होगा।

मैंने एफएफएमपीईजी का उपयोग करने की भी कोशिश की थी लेकिन प्रदर्शन इतना खराब था कि मैंने इस विकल्प को छोड़ दिया।

उपर्युक्त तीन विकल्पों या किसी अन्य अतिरिक्त विकल्प पर कोई भी इनपुट जो मैं विचार कर सकता हूं उसकी सराहना की जाएगी।

धन्यवाद !!

+0

क्या आप एक साथ फ़ाइल में प्रदर्शित और रिकॉर्ड करना चाहते हैं? – Ganesh

+0

हां, मैं एक साथ प्रदर्शित और रिकॉर्ड करना चाहता हूं। मैं प्रदर्शन भाग का प्रबंधन करने में सक्षम हूं, लेकिन भाग रिकॉर्डिंग वह जगह है जहां मैं फंस गया हूं। – maxkart

+0

@maxkart क्या आपको अपनी समस्या के लिए कोई समाधान मिला है, मुझे आपकी समस्या है जैसे आपके पास यदि आपको कोई समाधान मिला तो विवरण में अपने प्रश्न का उत्तर दें। यदि आप करते हैं तो मैं सराहना करता हूं .. उन्नत –

उत्तर

1

यह सच है कि MediaRecorder प्रत्यक्ष स्ट्रीमिंग सामग्री को संभालने के लिए कोई समर्थन नहीं है। ढांचे के परिप्रेक्ष्य से, MediaExtractor और कोडेक ऑब्जेक्ट्स जैसे MediaCodec जैसे पार्सर ऑब्जेक्ट्स हैं, लेकिन लेखक abstractions (अभी तक) नहीं हैं।

AOSP में, recordVideo एक सरल फ़ाइल आधारित रिकॉर्डिंग के लिए एक कमांड लाइन उपयोगिता है। कार्यान्वयन के हिस्से के रूप में, एक एन्कोडर बनाया गया है और MPEG4Writer पर here देखा गया है। आप संभावित रूप से इस कोड का पुन: उपयोग कर सकते हैं और आने वाली स्ट्रीम को सीधे फ़ाइल में लिखने का प्रयास कर सकते हैं।

इसके लिए आप अपने स्ट्रीमिंग इनपुट को MediaSource के रूप में मॉडल कर सकते हैं और इसे सीधे लेखक को पास कर सकते हैं। आपको स्ट्रीमिंग स्रोत से कुछ मूल metaData सेट करना होगा और इसे डाउनस्ट्रीम लेखक को पास करना होगा। यदि आप इनपुट स्रोत को सीधे मॉडल कर सकते हैं, तो आपको एक नया MediaRecorder बनाने की आवश्यकता नहीं हो सकती है।

+0

गणेश - आपकी प्रतिक्रिया के लिए धन्यवाद। क्या आप सुझाव दे रहे हैं कि एक जेएनआई कोड लिखा जा सकता है जहां मैं MPEG4Writer का उपयोग करता हूं? मैं भी सोच रहा था कि क्या मैं फ़ाइल पास करके सीधे रिकॉर्ड वीडियो उपयोगिता का उपयोग कर सकता हूं। क्या आप मुझे रिकॉर्ड वीडियो पर किसी भी अन्य दस्तावेज के लिए इंगित कर सकते हैं? धन्यवाद – maxkart

+0

@maxkart .. हाँ, आप 'एमपीईजी 4Witer' ऑब्जेक्ट का समर्थन करने के लिए जेएनआई कोड को संशोधित करने पर विचार कर सकते हैं। वर्तमान 'रिकॉर्ड वीडियो' उपयोगिता फ़ाइल इनपुट का समर्थन नहीं करती है, लेकिन एक डमी स्रोत है। हालांकि, इसे फ़ाइल स्रोत का समर्थन करने के लिए आसानी से बढ़ाया जा सकता है, फ़ाइल से 'वाईयूवी' फ्रेम पढ़ने के लिए, उसे एन्कोड करें और 'mp4' फ़ाइल में स्टोर करें। – Ganesh

0

यहां पर एक ही समस्या है। एफएफएमपीजी समस्या हल करता है और मेरे लिए बहुत ही कुशल लगता है लेकिन यह हार्डवेयर निर्भर है, इसे प्रत्येक डिवाइस के सीपीयू के विशिष्ट बांह संस्करण के लिए संकलित करने की आवश्यकता है।

एक अन्य दृष्टिकोण jcodec (http://jcodec.org/) लेकिन अभी तक यह पता नहीं लगा है कि इसके साथ एक आरटीएसपी स्ट्रीम कैसे सहेजना है। यह पूरी तरह से जावा पुस्तकालय है, लेकिन इसमें बहुत अधिक दस्तावेज उपलब्ध नहीं हैं।

कृपया मुझे बताएं कि क्या आप इसे करने का एक तरीका समझते हैं।

+0

दुर्भाग्य से नहीं !! मैं रिकॉर्डिंग बिट प्राप्त करने में सक्षम नहीं था। – maxkart

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