2011-03-13 14 views
14

के बीच लाइव वीडियो स्ट्रीम मैं वर्तमान में दो एंड्रॉइड फोन के बीच वीडियो स्ट्रीमिंग पर काम कर रहा हूं। मैंने एक ऐसा एप्लीकेशन लिखा जो वीडियो को एसडी फ़ाइल (MediaRecorder का उपयोग करके) में रिकॉर्ड करने में सक्षम है; और मैंने एक और एप्लीकेशन लिखा जो फ़ाइल के वीडियो को प्रदर्शित करने में सक्षम है। दोनों अनुप्रयोग पूरी तरह से काम करते हैं।दो एंड्रॉइड फोन

मुझे निम्नलिखित वेबसाइट में "स्थानीय फ़ाइलों को लिखने के बिना एंड्रॉइड के साथ वीडियो प्रसारण" के बारे में एक वेबसाइट मिली। यह वही है जो मैं करना चाहता था।

http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system

मैं अपने कोड को संशोधित किया।

वीडियो रिकॉर्डर के लिए, यह है:

socket=severSocket.accept(); 
ParcelFileDescriptor=pfd; 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); 
recorder.setVideoFrameRate(15); 
recorder.setVideoSize(320, 240); 
recorder.setPreviewDisplay(holder.getSurface()); 
pfd = ParcelFileDescriptor.fromSocket(socket); 
recorder.setOutputFile(pfd.getFileDescriptor()); 
recorder.prepare(); 
recorder.start(); 

वीडियो प्लेयर के लिए:

mMediaPlayer.setDataSource(pfd.getFileDescriptor()); MediaPlayer पर पर
Socket socket = new Socket(IP,PORT); 
mMediaPlayer = new MediaPlayer(); 
pfd = ParcelFileDescriptor.fromSocket(socket); 
mMediaPlayer.setDataSource(pfd.getFileDescriptor()); // <-- here is the problem 
mMediaPlayer.setDisplay(holder); 
mMediaPlayer.prepare(); 
mMediaPlayer.setOnBufferingUpdateListener(this);    
mMediaPlayer.setOnCompletionListener(this);    
mMediaPlayer.setOnPreparedListener(this);    
mMediaPlayer.setOnVideoSizeChangedListener(this); 
mMediaPlayer.start(); 

कार्यक्रम को कुचलने मैं जानता हूँ कि मैं सेटअप डेटा स्रोत को सही ढंग से फ्लॉप। MediaPlayer में डालने के लिए पार्सलफ़ाइलडिस्क्रिप्टर के लिए अतिरिक्त सेटअप होना चाहिए।

क्या किसी को पता है कि मीडियाप्लेयर के लिए पार्सलफ़ाइलडिस्क्रिप्टर का उपयोग कैसे करें? किसी भी उपयोगी सलाह या सुझाव के अच्छा होगा ......

धन्यवाद

+0

के बजाय

mMediaplayer.prepareAsync(); 

का उपयोग आप यह काम कर रहा मिला होगा? – B770

+1

क्या यह आपके लिए काम कर रहा है? अगर यह काम कर रहा है, तो कृपया मुझे बताएं कि इस समस्या को कैसे हल किया जाए। – Aravi

+0

मुझे यह जानना अच्छा लगेगा कि आपने यह भी पता लगाया है या नहीं। मेरे पास बिल्कुल वही समस्या है और नीचे दिए गए उत्तर – steveh

उत्तर

1

एंड्रॉयड देशी रूप एंड्रॉयड 2.1 या नीचे में वीडियो स्ट्रीमिंग का समर्थन नहीं करता होगा। हमने फ्रेम द्वारा छवियों को फ्रेम प्राप्त करने के लिए क्या किया था; और प्रत्येक लौ को BYTE [] में विभाजित करें और Socket कक्षा का उपयोग करके भेजें। और रिसीवर की तरफ, हम BYTE[] डेटा प्राप्त करके छवियों का पुनर्निर्माण करते हैं।

+1

की सहायता नहीं करते हैं क्या आप हमें कुछ नमूना कोड दिखा सकते हैं? –

4
वीडियो खेल पक्ष में

आप एक स्वागत योग्य सॉकेट

ServerSocket welcomeSocket = new ServerSocket(portNumber); 
socket soc = welcomeSocket.accept(); 

बना सकते हैं और

mMediaplayer.prepare(); 
+0

हाय, ऐसा लगता है कि आप केवल पोर्ट नंबर सेट करते हैं, मेजबान आईपी पते के बारे में कैसे? –

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