IP कैमरा और स्टोर से RTSP स्ट्रीम कैप्चर करें


18

मुझे कुछ IP कैमरे मिले हैं जो RTSP (h264 mpeg4) स्ट्रीम को आउटपुट करते हैं।

URL को VLC के माध्यम से स्थानीय रूप से हिट करना: rtsp: //192.168.0.21: 554 / mpeg4

मैं कैमरे को स्ट्रीम कर सकता हूं और डिस्क (अपने डेस्कटॉप पर) को डंप कर सकता हूं। हालाँकि मैं इन फ़ाइलों को अपने NAS (FreeNAS) पर संग्रहीत करना चाहता हूँ। मैं आरटीएसपी स्ट्रीम पर कब्जा करने और उन्हें डिस्क पर डंप करने के तरीकों को देख रहा था लेकिन मुझे कुछ भी नहीं मिल रहा है।

क्या FreeBSD या Linux (RaspberryPi) पर स्ट्रीम को कैप्चर करना और लिनक्स या FreeBSD के लिए डिस्क पर स्ट्रीम की गई सामग्री को डंप करना संभव है - अधिमानतः हर 30 मिनट पर?

EDIT: NAS हेडलेस है (HP N55L या कुछ और) और रास्पबेरीपी हेडलेस भी हैं।

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


लिनक्स के लिए वीएलसी का उपयोग क्यों नहीं किया जाता है?
लैटिनसुद

1
ओह, मैं यह उल्लेख करना भूल गया कि FreeNAS सर्वर और RaspberryPi दोनों ही हेडलेस हैं!

आप कमांड लाइन से VLC का उपयोग कर सकते हैं। तुच्छ नहीं, लेकिन संभव है।
लेटिनस

आरटीएसपी सिर्फ एक प्रोटोकॉल है, क्या यह सिर्फ h264 सामग्री को डंप करेगा या क्या मुझे इसे ट्रांसकोड करने के लिए वीएलसी प्राप्त करना होगा?

1
वैसे यह वीएलसी कमांड लाइन वूडू का हिस्सा है, और क्षमा करें, इसीलिए मैं आपको यहां पूर्ण उत्तर नहीं दे रहा हूं। मुझे लगता है कि पूरी तरह से ट्रांसकोडिंग आवश्यक नहीं है लेकिन शायद कंटेनर को बदल दें। मुझे उम्मीद है कि कुछ VLC विशेषज्ञ यहां पॉप अप करेंगे।
लैटिनसुद

जवाबों:


29

IP कैमरे अलग-अलग गुणवत्ता के हैं, कुछ मेरे अनुभव में गलत व्यवहार कर रहे हैं। उनके आरटीएसपी धाराओं से निपटने के लिए दोष-सहिष्णुता की खुराक की आवश्यकता होती है।

Live555 प्रोजेक्ट CLTS के माध्यम से RTSP ऑडियो / वीडियो स्ट्रीम खींचने के लिए अपेक्षाकृत गलत सहिष्णु RTSP क्लाइंट कार्यान्वयन, OpenRTSP प्रदान करता है: http://www.live555.com/openRTSP/

उदाहरण के लिए, एक कैमरे के आरटीएसपी ऑडियो / वीडियो को क्विकटाइम फॉर्मेट में फाइल (AVI और MP4 भी उपलब्ध) को सेव करने के लिए, एक फाइल को 15 मिनट के लिए रखें:

$ openRTSP -D 1 -c -B 10000000 -b 10000000 -q -Q -F cam_eight -d 28800 -P 900 -t -u admin 123456 rtsp://192.168.1.108:554/11

इन विकल्पों का मतलब है:

-D 1 # Quit if no packets for 1 second or more
-c   # Continuously record, after completion of -d timeframe
-B 10000000 # Input buffer of 10 MB
-b 10000000 # Output buffer 10MB (to file)
-q   # Produce files in QuickTime format
-Q   # Display QOS statistics 
-F cam_eight  # Prefix output filenames with this text
-d 28800      # Run openRTSP this many seconds
-P 900        # Start a new output file every -P seconds
-t            # Request camera end stream over TCP, not UDP
-u admin 123456  # Username and password expected by camera
rtsp://192.168.1.108:554/11  # Camera's RTSP URL

-T विकल्प को हटाने से OpenRTSP के बजाय UDP डिफ़ॉल्ट हो जाता है, जो नेटवर्क ट्रैफ़िक को थोड़ा कम कर सकता है। आपको उस संयोजन को खोजने के लिए विकल्पों के साथ खेलना होगा जो आपको सूट करता है।

सच कहूँ तो, कैमरे खुद कभी-कभी अविश्वसनीय होते हैं, या बस सॉकेट को अप्रत्याशित रूप से बंद करने के लिए अलग - अलग तरह से लागू किया जाता है, यह सब असामान्य नहीं है।

कभी-कभी ओपनआरटीएसपी क्लाइंट इन ग्लिट्स को नहीं पकड़ता है। इसलिए मैंने पायथन में एक नियंत्रक को 'सबप्रोसेस' मॉड्यूल का उपयोग करने और प्रत्येक ओपनआरटीएसपी ग्राहक उदाहरण के स्टडआउट को मॉनिटर करने और मॉनिटर करने का विकल्प चुना है, और यह भी जांचा कि फाइलें आकार में बढ़ रही हैं।

ऐसा प्रतीत होता है कि मानकों के साथ तेज और ढीले खेलने वाले सीसीटीवी उद्योग के कम-अंत के साथ-साथ RTSP और ONVIF दो सबसे अधिक गाली दी जा रही है।

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

मैं कुछ रास्पबेरी पाई B + रनिंग रास्पियन पर OpenRTSP का उपयोग करता हूं। प्रत्येक 1280x1024 स्ट्रीम सीपीयू के समय के 8-10% के आसपास रहती है, और मैं सफलतापूर्वक आरएसआई प्रति आठ कैमरों तक चला रहा हूं, एनएएस स्टोरेज को फाइलें लिख रहा हूं। एक और आरपीआई प्रक्रिया ने ffmpeg के साथ फाइलें पूरी कीं, गति की खोज की और उन फ्रेमों के सूचकांक पीएनजी का उत्पादन किया, जिससे ब्रेक-इन को खोल दिया गया।

ज़ोनमाइंडर नामक एक ओपन-सोर्स प्रयास है जो इस उत्तरार्द्ध को करता है, लेकिन मैं इसे अपने कैमरों के साथ काम करने में असमर्थ था। ONMIF का समर्थन ZM में नया और नवजात है, और यह $ 100 आईपी कैमरों के मेरे menagerie द्वारा निर्मित धब्बेदार RTSP धाराओं के साथ अच्छी तरह से मुकाबला नहीं करता है।


महान समाधान केविन, क्या आप गति खोज / png अनुक्रमण समाधान के साथ अधिक साझा कर सकते हैं - कम से कम आगे कहां खोदना है?
इगोर

@ केविन-प्राइसहार्ड मैं समझना चाहता था, 1. अगर मैं एनालॉग एसडी सीवीएसबी को आईपी स्ट्रीम में परिवर्तित कर सकता हूं तो क्या आपका समाधान काम करेगा? (मैं प्रत्येक स्रोत से 1 घंटे के विखंडू में mp4 वीडियो कैप्चर करना चाहता हूं) और क्या मैं एकल नेटवर्क 24/7 पर 300 ऐसी धाराओं को रिकॉर्ड कर पाऊंगा या क्या यह नेटवर्क को अधिभारित करेगा? 2. क्या एनालॉग एसडी / सीवीएसबी को आईपी स्ट्रीम में परिवर्तित करना संभव है?
CP3O

7

मुझे लगा कि मैं अपने दो सेंट जोड़ूंगा और BjornR के जवाब को पूरक करूंगा।

समय-समय पर वीएलसी प्रक्रिया को मारने के लिए एक क्रॉन नौकरी चलाने के बजाय, कोई वीएलसी को निर्दिष्ट समय के लिए चलाने और बाद में बंद करने के लिए कह सकता है।

यह वह आदेश है जो मैं अपने बॉक्स पर चलाता हूं:

/usr/bin/vlc -vvv rtsp://192.168.1.128:1554/11 --sout=file/ts:/media/path/to/save/location/recording-$(date +"%Y%m%d%H%M%S").ts -I dummy --stop-time=480 vlc://quit

यह निर्दिष्ट समय के लिए VLC चलाता है और बाद में बाहर निकलता है। Vlc: // छोड़ दिया पैरामीटर की आवश्यकता है क्योंकि VLC रिकॉर्डिंग बंद कर देगा और खुला रहेगा। इस कमांड को लूप के अंदर रखा जाना चाहिए।

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


7

यदि मैं आपके प्रश्न का सही ढंग से पालन करता हूं, तो आप लिनक्स सिस्टम (आरपीआई) पर निम्न कमांड की कोशिश क्यों नहीं करते हैं:

ffmpeg -i rtsp://192.168.0.21:554/mpeg4 -vcodec copy -acodec copy -map 0 -f segment -segment_time 300 -segment_format mp4 "ffmpeg_capture-%03d.mp4"

यह वीडियो को 300 सेकंड के विखंडन में सहेजना चाहिए। (ध्यान दें कि क्लिप की लंबाई आपके इनपुट और आउटपुट फ्रेम दर पर निर्भर करेगी)


5

वीएलसी आपकी धारा को संसाधित करने के लिए एक आदर्श उम्मीदवार की तरह दिखता है। एक स्ट्रीम पर कब्जा करने के लिए बुनियादी तरीकों का वर्णन वीडियोलोन वेबसाइट पर किया गया है। मैंने निम्नलिखित कमांड का उपयोग करते हुए अपने डी-लिंक डीसीएस -5222 नेटवर्क कैमरे के उत्पादन को सफलतापूर्वक दर्ज किया:

vlc rtsp://user:password@ip/play1.sdp --sout=file/ogg:mystream.ogv

आपके मामले में, यह स्थानीय रूप से आउटपुट को बचाने के लिए काम कर सकता है:

vlc rtsp://192.168.0.21:554/mpeg4 --sout=file/ts:mystream.mpg

मैं एक स्क्रिप्ट चलाने का सुझाव देता हूं जो इस vlc प्रक्रिया को समाप्त करती है और हर 30 मिनट में एक नया उदाहरण लॉन्च करती है क्योंकि मुझे यकीन नहीं है कि VLC ऐसा करने में सक्षम है।

एक NAS पर भंडारण के लिए, बस इसे अपने स्थानीय फ़ाइल सिस्टम पर माउंट करें।


1
आप ठीक उसी काम को करने के लिए FFMPEG का उपयोग भी कर सकते हैं। आपको सुझाव के अनुसार अपने NAS को माउंट करने की आवश्यकता होगी।
किंक्टस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.