Scene Detector – Video Scene Detection COM-objekt
Beskrivning
Scene Detector är en kraftfull COM-komponent för scenigenkänning och scenbearbetning. Den innehåller prisbelönta HandySaw DS-tekniker för extremt exakt och snabb optisk scenigenkänning. Den är inriktad på mjukvaruföretag och utvecklare som vill utöka sina produkter. En COM-komponent är en återanvändbar programvarumodul som följer COM-arkitekturen ( Component Object Model) , vilket gör att den kan användas i olika programmeringsspråk och miljöer. Om du letar efter en fristående applikation för scendetektering kan du använda HandySaw DS genom att följa den här länken .
Scendetektorobjekt bearbetar videofil och returnerar en lista över hittade scener. Den kan också spara miniatyrbilder för varje scen och informera den som ringer omedelbart om varje ny hittad scen via återuppringningsgränssnitt under bearbetning.
Huvuddrag
- Upptäcker scener i nästan alla videofiler som kan spelas upp av Windows Media Player (på grund av användningen av DirectShow API)
- Snabb och exakt algoritm
- Enkel integration
- Rapporterar ny scen direkt efter att den har definierats, under bearbetning. Du behöver inte vänta på att upptäckten ska avslutas
- Kan generera miniatyrer - första och sista bildrutor för varje scen och spara dem i BMP- eller JPG-filer
- Möjligt att ange käll-, splitter- och videoavkodarfilter som ska användas under bearbetning
- Kan upptäcka "vita" och "svarta" scener
- Kan arbeta i RGB- och YUV-färgrymder
- Kan bearbeta en del av en mediefil - användaren kan ange start- och stopppositioner för bearbetning
Demoversion och pris
Kontakta mig.
Dokumentation
sdScenesMergeKind enum
Används för att ge instruktioner vad man ska göra med korta scener.
sdMergeDelete = 0, | Kort scen borttagen |
sdMergeWithPrev = 1, | Kort scen sammansmält med föregående |
sdMergeWithNext = 2, | Kort scen slogs samman med nästa |
sdMergeWithBoth = 3 | Korta (mitten), föregående och nästa scener slogs samman till en enda scen |
Detektorparametrars struktur
Denna struktur innehåller parametrar för motorparametrar för scendetektering.
BSTR VideoFileName; | Fullständigt videofilnamn för upptäckt. |
int Threshold; | Detektionströskelvärde. 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 toningar". Rekommenderad standard -1. Kan vara från -1 till 255. "-1" inaktiverar denna funktion. När den totala bildens ljusstyrka är större än detta värde börjar en ny scen. Med denna funktion är det möjligt att definiera en sekvens av så ljusa bildrutor som en separat scen. |
int BottomLumaTresh; | Används vid detektering av "svarta toningar". Rekommenderad standard -1. Kan vara från -1 till 255. "-1" inaktiverar denna funktion. När den totala bildens ljusstyrka är lägre än detta värde börjar en ny scen. Med denna funktion är det möjligt att definiera en sekvens av sådana mörka ramar som en separat scen. |
int MinSceneLength; | Ställer in en minsta varaktighet för en upptäckt scen (i ramar). |
int RegisterGraph; | Kontrollregistrering av intern bearbetningsgraf i Running Object Table (ROT). Kan vara 1 (registrera i ROT) eller 0 (registrerar inte). |
BSTR SourceFilterMoniker; | Visningsnamn för den önskade källfilternamnet som används i den interna bearbetningsgrafen. Om NULL - standardfilter används. |
BSTR SplitterFilterMoniker; | Visningsnamnet för den önskade splitterfilternamnet som används i den interna bearbetningsgrafen. Om NULL - standardfilter används. |
BSTR DecoderFilterMoniker; | Visningsnamn på önskad avkodarfilternamn som används i den interna bearbetningsgrafen. Om NULL - standardfilter används. |
sdScenesMergeKind Merge; | När scenlängden är mindre än MinSceneLength, ändras scen enligt värdet för denna parameter. |
DetectorParameters2 struktur
Den här strukturen utökar en uppsättning parametrar för scendetektionsmotorn definierade i DetectorParameters -strukturen. Förutom medlemmar i DetectorParameters innehåller den:
int UseYUV; | Tillåter att välja färgrymd för scenavkänning. Kan vara 1(YUY2) eller 0(RGB24). |
int Pad; | Reserverad |
double StartPosition; | Anger startmediaposition för scenavkänning på några sekunder. Om detta inte är noll, glöm inte att alla scentider är relativa till denna position. |
double StopPosition; | Anger stoppmediaposition för scenavkänning i sekunder. Ställ in på noll för att ignorera. |
Miniatyrbilder Parametrar struktur
Den här strukturen 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; | Bilder per scennummer. 1 - endast startbild, 2 - start- och slutbild för varje scen. |
double Scale; | Skalningsfaktor för miniatyrbilder. 1 - bild i full storlek. Flyttalsvärde. |
BSTR FileName; | Mall för miniatyrbilder för filnamn. Sträng för "C" "printf" funktion med ett heltalsfält. |
ISceneDetector-gränssnitt
Detta gränssnitt tillhandahåller metoder för scendetektering:
DetectScenesInFile-metoden
HRESULT _stdcall DetectScenesInFile ([in] DetectorParameters *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (lång) *Scenes );
Detta är den huvudsakliga scendetektionsmetoden.
Skicka detekteringsparametrar i Params och pekare till SAFEARRAY i Scener.
Om Scener är NULL returnerar inte funktionen upptäckta scener.
Den som ringer behöver inte skapa SafeArray innan den här metoden anropas.
Om Scenes inte är NULL och efter funktionsanrop *Scenes är inte NULL för måste den som ringer förstöra *Scenes SafeArray.
*Scener är tvådimensionell array. För varje hittad scen finns det två långa värden: scenstart- och stoppbildnummer. Dessa värden är relativa till bearbetningsstartmedieposition.
Skicka icke-NULL-pekare som ThumbnailsParams för att aktivera miniatyrgenerering 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 Framgång 0x80040601 Ospecificerat fel 0x80040602 DirectShow är inte installerat eller versionen är för gammal 0x80040603 Det går inte att hämta videons längd. Kan vara stillbild 0x80040604 Dåligt argument 0x80040605 Det går inte att skapa enhetskontext 0x80040606 Objektet är upptaget med en annan uppgift 0x80040607 Framerate är lika med noll. Kan vara stillbild 0x80040608 Kan inte bygga graf
ISceneDetector2-gränssnitt
Detta gränssnitt härrör 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:
Metoden DetectScenesInFile2
HRESULT _stdcall DetectScenesInFile2 ([in] DetectorParameters2 *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (lång) *Scenes );
Till skillnad från DetectScenesInFile använder denna metod DetectorParameters2 uppsättning parametrar, så att du kan specificera färgrymd, starta och stoppa bearbetningspositioner.
Var uppmärksam på att sceners start- och stoppvärden som returneras av denna metod är relativa till Params.StartPosition- värdet.
Se DetectScenesInFile -beskrivningen för annan information.GetFrameRate-metoden
HRESULT _stdcall GetFrameRate ([out, retval] dubbel *pFrameRate );
Returnerar videobildfrekvens för den senast bearbetade filen. Användbar för time to frame-nummeröversättning.
Returnerar S_OK eller E_INVALIDARG om pFrameRate är NULL.
ISceneDetectorEvents händelsegränssnitt
Detta händelsegränssnitt tillhandahåller metoder för att hämta scendetekteringsinformation i realtid.
NewScene-metoden
HRESULT NewScene ([i] lång SceneIndex, [i] lång start, [i] lång stopp );
Händelse utlöst av detektor när ny scen definierats.
SceneIndex börjar från 0.
Start och Stop börjar också från 0 och är ramnummer.
När bearbetning startas via DetectScenesInFile2 -metoden är start- och stoppvärdena relativa till Params.StartPosition- värdet.Statusmetod
HRESULT Status ([i] long ScenesFound, [in] long CurrentFrame, [in] long TotalFrames, [out] long *AbortProcess );
Händelse avfyrades var 50:e ms och informerar klienten om processstatus.
AbortProcess är pekare till variabel. Således kan klienten ställa in * AbortProcess till 1 värde för att avbryta aktuell scendetektering.