2011-12-14 12 views
7

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

मैं एक RawImage जो स्क्रीनशॉट के डेटा से भर जाता है है:

RawImage mRawImage; 

तक जानता हूँ कि मैं SWT का उपयोग छवि बनाने के लिए और उसे सहेजें: आप

PaletteData paletteData = new PaletteData(
    mRawImage.getRedMask(), 
    mRawImage.getGreenMask(), 
    mRawImage.getBlueMask()); 

ImageData imageData = new ImageData(
    mRawImage.width, 
    mRawImage.height, 
    mRawImage.bpp, 
    paletteData, 
    1, 
    mRawImage.data); 

ImageLoader s = new ImageLoader(); 
s.data = new ImageData[] {imageData}; 
s.save("temp.jpg",SWT.IMAGE_JPEG); 
  • कर सकते हैं उन छवियों अनुक्रम को वीडियो और में परिवर्तित करने का तरीका प्रस्तावित करें, फिर वीडियो स्ट्रीम करें?

मैं NanoHTTPD जो स्ट्रीमिंग के लिए इस्तेमाल किया जा सकता पाया, लेकिन मैं कैसे कन्वर्ट और वीडियो के लिए छवियों को संपीड़ित कर सकते हैं?

  • क्या आपको विश्वास है कि मैं ffmpeg का उपयोग करके ऐसा कर सकता हूं?

मैं FFMPEG और video4linux2 का उपयोग कर अपने वेब कैमरा स्ट्रीमिंग के लिए एक अच्छा Tutorial पाया।

क्या RawImage से को लाइव वीडियो स्ट्रीम में परिवर्तित करने के लिए FFMPEG में भेजना संभव है?

वास्तविक कोड:

$ffmpeg -f video4linux2 -i **<add here java stream>** http://78.47.18.19:8090/cam1.ffm 

कोई सुझाव:

$ffmpeg -f video4linux2 -i /dev/video0 http://78.47.18.19:8090/cam1.ffm 

के लिए इसी तरह कुछ के साथ यह बदलें?

धन्यवाद

पुनश्च: मैं एक समाधान है जो मुझे एक संकुचित वीडियो के लिए छवियों को परिवर्तित करने में मदद करेगा और उसके बाद क्रम उन्हें HTML5 या एक फ़्लैश प्लेयर

के साथ खेलने के लिए नेटवर्क पर वीडियो स्ट्रीम उम्मीद
+0

हाय सलामिस, वह दर क्या है जिस पर आप स्थिर छवि को कैप्चर करेंगे? – Janvo

+0

प्रति सेकंड 5-10 फ्रेम पर्याप्त पर्याप्त होगा। – glarkou

+0

हाय सलामिस, मुझे विश्वास है कि नीचे दिए गए मेरे उत्तर उपरोक्त आपके प्रश्नों का उत्तर देते हैं। आपको यह सुनिश्चित करने की आवश्यकता होगी कि डिवाइस पर कैप्चर आपको वीडियो में एन्कोड करने के लिए प्रति सेकंड पर्याप्त फ्रेम देता है (ffmpeg में देखें -r पैरामीटर)। – Janvo

उत्तर

5

इस दृष्टिकोण के दो तरीके हैं:

1) कब्जा, एनकोड और पर स्ट्रीम करें और स्वयं डिवाइस से

या

2) एक सर्वर

मैं अपने सभी आवश्यकताओं को पता नहीं है, लेकिन मुझे लगता है यह होगा कि विकल्प 2 जाना मार्ग है से डिवाइस, एनकोड और स्ट्रीम पर कैप्चर करें। आपके अंतिम लक्ष्य को पूरा करने के लिए आपके पास बेहतर प्रदर्शन और टूल का विस्तृत सरणी होगा।

कैप्चर जेपीईजी छवियों को लगभग उसी तरह से कैप्चर करें जैसा आप वर्णन करते हैं। प्रत्येक को एक इंडेक्स जोड़ने के अलावा, जिसमें आपके पास FILE1 है। जेपीजी FILE2.JPG FILE3.JPG FILE4.jpg इत्यादि।

अब, कुछ अंतराल पर, आपकी आवश्यकताओं के आधार पर, इन छवियों को सर्वर पर अपलोड करें। इसलिए तरह हानिपूर्ण संपीड़न की दर निर्धारित

एनकोड उपयोग mencode रहे हैं:

mencoder "./*.jpg" -mf fps=5 -o yourvideo.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800

एक बार यह हो जाता है, तो आप ऐसा जैसे MP4 बनाने के लिए ffmpeg का उपयोग कर सकते हैं:

ffmpeg -r 5 -b 1800 -i %01d.jpg yourvideo.mp4 

स्ट्रीमिंग अब नेटवर्क पर एमपी 4 स्ट्रीम करने के लिए, मैं जो एक M3U प्लेलिस्ट जो गतिशील रूप से लिखा है ऐसी है कि वह हमेशा स्ट्रीम करने के लिए सर्वाधिक अद्यतित करने के लिए वीडियो की ओर इशारा करते है अप लोड करता है

http://myserver/androidStream 

: एक वेब की तरह पेज etup। आपके द्वारा उपयोग किए जाने वाले प्लेयर के आधार पर, आप एम 3 यू प्लेलिस्ट को 'अगली' एम 3 यू प्लेलिस्ट पर इंगित करने में सक्षम हो सकते हैं जो अगले वीडियो को लोड करेगा। आप अपनी आवश्यकताओं के आधार पर एएसएक्स या पीएलएस जैसे वैकल्पिक प्लेलिस्ट प्रारूपों को भी देखना चाह सकते हैं।

देखें: http://en.wikipedia.org/wiki/Advanced_Stream_Redirector और http://en.wikipedia.org/wiki/PLS_(file_format) अन्य गैर-एम 3 यू प्लेलिस्ट प्रारूपों के उदाहरण के रूप में।

ऊपर दिए गए सामान्य चरणों का उपयोग करके, आपके पास एक सिस्टम होगा जहां डिवाइस छवियों को प्रति मिनट एन छवियों की दर से कैप्चर कर रहा है और फिर उन छवियों को एन्कोडिंग के लिए सर्वर पर अपलोड कर रहा है। एक बार उन छवियों को एन्कोड किए जाने के बाद, आप या तो फ़ाइल को संदर्भित करके सीधे फिल्म स्ट्रीम कर सकते हैं या आप एक एम 3 यू टाइप प्लेलिस्ट सेट कर सकते हैं जो खिलाड़ी को 'वर्तमान' वीडियो से 'अगली' वीडियो में उपलब्ध होने पर जाने की अनुमति देगा।