2011-09-29 8 views
5

मैंने इस छोटे कार्यक्रम को बनाने के लिए एफ़ोर लाइब्रेरी का उपयोग किया है, जो एक वेबकैम से एक पिक्चरबॉक्स में लाइव फीड दिखाता है।सी # में आईपी कैमरा स्ट्रीम कैसे प्राप्त करें?

private FilterInfoCollection VideoCaptureDevices; 
private VideoCaptureDevice FinalVideoDevice; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); 
    try 
    { 
     foreach (FilterInfo VidCapDev in VideoCaptureDevices) 
     { 
     comboBox1.Items.Add(VidCapDev.Name); 
     comboBox1.SelectedIndex = 0; 
     } 
     FinalVideoDevice = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString); 
     FinalVideoDevice.NewFrame += new NewFrameEventHandler(FinalVideoDevice_NewFrame); 
     FinalVideoDevice.Start(); 
    } 
    catch 
    { 
     MessageBox.Show("No camera found. Please connect your camera and click RESET."); 
    } 
} 

     ////////////////////////////////////////////////////////////////////////////////////////// 

void FinalVideoDevice_NewFrame(object sender, NewFrameEventArgs e) 
{ 
    try 
    { 
     pictureBox1.Image = (Bitmap)e.Frame.Clone(); 
    } 
    catch { } 
} 

लेकिन मुझे आईपी कैमरे से स्ट्रीम प्राप्त करने की भी आवश्यकता है। कोई विचार यह प्राप्त करने का सबसे अच्छा तरीका क्या होगा?

उत्तर

2

आईपी कैमरों में विंडोज़ में विशिष्ट मीडिया इंटरफेस/एपीआई नहीं हैं, वे सिर्फ लैन पर डिवाइस हैं। इसके अलावा सैकड़ों और हजारों मॉडल भी हैं और वे आम पहुंच इंटरफेस साझा नहीं करते हैं (यहां तक ​​कि करीब)।

तो सबसे पहले, आपको अपनी रुचि के मॉडल के बारे में विशिष्ट होना चाहिए।

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

अगला मौका यह है कि कैमरा एक प्रसिद्ध स्ट्रीमिंग प्रोटोकॉल लागू करता है, इस मामले में कुछ सामान्य चालक भी ठीक काम कर सकते हैं।

या, जब तक आप सी # लड़के हैं, आप आईपी कैमरे के HTTP/CGI एपीआई की जांच कर सकते हैं और डिवाइस में HTTP/टीसीपी/यूडीपी कनेक्शन पर डेटा भेजने, प्राप्त करने और प्राप्त करने के लिए कोड में स्ट्रीमिंग लागू कर सकते हैं।

2

मैंने एक बार directShow.net library के साथ काम किया। यह आपको डायरेक्टशो के अधिकांश कार्यों तक पहुंच प्रदान करता है और उनमें से एक कैप्चरिंग कर रहा है। यदि आप डायरेक्टशो के साथ आईपी वेबकैम का उपयोग कर सकते हैं तो आप इसे अपने प्रोग्राम में भी इस्तेमाल कर सकते हैं।

+0

+1 की शुभकामना के रूप में मैं वाणिज्यिक सॉफ्टवेयर है कि कैप्चर डिवाइस के सभी प्रकार संभालती में इसका इस्तेमाल करते हैं - वेबकैम उन के बीच में किया जा रहा है। –

12

ही AForge.net से MJPEGStream के साथ हल :)

MJPEGStream stream = new MJPEGStream("http://192.168.2.5:8080/videofeed"); 
      stream.NewFrame += new NewFrameEventHandler(video_NewFrame); 
      stream.Start(); 
+4

क्या आप स्ट्रीम को पिक्चरबॉक्स नियंत्रण में प्रदर्शित करते हैं? –

2

एक ही समस्या आप की तरह मेरे साथ था, और कहा कि विकास या ग # का उपयोग कर आईपी कैमरा समाधान अनुकूलित करने के लिए अपने अंतिम वर्ष की परियोजना थी। लेकिन मैंने सी # में लिखे गए कोड का कोई भी टुकड़ा पाने के लिए ब्राउजिंग करके अपना समय बर्बाद कर दिया जो आसानी से आईपी कैमरा स्ट्रीम तक पहुंच सकता है, और मुझे बहुत जल्द तीसरी पार्टी ओजेकी एसडीके मिली। लेकिन यह एक सप्ताह के करीब परीक्षण और समाप्ति है और काम भी नहीं करेगा। या शायद ओजेकी अपनी साइट के लिए बैकलिंक्स चाहता है। सबसे पहले आपको कैमरे में से किसी एक को चुनने के लिए खुद को सीमित करना होगा। मेरे मामले में मेरे पास एक हाइविजन नेटवर्क कैमरा है। बस यहां से Hikvision कैमरा के लिए डिवाइस नेटवर्क एसडीके डाउनलोड: http://www.hikvision.com/en/us/download_more.asp?id=1482

यह निकालें और आप एसडीके फ़ोल्डर, 4 उप फ़ोल्डर में पाए गए हो सकते हैं। "डॉक्टर" फ़ोल्डर के अंदर, आपको "डिवाइस नेटवर्क एसडीके प्रोग्रामिंग मैनुअल" मिलेगा इसे खोलें और "प्रोग्रामिंग दिशानिर्देश" पेड़ का विस्तार करें। मुख्य प्रक्रिया API संदर्भ या पूर्वावलोकन मॉड्यूल प्रक्रिया पर क्लिक करें। यहां आपको सभी सड़क मिल जाएगी नक्शा से लाइव स्ट्रीम प्राप्त करने के लिए कार्यों को कॉल करने के लिए आपको क्या कदम उठाने होंगे। सभी कार्यों की घोषणा "बेसिक इंटरफेस परिभाषा" पेड़ के अंदर है और इसे एक-एक करके पढ़ें। गेम यहां खत्म नहीं हुआ है लेकिन अभी शुरू हुआ है; सभी कार्यों के साथ एसडीके सी/सी ++ अप्रबंधित कोड बेस में लिखा गया है। और एक मंगल सी # परियोजना समाधान संदर्भ में जोड़ा नहीं जा सकता है। इसलिए आपको उन सभी के लिए एक रैपर बनाना है जो कैमरे से स्ट्रीम प्राप्त करने में उपयोग करते हैं, और उन्हें सी # से कॉल करें। बस दस्तावेज़ मैनुअल के माध्यम से जाएं कि वे क्या कार्य करते हैं। चहचहाना पर मुझे का पालन करें: https://twitter.com/CodingVampire आप किस्मत

+0

आपने एक पठनीय एसडीके दस्तावेज कैसे प्राप्त किया? – sivabudh

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