COM घटक
Scene Detector
डेवलपर्स के लिए वीडियो दृश्य पहचान। इसे COM के माध्यम से अपने एप्लिकेशन में एकीकृत करें।
परिचय
Scene Detector एक COM घटक है जो HandySaw DS दृश्य पहचान तकनीक पर निर्मित है। यह एक वीडियो फ़ाइल को संसाधित करता है और फ्रेम-सटीक सीमाओं के साथ पहचाने गए दृश्यों की एक सूची लौटाता है। यह घटक प्रत्येक दृश्य के लिए थंबनेल भी उत्पन्न कर सकता है और कॉलबैक इंटरफेस के माध्यम से वास्तविक समय में नए पाए गए दृश्यों की रिपोर्ट कर सकता है। आपको पूर्ण पहचान प्रक्रिया समाप्त होने की प्रतीक्षा करने की आवश्यकता नहीं है।
एक COM घटक मानक आर्किटेक्चर का पालन करता है, जिससे यह लगभग किसी भी विंडोज विकास वातावरण से उपयोग करने योग्य हो जाता है। यदि आपको डेवलपर घटक के बजाय एक स्टैंडअलोन डेस्कटॉप टूल की आवश्यकता है, तो HandySaw DS सही विकल्प है।
विशेषताएं
व्यापक प्रारूप समर्थन
DirectShow API के माध्यम से विंडोज मीडिया प्लेयर द्वारा चलाए जा सकने वाली किसी भी वीडियो फ़ाइल को संसाधित करता है।
वास्तविक समय कॉलबैक
प्रत्येक नए दृश्य की रिपोर्ट तुरंत करता है जैसे ही वह पाया जाता है। आपका एप्लिकेशन प्रसंस्करण के दौरान परिणाम प्राप्त करता है।
थंबनेल निर्माण
वैकल्पिक रूप से प्रत्येक दृश्य के पहले और अंतिम फ्रेम को किसी भी पैमाने पर BMP या JPEG फ़ाइलों के रूप में सहेजता है।
RGB और YUV रंग स्थान
पहचान RGB24 या YUY2 रंग स्थान में चल सकती है; प्रत्येक के अपने अनुशंसित थ्रेशोल्ड डिफॉल्ट हैं।
सफेद और काले दृश्य की पहचान
कॉन्फ़िगर करने योग्य ल्यूमा थ्रेशोल्ड फेड-टू-व्हाइट और फेड-टू-ब्लैक ट्रांज़िशन को अलग दृश्यों के रूप में पहचानते हैं।
आंशिक फ़ाइल प्रसंस्करण
मीडिया फ़ाइल के केवल एक चुने हुए खंड के भीतर दृश्यों का पता लगाने के लिए प्रारंभ और समाप्ति स्थिति निर्दिष्ट करें।
कस्टम फ़िल्टर पाइपलाइन
अधिकतम संगतता के लिए आंतरिक रूप से उपयोग किए जाने वाले स्रोत, स्प्लिटर और डिकोडर DirectShow फ़िल्टर को ओवरराइड करें।
लघु-दृश्य विलय
कॉन्फ़िगर करने योग्य न्यूनतम अवधि से छोटे दृश्यों को स्वचालित रूप से उनके पड़ोसियों के साथ मिला दिया जाता है या हटा दिया जाता है।
डेमो और मूल्य
डेमो संस्करण और मूल्य निर्धारण जानकारी के लिए मुझसे संपर्क करें।
API संदर्भ
sdScenesMergeKind enum
निर्दिष्ट करता है कि पहचान के बाद छोटे दृश्यों को कैसे संभाला जाए।
| sdMergeDelete = 0 | छोटा दृश्य हटा दिया जाता है। |
| sdMergeWithPrev = 1 | छोटा दृश्य पिछले दृश्य के साथ मिला दिया जाता है। |
| sdMergeWithNext = 2 | छोटा दृश्य अगले दृश्य के साथ मिला दिया जाता है। |
| sdMergeWithBoth = 3 | छोटा दृश्य, पिछला दृश्य और अगला दृश्य सभी एक में मिला दिए जाते हैं। |
DetectorParameters structure
मुख्य दृश्य पहचान इंजन पैरामीटर।
| BSTR VideoFileName | संसाधित की जाने वाली वीडियो फ़ाइल का पूर्ण पथ। |
| int Threshold | पहचान संवेदनशीलता। सीमा 0-255। अनुशंसित डिफॉल्ट: 19 (RGB) और 5 (YUV)। एक नया दृश्य तब शुरू होता है जब दो लगातार फ्रेम के बीच का अंतर इस मान से अधिक हो जाता है। कम मान अधिक दृश्य उत्पन्न करते हैं। |
| int UpLumaTresh | फेड-टू-व्हाइट थ्रेशोल्ड। सीमा -1-255। -1 का मान इस सुविधा को अक्षम कर देता है। जब समग्र फ्रेम चमक इस मान से अधिक हो जाती है, तो एक नया दृश्य शुरू होता है, जो उज्ज्वल फ्रेम को एक साथ समूहित करता है। |
| int BottomLumaTresh | फेड-टू-ब्लैक थ्रेशोल्ड। सीमा -1-255। -1 का मान इस सुविधा को अक्षम कर देता है। जब समग्र फ्रेम चमक इस मान से नीचे गिर जाती है, तो एक नया दृश्य शुरू होता है, जो अंधेरे फ्रेम को एक साथ समूहित करता है। |
| int MinSceneLength | फ्रेम में न्यूनतम दृश्य अवधि। इस मान से छोटे दृश्यों को Merge फ़ील्ड के अनुसार संशोधित किया जाता है। अनुशंसित डिफॉल्ट: 5। |
| int RegisterGraph | आंतरिक प्रसंस्करण ग्राफ का ROT पंजीकरण। 1: रजिस्टर करें। 0: रजिस्टर न करें। |
| BSTR SourceFilterMoniker | वांछित स्रोत फ़िल्टर का प्रदर्शन नाम। NULL: डिफॉल्ट का उपयोग करें। |
| BSTR SplitterFilterMoniker | वांछित स्प्लिटर फ़िल्टर का प्रदर्शन नाम। NULL: डिफॉल्ट का उपयोग करें। |
| BSTR DecoderFilterMoniker | वांछित डिकोडर फ़िल्टर का प्रदर्शन नाम। NULL: डिफॉल्ट का उपयोग करें। |
| sdScenesMergeKind Merge | जब कोई पहचाना गया दृश्य MinSceneLength से छोटा हो तो विलय रणनीति लागू की जाती है। |
DetectorParameters2 structure
रंग स्थान चयन और आंशिक-फ़ाइल प्रसंस्करण के साथ DetectorParameters का विस्तार करता है। इसमें DetectorParameters के सभी फ़ील्ड और निम्नलिखित शामिल हैं।
| int UseYUV | रंग स्थान। 1: YUY2। 0: RGB24। |
| int Pad | आरक्षित। |
| double StartPosition | सेकंड में प्रसंस्करण प्रारंभ स्थिति। जब गैर-शून्य हो, तो सभी लौटाए गए दृश्य समय इस ऑफसेट के सापेक्ष होते हैं। |
| double StopPosition | सेकंड में प्रसंस्करण समाप्ति स्थिति। 0: फ़ाइल के अंत तक संसाधित करें। |
ThumbnailsParameters structure
थंबनेल निर्माण को नियंत्रित करता है। थंबनेल सक्षम करने के लिए इस संरचना का पॉइंटर पास करें, या अक्षम करने के लिए NULL पास करें।
| int JpegFormat | आउटपुट प्रारूप। 0: BMP। 1: JPEG। |
| int JpegQuality | JPEG संपीड़न गुणवत्ता, 0-100। |
| int ImagesPerScene | 1: केवल प्रारंभ फ्रेम। 2: प्रति दृश्य प्रारंभ और अंत फ्रेम। |
| double Scale | थंबनेल स्केल कारक। 1.0: पूर्ण आकार। |
| BSTR FileName | एक पूर्णांक फ़ील्ड के साथ C printf सिंटैक्स का उपयोग करने वाला फ़ाइल नाम टेम्प्लेट, उदा. d:\dir\frame%05d.jpg। फ्रेम संख्या %d प्लेसहोल्डर को प्रतिस्थापित करती है। सही एक्सटेंशन के साथ पूर्ण पथ की आवश्यकता है। |
ISceneDetector interface
मुख्य दृश्य पहचान इंटरफेस।
DetectScenesInFile
HRESULT _stdcall DetectScenesInFile(
[in] DetectorParameters *Params,
[in] ThumbnailsParameters *ThumbnailsParams,
[out] SAFEARRAY(long) *Scenes
);
मुख्य पहचान विधि। कॉलर को पहले से SafeArray बनाने की आवश्यकता नहीं है - एक SAFEARRAY वेरिएबल का पॉइंटर पास करें। यदि कॉल के बाद *Scenes गैर-NULL है, तो कॉलर को इसे नष्ट करना होगा। परिणाम एक द्वि-आयामी सरणी है। प्रत्येक दृश्य के लिए, दो लॉन्ग मान प्रसंस्करण प्रारंभ स्थिति के सापेक्ष प्रारंभ और समाप्ति फ्रेम संख्या देते हैं। थंबनेल निर्माण को सक्षम करने के लिए गैर-NULL ThumbnailsParams पास करें।
| HRESULT | अर्थ |
|---|---|
| 0 | सफलता |
| 0x80040601 | अनिर्दिष्ट त्रुटि |
| 0x80040602 | DirectShow स्थापित नहीं है या संस्करण बहुत पुराना है |
| 0x80040603 | वीडियो अवधि प्राप्त नहीं की जा सकती - यह एक स्थिर छवि हो सकती है |
| 0x80040604 | गलत तर्क |
| 0x80040605 | डिवाइस संदर्भ नहीं बनाया जा सकता |
| 0x80040606 | ऑब्जेक्ट किसी अन्य कार्य में व्यस्त है |
| 0x80040607 | फ्रेम दर शून्य है - यह एक स्थिर छवि हो सकती है |
| 0x80040608 | ग्राफ नहीं बनाया जा सकता |
ISceneDetector2 interface
ISceneDetector का विस्तार करता है। इसकी सभी विधियों को इनहेरिट करता है और निम्नलिखित जोड़ता है।
DetectScenesInFile2
HRESULT _stdcall DetectScenesInFile2(
[in] DetectorParameters2 *Params,
[in] ThumbnailsParameters *ThumbnailsParams,
[out] SAFEARRAY(long) *Scenes
);
DetectScenesInFile के समान, लेकिन DetectorParameters2 का उपयोग करता है, जो रंग स्थान चयन और आंशिक-फ़ाइल प्रसंस्करण को सक्षम करता है। लौटाए गए दृश्य प्रारंभ और समाप्ति मान Params.StartPosition के सापेक्ष हैं।
GetFrameRate
HRESULT _stdcall GetFrameRate(
[out, retval] double *pFrameRate
);
अंतिम संसाधित फ़ाइल की फ्रेम दर लौटाता है। फ्रेम संख्या को टाइमस्टैम्प में बदलने के लिए उपयोगी है। S_OK लौटाता है, या यदि pFrameRate NULL है तो E_INVALIDARG लौटाता है।
ISceneDetectorEvents interface
वास्तविक समय पहचान घटनाओं के लिए कॉलबैक इंटरफेस। परिणाम मिलने पर उन्हें प्राप्त करने के लिए अपने एप्लिकेशन में लागू करें।
NewScene
HRESULT NewScene(
[in] long SceneIndex,
[in] long Start,
[in] long Stop
);
जब एक नया दृश्य अंतिम रूप दिया जाता है तो फायर होता है। SceneIndex 0 से शुरू होता है। Start और Stop 0 से शुरू होने वाली फ्रेम संख्याएं हैं। जब प्रसंस्करण DetectScenesInFile2 के माध्यम से शुरू किया गया था, तो दोनों मान Params.StartPosition के सापेक्ष हैं।
Status
HRESULT Status(
[in] long ScenesFound,
[in] long CurrentFrame,
[in] long TotalFrames,
[out] long *AbortProcess
);
वर्तमान प्रसंस्करण प्रगति के साथ हर 50 ms पर फायर होता है। चल रही पहचान को रद्द करने के लिए *AbortProcess को 1 पर सेट करें।