Scene Detector – Video Scene Detection COM Object

Popis

Scene Detector je výkonný komponent COM pro rozpoznávání a zpracování scény. Obsahuje oceněné technologie HandySaw DS pro extrémně přesné a rychlé optické rozpoznání scény. Orientuje se na softwarové společnosti a vývojáře, kteří chtějí rozšířit své produkty. Komponenta COM je opakovaně použitelný softwarový modul, který se řídí architekturou Component Object Model (COM), což umožňuje jeho použití v různých programovacích jazycích a prostředích. Pokud hledáte samostatnou aplikaci pro detekci scén, můžete použít HandySaw DS kliknutím na tento odkaz .

Objekt Detektor scén zpracuje video soubor a vrátí seznam nalezených scén. Může také ukládat miniatury pro každou scénu a okamžitě informovat aplikaci volajícího o každé nově nalezené scéně prostřednictvím rozhraní zpětného volání během zpracování.

Hlavní rysy

  • Detekuje scény v téměř každém videosouboru, který lze přehrát pomocí Windows Media Player (díky použití rozhraní DirectShow API)
  • Rychlý a přesný algoritmus
  • Snadná integrace
  • Hlásí novou scénu hned po jejím definování, během zpracování. Není třeba čekat na dokončení detekce
  • Může generovat náhledy - první a poslední snímky pro každou scénu a uložit je do souborů BMP nebo JPG
  • Je možné určit zdroj, rozdělovač a filtry dekodéru videa, které se mají použít během zpracování
  • Dokáže detekovat "bílé" a "černé" scény
  • Může pracovat v barevných prostorech RGB a YUV
  • Může zpracovat část mediálního souboru - uživatel může určit pozice zahájení a ukončení zpracování

Demo verze a cena

Kontaktujte mě.

Dokumentace

výčet sdScenesMergeKind

Používá se k zadání pokynů, co dělat s krátkými scénami.

sdMergeDelete = 0, Krátká scéna odstraněna
sdMergeWithPrev = 1, Krátká scéna splynula s předchozí
sdMergeWithNext = 2, Krátká scéna se spojila s další
sdMergeWithBoth = 3 Krátké (střední), předchozí a následující scény se spojily do jedné jediné scény

Struktura DetectorParameters

Tato struktura obsahuje parametry motoru detekce scény.

BSTR VideoFileName; Úplný název souboru videa pro detekci.
int Threshold; Prahová hodnota detekce.
Doporučené výchozí hodnoty jsou 19 pro barevný prostor RGB a 5 pro YUV.
Může být od 0 do 255.
Tento parametr je hlavní.
Když je rozdíl dvou snímků větší než tato hodnota, začne nová scéna.
Tedy: nižší práh – více scén.
int UpLumaTresh; Používá se při detekci „bílých vyblednutí“.
Doporučená výchozí hodnota -1.
Může být od -1 do 255.
"-1" tuto funkci zakáže.
Když je celkový jas snímku větší než tato hodnota, začne nová scéna.
Pomocí této funkce je možné definovat sekvenci takto jasných snímků jako samostatnou scénu.
int BottomLumaTresh; Používá se při detekci „černých útlumů“.
Doporučená výchozí hodnota -1.
Může být od -1 do 255.
"-1" tuto funkci zakáže.
Když je celkový jas snímku nižší než tato hodnota, začne nová scéna.
Pomocí této funkce je možné definovat sekvenci takových tmavých snímků jako samostatnou scénu.
int MinSceneLength;

Nastaví minimální dobu trvání detekované scény (ve snímcích).
Doporučená výchozí hodnota 5.
Může být od 0 do libovolné kladné hodnoty.
Pokud je délka definované scény menší než tato hodnota, tato scéna se sloučí s předchozí, následující nebo oběma scénami podle hodnoty pole Sloučit (viz níže).

int RegisterGraph; Řízení registrace grafu interního zpracování v tabulce běžících objektů (ROT).
Může být 1 (registrace v ROT) nebo 0 (neregistrace).
BSTR SourceFilterMoniker; Zobrazovaný název požadovaného názvu filtru zdroje použitého v grafu interního zpracování.
Pokud je NULL - použije se výchozí filtr.
BSTR SplitterFilterMoniker; Zobrazovaný název požadovaného názvu filtru rozdělovače použitého v grafu interního zpracování.
Pokud je NULL - použije se výchozí filtr.
BSTR DecoderFilterMoniker; Zobrazovaný název požadovaného názvu filtru dekodéru použitého v grafu interního zpracování.
Pokud je NULL - použije se výchozí filtr.
sdScenesMergeKind Merge; Když je délka scény menší než MinSceneLength, scéna se upraví podle hodnoty tohoto parametru.

Struktura DetectorParameters2

Tato struktura rozšiřuje sadu parametrů motoru detekce scény definovaných ve struktuře DetectorParameters . Kromě členů DetectorParameters obsahuje:

int UseYUV; Umožňuje vybrat barevný prostor pro detekci scény.
Může být 1 (YUY2) nebo 0 (RGB24).
int Pad; Rezervováno
double StartPosition; Určuje počáteční pozici média pro detekci scény v sekundách.
Pokud je nenulové, pak nezapomeňte, že všechny časy scény jsou relativní k této pozici.
double StopPosition; Určuje polohu média zastavení pro detekci scény v sekundách.
Chcete-li ignorovat, nastavte na nulu.

Struktura ThumbnailsParameters

Tato struktura obsahuje parametry generování náhledů.

int JpegFormat; Vyberte formát souboru. 0 - generování souborů BMP, 1 - generování souborů JPEG.
int JpegQuality; Kvalita komprese JPEG. Celé číslo od 0 do 100.
int ImagesPerScene; Obrázky podle čísla scény. 1 - pouze počáteční snímek, 2 - počáteční a koncový snímek každé scény.
double Scale; Faktor změny velikosti miniatur. 1 - obrázek v plné velikosti. Hodnota s pohyblivou řádovou čárkou.
BSTR FileName;

Šablona názvů souborů miniatur. Řetězec pro funkci "C" "printf" s jedním celočíselným polem.
Například: "d:\filedir\filename%05d.jpg"
Musíte zadat úplnou cestu se správnou příponou. Místo symbolů %d bude vloženo číslo snímku, aby se získal název souboru pro konkrétní miniaturu.

Rozhraní ISceneDetector

Toto rozhraní poskytuje metody pro detekci scény:

Metoda DetectScenesInFile

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

Toto je hlavní metoda detekce scény.
Předejte parametry detekce v Params a ukažte na SAFEARRAY ve Scenes.
Pokud jsou scény NULL, funkce nevrací seznam detekovaných scén.
Volající nemusí před voláním této metody vytvářet SafeArray.
Pokud Scenes není NULL a po volání funkce *Scenes není NULL, musí také volající zničit *Scenes SafeArray.
*Scenes je dvourozměrné pole. Pro každou nalezenou scénu existují dvě dlouhé hodnoty: počáteční a koncová čísla snímku. Tyto hodnoty se vztahují k počáteční pozici média pro zpracování.
Předejte ukazatel jiný než NULL jako ThumbnailsParams , abyste zapnuli generování miniatur a specifikovali jeho parametry. Chcete-li zakázat generování miniatur, předejte hodnotu NULL.

Vrátí hodnotu HRESULT . Mezi možné hodnoty patří následující:

0 Úspěch
0x80040601 Nespecifikovaná chyba
0x80040602 DirectShow není nainstalována nebo je verze příliš stará
0x80040603 Nelze získat délku videa. Může to být statický obrázek
0x80040604 Špatný argument
0x80040605 Nelze vytvořit kontext zařízení
0x80040606 Objekt je zaneprázdněn jiným úkolem
0x80040607 Snímková frekvence se rovná nule. Může to být statický obrázek
0x80040608 Nelze vytvořit graf

Rozhraní ISceneDetector2

Toto rozhraní je odvozeno od rozhraní ISceneDetector a poskytuje rozšířené metody pro detekci scén. Kromě metod zděděných z ISceneDetector poskytuje rozhraní ISceneDetector2 následující metody:

Metoda DetectScenesInFile2

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

Na rozdíl od DetectScenesInFile tato metoda používá sadu parametrů DetectorParameters2 , takže umožňuje specifikovat barevný prostor, zahájit a zastavit pozice zpracování.
Věnujte pozornost skutečnosti, že počáteční a koncové hodnoty scén vrácené touto metodou jsou relativní k hodnotě Params.StartPosition .
Další informace najdete v popisu DetectScenesInFile .

Metoda GetFrameRate

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

Vrátí snímkovou frekvenci videa posledního zpracovaného souboru. Užitečné pro překlad časových čísel.
Vrátí S_OK nebo E_INVALIDARG, pokud má pFrameRate hodnotu NULL.

Rozhraní událostí ISceneDetectorEvents

Toto rozhraní událostí poskytuje metody pro získávání informací o detekci scény v reálném čase.

metoda NewScene

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

Událost spuštěná detektorem při definování nové scény.
SceneIndex začíná od 0.
Start a Stop také začínají od 0 a jsou to čísla snímků.
Při zahájení zpracování metodou DetectScenesInFile2 jsou hodnoty Start a Stop relativní k hodnotě Params.StartPosition .

Stavová metoda

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

Událost se spouští každých 50 ms a informuje klienta o stavu procesu.
AbortProcess je ukazatel na proměnnou. Klient tak může nastavit * AbortProcess na hodnotu 1 pro zrušení detekce aktuální scény.