Scene Detector – Video Scene Detection COM-objekt

Beskrivning

Scene Detector är en kraftfull COM-komponent för igenkänning och bearbetning av scener. Den innehåller prisbelönta HandySaw DS-tekniker för extremt noggrann och snabb optisk scenigenkänning. Den är inriktad på programvaruföretag och utvecklare som vill utöka sina produkter. En COM-komponent är en återanvändbar programvarumodul som följer Component Object Model (COM)-arkitekturen, vilket gör att den kan användas i olika programmeringsspråk och miljöer. Om du letar efter ett fristående program för scendetektering kan du använda HandySaw DS genom att följa den här länken.

Scene Detector-objektet bearbetar videofiler och returnerar en lista över hittade scener. Den kan också spara miniatyrbilder för varje scen och omedelbart informera det anropande programmet om varje ny hittad scen via callback-gränssnitt under bearbetningen.

 

Huvudfunktioner

  • Identifierar scener i nästan alla videofiler som kan spelas upp av Windows Media Player (på grund av användning av DirectShow API)
  • Snabb och exakt algoritm
  • Enkel integrering
  • Rapporterar ny scen direkt efter att den har definierats, under bearbetningen. Du behöver inte vänta tills detekteringen är klar
  • Kan generera miniatyrbilder - bilder av första och sista bildrutorna för varje scen och spara dem i BMP- eller JPG-filer
  • Möjligt att ange käll-, delnings- och videodekodningsfilter som ska användas under bearbetningen
  • Kan detektera "vita" och "svarta" scener
  • Kan fungera i RGB- och YUV-färgrymder
  • Kan bearbeta en del av en mediafil - användaren kan ange start- och stoppbearbetningspositioner

 

Demoversion och pris

Kontakta mig.

 

Dokumentation

 

sdScenesMergeKind enum

Används för att ge instruktioner om vad som ska göras med korta scener.

sdMergeDelete = 0, Kort scen borttagen
sdMergeWithPrev = 1, Kort scen sammanfogad med föregående
sdMergeWithNext = 2, Kort scen sammanfogad med nästa
sdMergeWithBoth = 3 Korta (mellersta), föregående och nästa scener sammanfogade till en enda scen

 

DetectorParameters structure

Denna struktur innehåller parametrar för scendetekteringsmotorn.

BSTR VideoFileName; Fullständigt videofilnamn för detektering.
int Threshold; Tröskelvärde för detektering.
Rekommenderade standardvärden är 19 för RGB-färgrymd och 5 för YUV.
Kan vara från 0 till 255.
Denna parameter är den viktigaste.
När skillnaden mellan två bildrutor är större än detta värde börjar en ny scen.
Alltså: lägre tröskel - fler scener.
int UpLumaTresh; Används vid detektering av "vita fadeouts".
Rekommenderat standardvärde -1.
Kan vara från -1 till 255.
"-1" inaktiverar den här funktionen.
När den totala bildrute ljusstyrkan är större än detta värde börjar en ny scen.
Med den här funktionen är det möjligt att definiera en sekvens av sådana ljusa bildrutor som en separat scen.
int BottomLumaTresh; Används vid detektering av "svarta fadeouts".
Rekommenderat standardvärde -1.
Kan vara från -1 till 255.
"-1" inaktiverar den här funktionen.
När den totala bildrute ljusstyrkan är mindre än detta värde börjar en ny scen.
Med den här funktionen är det möjligt att definiera en sekvens av sådana mörka bildrutor som en separat scen.
int MinSceneLength;

Anger en minsta varaktighet för en detekterad scen (i bildrutor).
Rekommenderat standardvärde 5.
Kan vara från 0 till vilket positivt värde som helst.
Om längden på den definierade scenen är mindre än detta värde, sammanfogas denna scen med föregående, nästa eller båda scenerna, enligt Merge-fältets värde (se nedan).

int RegisterGraph; Kontrollera registreringen av intern bearbetningsgraf i he Running Object Table (ROT).
Kan vara 1 (registreras i ROT) eller 0 (registreras inte).
BSTR SourceFilterMoniker; Visningsnamn för önskad källfiltermoniker som används i den interna bearbetningsgrafen.
Om NULL används standardfilter.
BSTR SplitterFilterMoniker; Visningsnamn för önskad delningsfiltermoniker som används i den interna bearbetningsgrafen.
Om NULL används standardfilter.
BSTR DecoderFilterMoniker; Visningsnamn för önskad dekoderfiltermoniker som används i den interna bearbetningsgrafen.
Om NULL används standardfilter.
sdScenesMergeKind Merge; När scenlängden är mindre än MinSceneLength, ändras scenen enligt värdet på denna parameter.

 

DetectorParameters2 structure

Denna struktur utökar en uppsättning parametrar för scendetekteringsmotorn som definieras i strukturen DetectorParameters. Förutom medlemmarna i DetectorParameters innehåller den:

int UseYUV; Tillåter att välja färgrymd för scendetektering.
Kan vara 1 (YUY2) eller 0 (RGB24).
int Pad; Reserverad
double StartPosition; Anger startmediapositionen för scendetektering i sekunder.
Om detta är noll, glöm inte att alla scentider är relativa till denna position.
double StopPosition; Anger stoppmediapositionen för scendetektering i sekunder.
Sätt till noll för att ignorera.

 

ThumbnailsParameters structure

Denna struktur innehåller parametrar för generering av miniatyrbilder.

int JpegFormat; Välj filformat. 0 - generera BMP-filer, 1 - generera JPEG-filer.
int JpegQuality; JPEG-komprimeringskvalitet. Heltal från 0 till 100.
int ImagesPerScene; Antal bilder per scen. 1 - endast startbildruta, 2 - start- och slutbildrutor för varje scen.
double Scale; Skalfaktor för miniatyrbild. 1 - bild i full storlek. Flyttalsvärde.
BSTR FileName;

Mall för filnamn på miniatyrbilder. Sträng för "C" "printf"-funktionen med ett heltal fält.
Till exempel: "d:\filedir\filename%05d.jpg"
Du måste ange fullständig sökväg med rätt tillägg. Bildrute nummer kommer att infogas istället för %d-symboler för att erhålla filnamn för specifik miniatyrbild.

 

ISceneDetector interface

Detta gränssnitt tillhandahåller metoder för scendetektering:

DetectScenesInFile method

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

Detta är den viktigaste metoden för scendetektering.
Skicka detekteringsparametrar i Params och pekare till SAFEARRAY i Scenes.
Om Scenes är NULL returnerar funktionen inte listan över detekterade scener.
Anroparen behöver inte skapa SafeArray innan anropet av denna metod.
Om Scenes inte är NULL och efter funktionsanropet är *Scenes inte NULL måste anroparen förstöra *Scenes SafeArray.
*Scenes är en tvådimensionell array. För varje hittad scen finns det två långa värden: scenens start- och stoppbildrute nummer. Dessa värden är relativa till bearbetningsstartmediapositionen.
Skicka icke-NULL-pekare som ThumbnailsParams för att aktivera generering av miniatyrbilder och ange dess parametrar. Skicka NULL för att inaktivera generering av miniatyrbilder.

Returnerar ett HRESULT värde. Möjliga värden inkluderar följande:

0 Lyckades
0x80040601 Ospecificerat fel
0x80040602 DirectShow är inte installerat eller versionen är för gammal
0x80040603 Kan inte erhålla videolängd. Kan vara en stillbild
0x80040604 Felaktigt argument
0x80040605 Kan inte skapa enhetskontext
0x80040606 Objektet är upptaget med en annan uppgift
0x80040607 Bildrutehastigheten är lika med noll. Kan vara en stillbild
0x80040608 Kan inte bygga graf

 

ISceneDetector2 interface

Detta gränssnitt härleds från ISceneDetector-gränssnittet och tillhandahåller utökade metoder för scendetektering. Förutom metoderna som ärvts från ISceneDetector exponerar ISceneDetector2-gränssnittet följande metoder:

DetectScenesInFile2 method

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

Till skillnad från DetectScenesInFile använder denna metod DetectorParameters2 uppsättning parametrar, så det tillåter att specificera färgrymd, start- och stoppbearbetningspositioner.
Var uppmärksam på att scenernas start- och stoppvärden som returneras av denna metod är relativa till Params.StartPosition värdet.
Se DetectScenesInFile-beskrivningen för annan information.

GetFrameRate method

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

Returnerar videobildrutehastigheten för den senast bearbetade filen. Användbart för översättning av tid till bildrute nummer.
Returnerar S_OK eller E_INVALIDARG om pFrameRate är NULL.

 

ISceneDetectorEvents events interface

Detta händelsegränssnitt tillhandahåller metoder för att hämta scendetekteringsinformation i realtid.

NewScene method

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

Händelse som utlöses av detektorn när en ny scen definieras.
SceneIndex börjar från 0.
Start och Stop börjar också från 0 och är bildrute nummer.
När bearbetningen startades via DetectScenesInFile2 metoden är Start och Stop värden relativa till Params.StartPosition värdet.

Status method

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

Händelse utlösts var 50:e ms och informerar klienten om processstatus.
AbortProcess är en pekare till variabel. Alltså kan klienten ställa in *AbortProcess till 1 för att avbryta aktuell scendetektering.