2010-10-27 17 views
9

हम्म के माध्यम से रोबोट द्वारा भेजी गई छवियों से सर्वर (पीसी) पर लाइव वीडियो स्ट्रीम।यूडीपी

http://sourceforge.net/projects/mjpg-streamer/


ठीक है: मैं जो आशाजनक लगता है यह मिल गया। मैं यह बताने की कोशिश करूंगा कि मैं स्पष्ट रूप से और बहुत विस्तार से क्या करने की कोशिश कर रहा हूं।

मेरे पास कैमरा और वाईफ़ाई स्टिक (this is the robot) के साथ एक छोटा humanoid रोबोट है। रोबोट की वाईफाई स्टिक औसत वाईफाई स्थानांतरण दर 1769 केबी/एस है। रोबोट में 500 मेगाहट्र्ज सीपीयू और 256 एमबी रैम है, इसलिए यह किसी भी गंभीर गणना के लिए पर्याप्त नहीं है (इसके अलावा गति, दृष्टि, सोनार, भाषण इत्यादि के लिए रोबोट पर चल रहे कुछ मॉड्यूल पहले से ही हैं)।

मेरे पास एक पीसी है जिसमें से मैं रोबोट को नियंत्रित करता हूं। मैं रोबोट कमरे के चारों ओर घूमने की कोशिश कर रहा हूं और पीसी में रोबोट को क्या देखता है उसका लाइव स्ट्रीम वीडियो देख रहा हूं।

जो मैं पहले से ही काम कर रहा हूं। रोबोट चल रहा है क्योंकि मैं उसे करना चाहता हूं और कैमरे के साथ छवियां लेना चाहता हूं। छवियों को पीसी पर यूडीपी प्रोटोकॉल के माध्यम से भेजा जा रहा है जहां मैं उन्हें प्राप्त कर रहा हूं (मैंने डिस्क पर आने वाली छवियों को सहेजकर इसे सत्यापित किया है)।

कैमरा छवियों को वापस करता है जो YUV442 रंगस्थान में 640 x 480 पीएक्स हैं। मैं छवियों को हानिकारक संपीड़न (जेपीईजी) के साथ भेज रहा हूं क्योंकि मैं पीसी पर सबसे अच्छा संभव एफपीएस प्राप्त करने की कोशिश कर रहा हूं। मैं पीआईएल पुस्तकालय के साथ रोबोट पर जेपीईजी को संपीड़न कर रहा हूं।

मेरे सवालों का:

  1. किसी ने मुझसे कैसे लाइव वीडियो स्ट्रीम को भेजे JPEG चित्रों में परिवर्तित करने के बारे में कुछ विचार दे सकते हैं? मैं समझता हूं कि इसके लिए मुझे कुछ वीडियो एन्कोडर की आवश्यकता होगी। आप कौन सी वीडियो एन्कोडर की सिफारिश करते हैं? एफएफएमपीईजी या कुछ और? मैं वीडियो स्ट्रीमिंग के लिए बहुत नया हूं इसलिए मैं जानना चाहता हूं कि इस कार्य के लिए सबसे अच्छा क्या है। मैं इसे लिखने के लिए पायथन का उपयोग करना पसंद करूंगा, इसलिए मैं कुछ वीडियो एन्कोडर या लाइब्रेरी पसंद करूंगा जिसमें पाइथन एपीआई है। लेकिन मुझे लगता है कि पुस्तकालय में कुछ अच्छी कमांड लाइन एपीआई है, इसे पायथन में नहीं होना चाहिए।

  2. इससे सबसे अच्छा एफपीएस क्या प्राप्त हो सकता है? 1769 केबी/औसत औसत वाईफाई स्थानांतरण दर और छवियों के आयामों को देखते हुए? क्या मुझे जेपीईजी की तुलना में अलग संपीड़न का उपयोग करना चाहिए?

  3. मुझे कोई कोड उदाहरण देखने में खुशी होगी। यह कैसे करना है यह समझाने वाले लेखों के लिंक भी ठीक होंगे।

कुछ कोड नमूने। यहां बताया गया है कि मैं रोबोट से पीसी तक जेपीईजी छवियां कैसे भेज रहा हूं (संक्षिप्त सरलीकृत स्निपेट)। यह रोबोट पर चलता है:

# lots of code here 

UDPSock = socket(AF_INET,SOCK_DGRAM) 

    while 1: 
    image = camProxy.getImageLocal(nameId) 
    size = (image[0], image[1]) 
    data = image[6] 
    im = Image.fromstring("YCbCr", size, data) 
    s = StringIO.StringIO() 
    im.save(s, "JPEG") 

    UDPSock.sendto(s.getvalue(), addr) 

    camProxy.releaseImage(nameId) 

    UDPSock.close() 

    # lots of code here 

यहां बताया गया है कि मैं पीसी पर छवियां कैसे प्राप्त कर रहा हूं। यह पीसी पर चलता है:

# lots of code here 

    UDPSock = socket(AF_INET,SOCK_DGRAM) 
    UDPSock.bind(addr) 

    while 1: 
    data, addr = UDPSock.recvfrom(buf) 
    # here I need to create a stream from the data 
    # which contains JPEG image 

    UDPSock.close() 

    # lots of code here 
+0

कैमरा स्वयं जेपीईजी वापस नहीं कर रहा है, वहां कुछ कोडेक में एक वीडियो स्ट्रीम पहले से ही एन्कोड किया गया है। अन्य कोड होना चाहिए जो उस स्ट्रीम से एक फ्रेम खींचता है, हां? यदि ऐसा है, तो क्या आप कैमरे से कच्ची धारा प्राप्त करने और इसे भेजने पर ध्यान केंद्रित कर सकते हैं? मुझे संदेह है कि आपके पास पर्याप्त बैंडविड्थ से अधिक होगा। – Brad

+0

@ ब्रैड कैमरा बिना किसी संपीड़न के कच्चे बाइनरी छवियों को लौटाता है। अगर मैं उन्हें जेपीईजी में परिवर्तित करता हूं, तो वे बहुत छोटे होते हैं। वह बैंडविड्थ बचाता है, नहीं? –

+0

@ ब्रैड यह कैमरे से किसी भी संपीड़न/परिवर्तन के बिना कच्चे आउटपुट का उदाहरण है: http://richardknop.com/log.txt –

उत्तर

1

अपना पहला प्रश्न देखें। हालांकि यहां समाधान चित्रों के एक गैर-स्ट्रीमिंग सेट का उपयोग करता है। यह मदद कर सकता है। उदाहरण pyMedia का उपयोग करता है।

आप क्या चाहते हैं की तर्ज पर कुछ।

आप एक एक बाइनरी धारा संपादित करने के लिए की जरूरत है, तो:

+0

पायमडिया नवीनतम रिलीज 2006 में था और ऐसा लगता है कि इसे वर्षों से बनाए रखा नहीं गया है। मैं इससे दूर रहूंगा। मैं अन्य लिंक पर एक नज़र डालेगा। –

1

प्रयास करें pyffmpeg और बेहतरीन प्रदर्शन के लिए प्रत्येक उपलब्ध कोडेक का परीक्षण करें। आपको शायद बहुत हल्के कोडेक की आवश्यकता है जैसे धुआं या कम प्रोफ़ाइल एच 263 या x264, और आपको शायद संकल्प को 320x240 पर छोड़ना होगा।

आपके पास वीडियो एन्कोडिंग और डिकोडिंग और बैंडविड्थ की विलंबता के बीच एक व्यापार बंद है, तो आप त्वरित दृश्य विश्लेषण के लिए कच्चे पैकेट के साथ 160x120 तक गिर सकते हैं और केवल समय-समय पर पूर्ण फ्रेम प्रसारित कर सकते हैं। आप एक उच्च संपीड़ित, उच्च विलंबता, उच्च संकल्प, कम अद्यतन फ़ीड के साथ एक कच्चे, कम विलंबता, कम संकल्प, उच्च अद्यतन फ़ीड भी मिश्रण कर सकते हैं।

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