Scene Detector – वीडियो दृश्य पहचान COM ऑब्जेक्ट

विवरण

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

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

 

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

  • लगभग किसी भी वीडियो फ़ाइल में दृश्यों का पता लगाता है जिसे विंडोज मीडिया प्लेयर द्वारा चलाया जा सकता है (DirectShow API के उपयोग के कारण)
  • तेज और सटीक एल्गोरिथ्म
  • आसान एकीकरण
  • प्रसंस्करण के दौरान, इसे परिभाषित किए जाने के ठीक बाद नए दृश्य की रिपोर्ट करता है. पहचान समाप्त होने की प्रतीक्षा करने की आवश्यकता नहीं है
  • थंबनेल उत्पन्न कर सकते हैं - प्रत्येक दृश्य के लिए पहला और अंतिम फ्रेम चित्र और उन्हें BMP या JPG फ़ाइलों में सहेज सकते हैं
  • संसाधन के दौरान उपयोग करने के लिए स्रोत, स्प्लिटर और वीडियो डिकोडर फ़िल्टर निर्दिष्ट करना संभव है
  • "श्वेत" और "अश्वेत" दृश्यों का पता लगा सकते हैं
  • RGB और YUV रंग स्थानों में काम कर सकते हैं
  • मीडिया फ़ाइल के भाग को संसाधित कर सकते हैं - उपयोगकर्ता प्रारंभ और रोक संसाधन स्थितियाँ निर्दिष्ट कर सकता है

 

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

संपर्क करें.

 

प्रलेखन

 

sdScenesMergeKind इनम

छोटे दृश्यों के साथ क्या करना है, इसके लिए निर्देश देने के लिए उपयोग किया जाता है.

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

 

DetectorParameters संरचना

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

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; में आंतरिक संसाधन ग्राफ़ के पंजीकरण को नियंत्रित करें रनिंग ऑब्जेक्ट टेबल (ROT).
1 (ROT में पंजीकृत करें) या 0 (पंजीकृत नहीं है) हो सकता है.
BSTR SourceFilterMoniker; आंतरिक संसाधन ग्राफ़ में उपयोग किए जाने वाले वांछित स्रोत फ़िल्टर मोनिकर का प्रदर्शन नाम.
यदि NULL - डिफ़ॉल्ट फ़िल्टर का उपयोग किया जाता है.
BSTR SplitterFilterMoniker; आंतरिक संसाधन ग्राफ़ में उपयोग किए जाने वाले वांछित स्प्लिटर फ़िल्टर मोनिकर का प्रदर्शन नाम.
यदि NULL - डिफ़ॉल्ट फ़िल्टर का उपयोग किया जाता है.
BSTR DecoderFilterMoniker; आंतरिक संसाधन ग्राफ़ में उपयोग किए जाने वाले वांछित डिकोडर फ़िल्टर मोनिकर का प्रदर्शन नाम.
यदि NULL - डिफ़ॉल्ट फ़िल्टर का उपयोग किया जाता है.
sdScenesMergeKind Merge; जब दृश्य की लंबाई MinSceneLength, से कम होती है, तो इस पैरामीटर के मान के अनुसार दृश्य संशोधित किया जाता है.

 

DetectorParameters2 संरचना

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

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

 

ThumbnailsParameters संरचना

इस संरचना में थंबनेल पीढ़ी पैरामीटर शामिल हैं.

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

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

 

ISceneDetector इंटरफ़ेस

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

DetectScenesInFile तरीका

HRESULT _stdcall DetectScenesInFile([in] DetectorParameters *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY(long) *Scenes );

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

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

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

 

ISceneDetector2 इंटरफ़ेस

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

DetectScenesInFile2 तरीका

HRESULT _stdcall DetectScenesInFile2([in] DetectorParameters2 *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY(long) *Scenes );

DetectScenesInFile के विपरीत यह विधि DetectorParameters2 पैरामीटर के सेट का उपयोग करती है, इसलिए रंग स्थान, प्रारंभ और रोक संसाधन स्थितियों को निर्दिष्ट करने की अनुमति देती है.
इस तथ्य पर ध्यान दें कि इस विधि द्वारा लौटाए गए दृश्यों के प्रारंभ और रोक मान Params.StartPosition मान के सापेक्ष हैं.
अन्य जानकारी के लिए DetectScenesInFile विवरण देखें.

GetFrameRate तरीका

HRESULT _stdcall GetFrameRate([out, retval] double *pFrameRate );

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

 

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

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

NewScene तरीका

HRESULT NewScene([in] long SceneIndex, [in] long Start, [in] long Stop );

नया दृश्य परिभाषित होने पर डिटेक्टर द्वारा फ़ायर किया गया ईवेंट.
SceneIndex 0 से शुरू होता है.
Start और Stop भी 0 से शुरू होते हैं और फ़्रेम संख्याएँ हैं.
जब DetectScenesInFile2 विधि के माध्यम से संसाधन शुरू किया जाता है तो Start और Stop मान Params.StartPosition मान के सापेक्ष होते हैं.

Status तरीका

HRESULT Status([in] long ScenesFound, [in] long CurrentFrame, [in] long TotalFrames, [out] long *AbortProcess );

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