COM-komponent

Scene Detector

Videoscendetektering för utvecklare. Integrera den i din applikation via COM.

Scene Detector är en COM-komponent byggd på HandySaw DS-teknik för scenigenkänning. Den bearbetar en videofil och returnerar en lista över detekterade scener med bildruteexakta gränser. Komponenten kan även generera miniatyrbilder för varje scen och rapportera nyfunna scener i realtid via callback-gränssnitt. Du behöver inte vänta på att hela detekteringsprocessen ska slutföras.

En COM-komponent följer standardarkitektur, vilket gör den användbar från i stort sett alla Windows-utvecklingsmiljöer. Om du behöver ett fristående skrivbordsverktyg snarare än en utvecklarkomponent, är HandySaw DS rätt val.

Brett formatstöd

Bearbetar alla videofiler som kan spelas upp av Windows Media Player via DirectShow API.

Realtids-callbacks

Rapporterar varje ny scen omedelbart när den hittas. Din applikation tar emot resultat under bearbetningen.

Generering av miniatyrbilder

Sparar valfritt första och sista bildrutan i varje scen som BMP- eller JPEG-filer i valfri skala.

RGB- och YUV-färgrymder

Detektering kan köras i RGB24- eller YUY2-färgrymd; var och en har sina egna rekommenderade tröskelvärden.

Detektering av vita och svarta scener

Konfigurerbara luma-tröskelvärden identifierar övergångar till vitt och svart som separata scener.

Delvis filbearbetning

Ange start- och stoppositioner för att endast detektera scener inom ett valt segment av mediefilen.

Anpassad filterpipeline

Åsidosätt käll-, splitter- och avkodar-DirectShow-filter som används internt för maximal kompatibilitet.

Sammanslagning av korta scener

Scener som är kortare än ett konfigurerbart minimum slås automatiskt samman med sina grannar eller tas bort.

Kontakta mig för demoversion och prisinformation.

sdScenesMergeKind enum

Anger hur korta scener hanteras efter detektering.

sdMergeDelete = 0 Kort scen tas bort.
sdMergeWithPrev = 1 Kort scen slås samman med föregående scen.
sdMergeWithNext = 2 Kort scen slås samman med nästa scen.
sdMergeWithBoth = 3 Kort scen, föregående scen och nästa scen slås alla samman till en.

DetectorParameters structure

Kärnparametrar för scendetekteringsmotorn.

BSTR VideoFileName Fullständig sökväg till videofilen som ska bearbetas.
int Threshold Detekteringskänslighet. Intervall 0-255. Rekommenderade standardvärden: 19 (RGB) och 5 (YUV). En ny scen börjar när skillnaden mellan två på varandra följande bildrutor överstiger detta värde. Lägre värden ger fler scener.
int UpLumaTresh Tröskelvärde för övergång till vitt. Intervall -1-255. Ett värde på -1 inaktiverar denna funktion. När den totala bildljusstyrkan överstiger detta värde börjar en ny scen, vilket grupperar ljusa bildrutor tillsammans.
int BottomLumaTresh Tröskelvärde för övergång till svart. Intervall -1-255. Ett värde på -1 inaktiverar denna funktion. När den totala bildljusstyrkan faller under detta värde börjar en ny scen, vilket grupperar mörka bildrutor tillsammans.
int MinSceneLength Minsta scenlängd i bildrutor. Scener kortare än detta värde modifieras enligt Merge-fältet. Rekommenderat standardvärde: 5.
int RegisterGraph ROT-registrering av den interna bearbetningsgrafen. 1: registrera. 0: registrera inte.
BSTR SourceFilterMoniker Visningsnamn för önskat källfilter. NULL: använd standard.
BSTR SplitterFilterMoniker Visningsnamn för önskat splitterfilter. NULL: använd standard.
BSTR DecoderFilterMoniker Visningsnamn för önskat avkodarfilter. NULL: använd standard.
sdScenesMergeKind Merge Sammanslagningsstrategi som tillämpas när en detekterad scen är kortare än MinSceneLength.

DetectorParameters2 structure

Utökar DetectorParameters med val av färgrymd och delvis filbearbetning. Innehåller alla fält i DetectorParameters plus följande.

int UseYUV Färgrymd. 1: YUY2. 0: RGB24.
int Pad Reserverad.
double StartPosition Startposition för bearbetning i sekunder. När värdet inte är noll är alla returnerade scentider relativa till denna offset.
double StopPosition Stopposition för bearbetning i sekunder. 0: bearbeta till slutet av filen.

ThumbnailsParameters structure

Kontrollerar generering av miniatyrbilder. Skicka en pekare till denna struktur för att aktivera miniatyrbilder, eller NULL för att inaktivera.

int JpegFormat Utdataformat. 0: BMP. 1: JPEG.
int JpegQuality JPEG-komprimeringskvalitet, 0-100.
int ImagesPerScene 1: endast startbildruta. 2: start- och slutbildruta per scen.
double Scale Skalfaktor för miniatyrbild. 1.0: full storlek.
BSTR FileName Filnamnsmall med C printf-syntax med ett heltalsfält, t.ex. d:\dir\frame%05d.jpg. Bildrutenumret ersätter %d-platshållaren. Kräver fullständig sökväg med korrekt filändelse.

ISceneDetector interface

Kärngränssnitt för scendetektering.

DetectScenesInFile

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

Huvudmetod för detektering. Anroparen behöver inte skapa SafeArray i förväg - skicka en pekare till en SAFEARRAY-variabel. Om *Scenes inte är NULL efter anropet måste anroparen förstöra den. Resultatet är en tvådimensionell array. För varje scen ger två long-värden start- och stoppbildrutenummer relativa till bearbetningens startposition. Skicka icke-NULL ThumbnailsParams för att aktivera generering av miniatyrbilder.

HRESULT Betydelse
0Lyckades
0x80040601Ospecificerat fel
0x80040602DirectShow är inte installerat eller versionen är för gammal
0x80040603Kan inte hämta videolängd - kan vara en stillbild
0x80040604Felaktigt argument
0x80040605Kan inte skapa enhetskontext
0x80040606Objektet är upptaget med en annan uppgift
0x80040607Bildfrekvensen är noll - kan vara en stillbild
0x80040608Kan inte bygga graf

ISceneDetector2 interface

Utökar ISceneDetector. Ärver alla dess metoder och lägger till följande.

DetectScenesInFile2

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

Samma som DetectScenesInFile, men använder DetectorParameters2, vilket möjliggör val av färgrymd och delvis filbearbetning. Returnerade start- och stoppvärden för scener är relativa till Params.StartPosition.

GetFrameRate

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

Returnerar bildfrekvensen för den senast bearbetade filen. Användbart för att konvertera bildrutenummer till tidsstämplar. Returnerar S_OK, eller E_INVALIDARG om pFrameRate är NULL.

ISceneDetectorEvents interface

Callback-gränssnitt för realtidsdetekteringshändelser. Implementera i din applikation för att ta emot resultat när de hittas.

NewScene

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

Utlöses när en ny scen har slutförts. SceneIndex börjar från 0. Start och Stop är bildrutenummer som börjar från 0. När bearbetningen startades via DetectScenesInFile2 är båda värdena relativa till Params.StartPosition.

Status

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

Utlöses var 50:e ms med aktuell bearbetningsstatus. Sätt *AbortProcess till 1 för att avbryta den pågående detekteringen.