COM-komponent
Scene Detector
Videoscendetektering för utvecklare. Integrera den i din applikation via COM.
Om
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.
Funktioner
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.
Demo & Pris
Kontakta mig för demoversion och prisinformation.
API-referens
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 |
|---|---|
| 0 | Lyckades |
| 0x80040601 | Ospecificerat fel |
| 0x80040602 | DirectShow är inte installerat eller versionen är för gammal |
| 0x80040603 | Kan inte hämta videolängd - kan vara en stillbild |
| 0x80040604 | Felaktigt argument |
| 0x80040605 | Kan inte skapa enhetskontext |
| 0x80040606 | Objektet är upptaget med en annan uppgift |
| 0x80040607 | Bildfrekvensen är noll - kan vara en stillbild |
| 0x80040608 | Kan 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.