Scene Detector - वीडियो सीन डिटेक्शन COM ऑब्जेक्ट

विवरण

सीन डिटेक्टर दृश्य पहचान और दृश्य प्रसंस्करण के लिए एक शक्तिशाली COM घटक है। इसमें बेहद सटीक और तेज़ ऑप्टिकल दृश्य पहचान के लिए पुरस्कार विजेता हैंडीसॉ डीएस तकनीक शामिल है। यह उन सॉफ्टवेयर कंपनियों और डेवलपर्स की ओर उन्मुख है जो अपने उत्पादों का विस्तार करना चाहते हैं। COM घटक एक पुन: प्रयोज्य सॉफ़्टवेयर मॉड्यूल है जो कंपोनेंट ऑब्जेक्ट मॉडल (COM) आर्किटेक्चर का अनुसरण करता है, जो इसे विभिन्न प्रोग्रामिंग भाषाओं और वातावरणों में उपयोग करने की अनुमति देता है। यदि आप दृश्य पहचान के लिए एक स्टैंडअलोन एप्लिकेशन की तलाश में हैं, तो आप इस लिंक का अनुसरण करके हैंडीसॉ डीएस का उपयोग कर सकते हैं।

सीन डिटेक्टर ऑब्जेक्ट वीडियो फ़ाइल को संसाधित करता है और पाए गए दृश्यों की एक सूची लौटाता है। यह प्रत्येक दृश्य के लिए थंबनेल भी सहेज सकता है और प्रसंस्करण के दौरान कॉलबैक इंटरफेस के माध्यम से प्रत्येक नए पाए गए दृश्य के बारे में कॉलर एप्लिकेशन को तुरंत सूचित कर सकता है।

मुख्य विशेषताएं

  • लगभग किसी भी वीडियो फ़ाइल में उन दृश्यों का पता लगाता है जिन्हें विंडोज मीडिया प्लेयर द्वारा चलाया जा सकता है (डायरेक्टशो एपीआई के उपयोग के कारण)
  • तेज़ और सटीक एल्गोरिदम
  • आसान एकीकरण
  • प्रसंस्करण के दौरान, परिभाषित होने के तुरंत बाद नए दृश्य की रिपोर्ट करता है। पहचान समाप्त होने तक प्रतीक्षा करने की आवश्यकता नहीं है
  • थंबनेल उत्पन्न कर सकते हैं - प्रत्येक दृश्य के लिए पहली और आखिरी फ्रेम छवियां और उन्हें बीएमपी या जेपीजी फाइलों में सहेजें
  • प्रसंस्करण के दौरान उपयोग करने के लिए स्रोत, स्प्लिटर और वीडियो डिकोडर फ़िल्टर निर्दिष्ट करना संभव है
  • "सफ़ेद" और "काले" दृश्यों का पता लगा सकता है
  • RGB और YUV कलर स्पेस में काम कर सकता है
  • मीडिया फ़ाइल के भाग को संसाधित कर सकता है - उपयोगकर्ता प्रसंस्करण प्रारंभ करने और रोकने की स्थिति निर्दिष्ट कर सकता है

डेमो संस्करण और कीमत

मुझसे संपर्क करें .

प्रलेखन

sdScenesMergeKind enum

निर्देश देते थे कि छोटे दृश्यों के साथ क्या करना है।

sdMergeDelete = 0, लघु दृश्य हटा दिया गया
sdMergeWithPrev = 1, लघु दृश्य को पिछले दृश्य के साथ मिला दिया गया
sdMergeWithNext = 2, लघु दृश्य को अगले के साथ मिला दिया गया
sdMergeWithBoth = 3 लघु (मध्य), पिछले और अगले दृश्य एक ही दृश्य में विलीन हो गए

डिटेक्टर पैरामीटर संरचना

इस संरचना में दृश्य पहचान इंजन पैरामीटर शामिल हैं।

BSTR VideoFileName; पता लगाने के लिए पूरा वीडियो फ़ाइल नाम.
int Threshold; डिटेक्शन थ्रेशोल्ड मान.
अनुशंसित डिफ़ॉल्ट RGB कलर स्पेस के लिए 19 और YUV के लिए 5 हैं।
0 से 255 तक हो सकता है.
यह पैरामीटर मुख्य है.
जब दो फ़्रेमों का अंतर इस मान से अधिक होता है, तो नया दृश्य शुरू होता है।
इस प्रकार: निचली सीमा - अधिक दृश्य।
int UpLumaTresh; "व्हाइट फ़ेडआउट्स" का पता लगाने में उपयोग किया जाता है।
अनुशंसित डिफ़ॉल्ट -1.
-1 से 255 तक हो सकता है.
"-1" इस सुविधा को अक्षम कर देता है.
जब समग्र फ़्रेम चमक इस मान से अधिक होती है, तो नया दृश्य शुरू होता है।
इस सुविधा के साथ ऐसे चमकीले फ़्रेमों के अनुक्रम को अलग-अलग दृश्य के रूप में परिभाषित करना संभव है।
int BottomLumaTresh; "ब्लैक फ़ेडआउट्स" का पता लगाने में उपयोग किया जाता है।
अनुशंसित डिफ़ॉल्ट -1.
-1 से 255 तक हो सकता है.
"-1" इस सुविधा को अक्षम कर देता है.
जब समग्र फ़्रेम चमक इस मान से कम होती है, तो नया दृश्य शुरू होता है।
इस सुविधा के साथ ऐसे अंधेरे फ़्रेमों के अनुक्रम को अलग दृश्य के रूप में परिभाषित करना संभव है।
int MinSceneLength;

किसी ज्ञात दृश्य की न्यूनतम अवधि (फ़्रेम में) निर्धारित करता है।
अनुशंसित डिफ़ॉल्ट 5.
0 से लेकर किसी भी सकारात्मक मान तक हो सकता है।
यदि परिभाषित दृश्य की लंबाई इस मान से कम है, तो यह दृश्य मर्ज फ़ील्ड मान (नीचे देखें) के अनुसार पिछले, अगले या दोनों दृश्यों के साथ विलय हो जाता है।

int RegisterGraph; रनिंग ऑब्जेक्ट टेबल (आरओटी) में आंतरिक प्रसंस्करण ग्राफ के पंजीकरण को नियंत्रित करें।
1 (आरओटी में पंजीकरण) या 0 (पंजीकरण नहीं) हो सकता है।
BSTR SourceFilterMoniker; आंतरिक प्रसंस्करण ग्राफ़ में प्रयुक्त वांछित स्रोत फ़िल्टर उपनाम का प्रदर्शन नाम।
यदि शून्य - डिफ़ॉल्ट फ़िल्टर का उपयोग किया जाता है।
BSTR SplitterFilterMoniker; आंतरिक प्रसंस्करण ग्राफ़ में प्रयुक्त वांछित स्प्लिटर फ़िल्टर उपनाम का प्रदर्शन नाम।
यदि शून्य - डिफ़ॉल्ट फ़िल्टर का उपयोग किया जाता है।
BSTR DecoderFilterMoniker; आंतरिक प्रसंस्करण ग्राफ़ में प्रयुक्त वांछित डिकोडर फ़िल्टर उपनाम का प्रदर्शन नाम।
यदि शून्य - डिफ़ॉल्ट फ़िल्टर का उपयोग किया जाता है।
sdScenesMergeKind Merge; जब दृश्य की लंबाई MinSceneLength से कम होती है, तो इस पैरामीटर के मान के अनुसार दृश्य को संशोधित किया जाता है।

डिटेक्टरपैरामीटर2 संरचना

यह संरचना डिटेक्टर पैरामीटर्स संरचना में परिभाषित दृश्य पहचान इंजन मापदंडों के एक सेट का विस्तार करती है। डिटेक्टर पैरामीटर्स के सदस्यों के अलावा इसमें शामिल हैं:

int UseYUV; दृश्य पहचान के लिए रंग स्थान का चयन करने की अनुमति देता है।
1(YUY2) या 0(RGB24) हो सकता है।
int Pad; सुरक्षित
double StartPosition; सेकंड में दृश्य का पता लगाने के लिए प्रारंभ मीडिया स्थिति निर्दिष्ट करता है।
यदि यह शून्येतर है तो यह न भूलें कि सभी दृश्य समय इस स्थिति के सापेक्ष हैं।
double StopPosition; सेकंड में दृश्य का पता लगाने के लिए स्टॉप मीडिया स्थिति निर्दिष्ट करता है।
अनदेखा करने के लिए शून्य पर सेट करें.

थंबनेल पैरामीटर संरचना

इस संरचना में थंबनेल निर्माण पैरामीटर शामिल हैं।

int JpegFormat; फ़ाइल स्वरूप चुनें. 0 - बीएमपी फ़ाइलें जनरेट करें, 1 - जेपीईजी फ़ाइलें जनरेट करें।
int JpegQuality; जेपीईजी संपीड़न गुणवत्ता। 0 से 100 तक पूर्णांक.
int ImagesPerScene; छवियाँ प्रति दृश्य संख्या। 1 - केवल आरंभ फ़्रेम, 2 - प्रत्येक दृश्य का आरंभ और अंत फ़्रेम।
double Scale; थंबनेल स्केलिंग कारक. 1 - पूर्ण आकार चित्र. फ़्लोटिंग पॉइंट मान.
BSTR FileName;

थंबनेल फ़ाइल नाम टेम्पलेट. एक पूर्णांक फ़ील्ड के साथ "सी" "प्रिंटफ" फ़ंक्शन के लिए स्ट्रिंग।
उदाहरण के लिए: "d:\filedir\filename%05d.jpg"
आपको उचित एक्सटेंशन के साथ पूरा पथनाम निर्दिष्ट करना होगा। विशिष्ट थंबनेल के लिए फ़ाइल नाम प्राप्त करने के लिए %d प्रतीकों के बजाय फ़्रेम नंबर डाला जाएगा।

आईसीनडिटेक्टर इंटरफ़ेस

यह इंटरफ़ेस दृश्य पहचान के लिए तरीके प्रदान करता है:

डिटेक्टसीनइनफ़ाइल विधि

HRESULT _stdcall डिटेक्टसीनइनफाइल ([इन] डिटेक्टर पैरामीटर्स * पैरामीटर्स, [इन] थंबनेल पैरामीटर्स * थंबनेल्स पैरामीटर्स, [आउट] सेफरेरे (लंबे) * सीन्स);

यह मुख्य दृश्य पहचान विधि है.
पैराम्स में डिटेक्शन पैरामीटर पास करें और दृश्यों में SAFEARRAY को पॉइंटर दें।
यदि दृश्य शून्य है तो फ़ंक्शन पता लगाए गए दृश्यों की सूची वापस नहीं करता है।
इस विधि को कॉल करने से पहले कॉलर को SafeArray बनाने की आवश्यकता नहीं है।
यदि दृश्य शून्य नहीं है और फ़ंक्शन कॉल के बाद * दृश्य शून्य नहीं है, तो कॉल करने वाले को * दृश्य सुरक्षितअरे को नष्ट करना होगा।
*दृश्य द्वि-आयामी सरणी है। प्रत्येक पाए गए दृश्य के लिए दो लंबे मान हैं: दृश्य प्रारंभ और स्टॉप फ़्रेम संख्या। ये मान प्रसंस्करण प्रारंभ मीडिया स्थिति से संबंधित हैं।
थंबनेल जेनरेशन चालू करने और इसके पैरामीटर निर्दिष्ट करने के लिए नॉन न्यूल पॉइंटर को थंबनेलपैराम्स के रूप में पास करें। थंबनेल निर्माण को अक्षम करने के लिए NULL पास करें।

एक HRESULT मान लौटाता है। संभावित मानों में निम्नलिखित शामिल हैं:

0 सफलता
0x80040601 अनिर्दिष्ट त्रुटि
0x80040602 DirectShow स्थापित नहीं है या संस्करण बहुत पुराना है
0x80040603 वीडियो की अवधि प्राप्त नहीं की जा सकती. अभी भी छवि हो सकती है
0x80040604 ख़राब तर्क
0x80040605 डिवाइस संदर्भ नहीं बनाया जा सकता
0x80040606 वस्तु किसी अन्य कार्य में व्यस्त है
0x80040607 फ़्रेमरेट शून्य के बराबर है. अभी भी छवि हो सकती है
0x80040608 ग्राफ़ नहीं बना सकता

आईसीनडिटेक्टर2 इंटरफ़ेस

यह इंटरफ़ेस आईसीनडिटेक्टर इंटरफ़ेस से प्राप्त होता है और दृश्य पहचान के लिए विस्तारित तरीके प्रदान करता है। ISceneडिटेक्टर से विरासत में मिली विधियों के अलावा, ISceneDector2 इंटरफ़ेस निम्नलिखित विधियों को उजागर करता है:

डिटेक्टसीनइनफ़ाइल2 विधि

HRESULT _stdcall डिटेक्टसीनइनफाइल2 ([इन] डिटेक्टरपैरामीटर्स2 *पैरामीटर्स, [इन] थंबनेलपैरामीटर्स *थंबनेलपैराम्स, [आउट] सेफरेरे (लंबा) *सीन);

डिटेक्टस्केनइनफ़ाइल के विपरीत यह विधि डिटेक्टरपैरामीटर 2 पैरामीटर के सेट का उपयोग करती है, इसलिए रंग स्थान निर्दिष्ट करने, प्रसंस्करण स्थिति शुरू करने और रोकने की अनुमति देती है।
इस तथ्य पर ध्यान दें कि इस विधि द्वारा लौटाए गए दृश्य शुरू और बंद मान पैराम्स.स्टार्टपोज़िशन मान के सापेक्ष हैं।
अन्य जानकारी के लिए DeletedScenesInFile विवरण देखें।

GetFrameRate विधि

HRESULT _stdcall GetFrameRate ([आउट, रेटवल] डबल *pFrameRate );

अंतिम संसाधित फ़ाइल की वीडियो फ़्रेम दर लौटाता है। संख्या अनुवाद को समयबद्ध करने के लिए उपयोगी।
यदि pFrameRate शून्य है तो S_OK या E_INVALIDARG लौटाता है।

IScenedetectorEvents ईवेंट इंटरफ़ेस

यह ईवेंट इंटरफ़ेस वास्तविक समय में दृश्य पहचान जानकारी पुनर्प्राप्त करने के तरीके प्रदान करता है।

न्यूसीन विधि

HRESULT न्यूसीन ([में] लंबा सीनइंडेक्स, [में] लंबा प्रारंभ, [में] लंबा स्टॉप);

नया दृश्य परिभाषित होने पर डिटेक्टर द्वारा इवेंट को सक्रिय किया गया।
सीनइंडेक्स 0 से शुरू होता है।
स्टार्ट और स्टॉप भी 0 से शुरू होते हैं और फ्रेम नंबर हैं।
जब DeleteScenesInFile2 विधि के माध्यम से प्रोसेसिंग शुरू होती है तो स्टार्ट और स्टॉप मान पैराम्स.स्टार्टपोजिशन मान से संबंधित होते हैं।

स्थिति विधि

HRESULT स्थिति ([में] लंबे दृश्य मिले, [में] लंबे करंटफ्रेम, [में] लंबे टोटलफ्रेम, [बाहर] लंबे *एबॉर्टप्रोसेस);

इवेंट हर 50 एमएस में सक्रिय होता है और क्लाइंट को प्रक्रिया की स्थिति के बारे में सूचित करता है।
एबॉर्टप्रोसेस वेरिएबल का सूचक है। इस प्रकार क्लाइंट वर्तमान दृश्य पहचान को रद्द करने के लिए * AbortProcess को 1 मान पर सेट कर सकता है।