2011-03-01 25 views
9

का उपयोग करके स्ट्रीम करने के लिए Android MediaRecorder setOutPutFile() मैं एक एंड्रॉइड ऐप विकसित कर रहा हूं जो एसडी कार्ड पर संग्रहीत किए बिना मेरे नेटवर्क पर स्थानीय सर्वर पर वीडियो स्ट्रीम करने में सक्षम होना चाहिए।सॉकेट

इस मुझे लगता है कि विशिष्ट IP को सुनता है सी # में सरल सॉकेट आवेदन बना दिया है के लिए: सॉकेट का उपयोग कर पोर्ट: पोर्ट

एंड्रॉयड भाग पर, मैं इस आईपी को setOutputFile() निर्धारित किया था।

यह एप्लिकेशन एंड्रॉइड फोन पर पूरी तरह से शुरू होता है लेकिन यह पूर्वावलोकन प्रदर्शित नहीं करता है और जब मैं रिकॉर्डिंग शुरू करता हूं तो यह बिना किसी अपवाद के बाहर निकलता है। यह नेटवर्क पर कोई डेटा स्ट्रीम भी नहीं भेजता है।

जब मैं setOutPutFile() एसडी कार्ड में सेट करता हूं, तो यह पूरी तरह से काम करता है और वीडियो रिकॉर्ड भी करता है।

सर्वर भाग के लिए, जब मैं किसी अन्य ऐप से (पीसी से) एक ही आईपी से डेटा भेजता हूं: पोर्ट, यह डेटा प्राप्त करता है।

संक्षेप में, मैं स्ट्रीमिंग के लिए सॉकेट का उपयोग कर पीसी और एंड्रॉइड के बीच संचार चैनल स्थापित करना चाहता हूं।

socketForServer = new TcpClient("192.168.1.3", 8210); 
NetworkStream networkStream = socketForServer.GetStream(); 
byte[] rData = new byte[1024]; 
networkStream.Read(rData, 0, 1024); 
... 
... 
// process rData 
... 
... 

मैं इस समस्या को समझने में सक्षम नहीं कर रहा हूँ:

Socket soc=new Socket("192.168.1.3",8210); 
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(soc); 
... 
... 
// other Recorder setup steps 
... 
... 
Recorder.setOutputFile(pfd.getFileDescriptor()); // working fine for sdcard 
Recorder.setPreviewDisplay(holder.getSurface()); 
Recorder.prepare(); 

यहाँ सी # में है और पीसी पर चलता है कि अपने सर्वर अनुप्रयोग है:

यहाँ मेरी एंड्रॉयड कोड है यह यहाँ हो रहा है। क्या मैं सही दिशा में जा रहा हूं?

+0

हैलो विनोद, आप एंड्रॉयड एप्लिकेशन के स्रोत कोड जारी कर सकता है? मैं वही काम करने की कोशिश करता हूं, लेकिन वीडियो फ्रीज करता है, और मुझे नहीं पता क्यों ... धन्यवाद। – Rob

+0

हाय, क्षमा करें, मैं कोड को जारी नहीं कर सकता क्योंकि यह एक वाणिज्यिक परियोजना से है। अगर आप मुझे अपना कोड भेज सकते हैं, तो मैं इस मुद्दे को ठीक करने की कोशिश करूंगा। धन्यवाद –

+0

मैं मूल रूप से आपके जैसा ही काम करता हूं, लेकिन मैं प्रारूप पर संघर्ष कर रहा हूं ... मुझे कुछ मिलता है, लेकिन अच्छे हेडर के बिना मुझे लगता है। मेरी समस्या वास्तव में यहां वर्णित है (http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system) लेकिन मुझे नहीं पता कि कैसे से निपटें। क्या आप बस उस छोटे से हिस्से को दिखा सकते हैं? धन्यवाद। – Rob

उत्तर

5

मेरे सर्वर कोड में समस्या थी।

मुझे TcpClient के स्थान पर TcpListener का उपयोग करना पड़ा।

सही कोड के बाद किया जाता है:

TcpListener listener = new TcpListener(ipAddress, 8210); 
Socket s = listener.AcceptSocket(); 
NetworkStream ns = new NetworkStream(s); 
. 
. 
. 
//reading the data from stream 
. 
. 
. 
+1

हाय विनोद, मैं वही करने की कोशिश कर रहा हूं लेकिन .NET सर्वर पक्ष मेरे मामले में ठीक काम नहीं कर रहा है, आपके कामकाजी कोड को पाने का कोई मौका है? – Giuseppe

+0

@Giuseppe कोड अब एक आईपी है इसलिए मैं कोड साझा नहीं कर सकता लेकिन यदि आप अपनी समस्या का विस्तार कर सकते हैं तो मैं मदद कर सकता हूं। –

+1

तो, आप सॉकेट के माध्यम से पीएफडी -> एफडी के साथ एंड्रॉइड मीडियाप्लेयर से स्ट्रीम करने में सक्षम हैं? – ChiefTwoPencils