2015-10-26 10 views
9

मेरे पास सीपीपी में ओपनसीवी एप्लीकेशन है।ओपनसीवी आईपी कैमरा एप्लिकेशन क्रैश [एच 264 @ 0xxxxx] एक्सेस यूनिट में गायब तस्वीर

यह वीडियो स्ट्रीम को कैप्चर करता है और इसे ओपनसीवी से सरल संरचनाओं के साथ वीडियो फ़ाइलों में सहेजता है।

यह मेरे वेबकैम के साथ पूरी तरह से काम करता है।

लेकिन, यह लगभग दस सेकंड के बाद शायद दुर्घटनाग्रस्त हो जाता है, जबकि मैं इसे आईपी कैमरा से स्ट्रीम कैप्चर करने के लिए चलाता हूं।

मेरे संकलन आदेश है:

g++ -O3 IP_Camera_linux.cpp -o IP_Camera `pkg-config --cflags --libs opencv` 

आईपी कैमरा से मेरे स्ट्रीम इस तरह से पहुंचा जाता है:

const string Stream = "rtsp://admin:[email protected]/"; 

यह पूरी तरह से चलती है, वीडियो से पता चलता और प्रदर्शित वीडियो फ्रीज़ और जब तक यह बचाता है आवेदन दुर्घटनाग्रस्त जबकि टर्मिनल पर त्रुटि संदेश है:

[h264 @ 0x15e6f60] error while decoding MB 59 31, bytestream (-20) 
[h264 @ 0x15e8200] error while decoding MB 61 27, bytestream (-3) 
[h264 @ 0x109c880] missing picture in access unit 
[h264 @ 0x109c000] no frame! 

मेरी समझ, मुट्ठी ऊपर त्रुटि संदेश में दो लाइनें कुछ करने के लिए हो सकता है, लेकिन वास्तव में आवेदन क्रैश नहीं होता है। आखिरी दो पंक्तियां शायद कारण या कारण हैं?

कोई मदद?

+0

निम्नलिखित [आरटीएसपी यूपीडी बनाम टीसीपी] देखें (http://answers.opencv.org/question/34012/ip-camera-h264-error-while-decoding/) – Pim

+0

अच्छी तरह से जो वास्तव में हल हो सकता है मुख्य मुद्दा नहीं, अच्छा! बीटीडब्ल्यू, कोई स्वीकार्य उत्तर नहीं है, अभी तक एक बहस प्रतीत होती है। – tod

+0

क्या हम आपकी सीपीपी फाइल देख सकते हैं? या कैमरे की स्ट्रीम तक पहुंचने के तरीके पर कुछ कोड स्निपेट? – Manny

उत्तर

3

बहुत सारे हिट और परीक्षण के बाद समाधान मिला। बस थोड़ा सा पता बदल दिया और यह काम किया।

से:

const string Stream = "rtsp://admin:[email protected]/"; 

करने के लिए:

const string Stream = "rtsp://admin:[email protected]/ch1-s1?tcp"; 

कोई विचार है, क्या परिवर्तन यह किया?

लेकिन यह पूरी तरह से काम करता है !!!

भी फार्म की व्यापक चेतावनी:

[h264 @ 0x15e6f60] error while decoding MB 59 31, bytestream (-20) 
[h264 @ 0x15e8200] error while decoding MB 61 27, bytestream (-3) 

चले गए हैं।

कोई भी सराहना करेगा अगर कोई इसे तर्कसंगत कारण के साथ समझा सकता है।

CREDIT

-1

the original answer करने के लिए एक प्रशस्ति पत्र के रूप में, जोड़ने? टीसीपी अंत करने के लिए UDP प्रोटोकॉल है, जो उपयोगी है जब आप सक्रिय रूप से किसी के लिए जांच नहीं करते की टीसीपी प्रोटोकॉल का उपयोग कर चलाने के लिए बजाय RTSP कनेक्शन बलों कनेक्शन समस्या और इसलिए आप कोई पैकेट नुकसान नहीं ले सकते हैं।

मजबूत के लिए आप आप पाश में शून्य छवि के लिए जाँच कर सकते हैं और अगर आप एक शून्य छवि मिलता है, आप कैमरा कनेक्शन रीसेट कर सकते हैं चल रहा है:

IplImage *img = cvQueryFrame(camera); 
     if (img == NULL) { 
      printf("img == null "); 
      fflush(stdout); 
      camera = cvCreateFileCapture("rtsp://admin:[email protected]/ch1-s1?tcp"); 
     } 
+0

कनेक्शन को पुनरारंभ करने से स्ट्रीम भयानक हो जाती है। – tod

0

यह ffmpeg से कोई त्रुटि है। शायद आपका ffmpeg पुराना संस्करण है और आप इसे अपडेट करना चाहेंगे।

  • नवीनतम ffmpeg स्थापित

    git clone git://source.ffmpeg.org/ffmpeg.git 
    cd ffmpeg 
    ./configure --enable-shared --disable-static 
    make 
    sudo make install 
    
  • नवीनतम opencv

    git clone [email protected]:opencv/opencv.git 
    cd opencv 
    mkdir build 
    cd build 
    cmake ../ -DCMAKE_BUILD_TYPE=Release 
    make 
    sudo make install 
    
    स्थापित करें: यह समस्या इस प्रकार नवीनतम opencv और ffmpeg फिर से स्थापित करने से मेरे मामले के लिए पूरी तरह से हल
संबंधित मुद्दे