Ffmpeg गति के बिना भागों को हटा दें


15

मेरे पास एक आईपी सुरक्षा कैमरा (192.168.0.8) है जो नेटवर्क पर आरटीएसपी सामग्री को प्रसारित करने में सक्षम है।

मैं अपने कंप्यूटर से अगले ffmpeg कमांड का उपयोग किए बिना उस (रॉ) सामग्री को सहेजने में सक्षम हूं:

ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -acodec copy -vcodec copy test-raw.mp4

मैं इसे मक्खी पर आकार देने में भी सक्षम हूँ:

ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -vf  "scale=640:-1" test640.mp4

लेकिन केवल उस वीडियो को कैसे बचाया जाए जिसमें गति का पता लगाने वाले हिस्से ही हों?

मैंने इसे ffmpeg के दृश्य परिवर्तन फ़िल्टर का उपयोग करके हल करने की कोशिश की , लेकिन कोई भाग्य नहीं।

मेरा लक्ष्य - सामान्य वीडियो निगरानी समाधान है, जो यह पता लगाता है कि कोई व्यक्ति कैमरे के पास जा रहा है और इसे वीडियो फ़ाइल में सहेजें। मैं समझता हूं कि धारा से उड़ने पर ऐसा करना संभव नहीं हो सकता है, इसलिए सबसे पहले बड़ी फाइल को सेव करना मेरे लिए ठीक है, फिर इसे दूसरे ffmpeg कमांड से प्रोसेस करें और नई वीडियो फाइल जेनरेट करें जिसमें केवल मोशन डिटेक्ट किए गए पार्ट्स हों। यदि आप मुझे सलाह दे सकते हैं कि मुझे वास्तव में और क्या शोध करना चाहिए, तो मैं वास्तव में आभारी रहूंगा।

मेरी कैमरा स्ट्रीम ध्वनि के बिना प्रसारित होती है। इसलिए, मैं मूल वीडियो से छवियों का सेट उत्पन्न कर सकता हूं, फिर उचित चित्र चुन सकता हूं और फिर छवियों से नए वीडियो को बचा सकता हूं।


क्या आप इस प्रणाली को लागू करना चाहते हैं या उत्पाद का उपयोग करने के लिए तैयार हैं?
वोइटग

@WOEITG मैं सिर्फ Ubuntu 15.04+ के लिए किसी भी मुफ्त काम के समाधान की आवश्यकता है
rfedorov

विंडोज के लिए, ispy नामक सॉफ्टवेयर का एक टुकड़ा है, जिसे आप मोशन डिटेक्शन पर रिकॉर्ड करने के लिए सेट कर सकते हैं। चूंकि आप लिनक्स समाधान का अनुरोध कर रहे हैं, zoneminder.com एक समान उत्पाद होना चाहिए। दुर्भाग्य से मेरे पास आपके प्रश्न का सीधा उत्तर नहीं है, लेकिन +1 क्योंकि मुझे भी एक उत्तर चाहिए
MyNameWouldGoHere

जवाबों:


7

मैं क्या करूंगा, जैसा आपने कहा था, वैसा ही करें, और स्ट्रीम की एक बड़ी फाइल को सेव करें, फिर select FFMPEG फिल्टर का उपयोग sceneएक्सप्रेशन के साथ करें , जो कि लगातार फ्रेम की समानता की तुलना करता है: select=gt(scene\,0.003)उदाहरण के लिए। अधिक संख्या, फ़्रेम के बीच अधिक परिवर्तन को अनदेखा किया जाता है, त्वरित परीक्षण में आपको जिस तरह के फुटेज के साथ काम कर रहे हैं उसके आधार पर 0.00001-0.00005 के रूप में कम जाने की आवश्यकता हो सकती है।

setpts फ़िल्टर के साथ संयोजित करें , जो वीडियो फ़्रेम के "प्रारंभ समय" को संशोधित करता है, और आप कुछ इस तरह से (25fps के लिए) समाप्त करेंगे:

ffmpeg -i input.mp4 -vf "select=gt(scene\,0.003),setpts=N/(25*TB)" output.mp4

ध्यान रहे, -vcodec copyजब आप वीडियो फिल्टर का उपयोग करेंगे तो आप इसका उपयोग नहीं कर पाएंगे ।

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