COM-komponent
Scene Detector
Videoscenedetektering til udviklere. Integrer den i din applikation via COM.
Om
Scene Detector er en COM-komponent bygget på HandySaw DS-teknologi til scenegenkendelse. Den behandler en videofil og returnerer en liste over detekterede scener med rammenøjagtige grænser. Komponenten kan også generere miniaturer (thumbnails) for hver scene og rapportere nyfundne scener i realtid via callback-grænseflader. Du behøver ikke vente på, at hele detekteringsprocessen er færdig.
En COM-komponent følger standardarkitektur, hvilket gør den anvendelig fra stort set ethvert Windows-udviklingsmiljø. Hvis du har brug for et selvstændigt skrivebordsværktøj frem for en udviklerkomponent, er HandySaw DS det rette valg.
Funktioner
Bred formatunderstøttelse
Behandler enhver videofil, der kan afspilles af Windows Media Player via DirectShow API'et.
Realtids-callbacks
Rapporterer hver ny scene med det samme, når den findes. Din applikation modtager resultater under behandlingen.
Generering af miniaturer
Gemmer valgfrit første og sidste billede af hver scene som BMP- eller JPEG-filer i enhver skala.
RGB- og YUV-farverum
Detektering kan køre i RGB24- eller YUY2-farverum; hver har sine egne anbefalede standardtærskler.
Detektering af hvide og sorte scener
Konfigurerbare luma-tærskler identificerer fade-til-hvid og fade-til-sort overgange som separate scener.
Delvis filbehandling
Angiv start- og slutpositioner for kun at detektere scener inden for et valgt segment af mediefilen.
Brugerdefineret filter-pipeline
Tilsidesæt de interne DirectShow-filtre for kilde, splitter og dekoder for maksimal kompatibilitet.
Sammenfletning af korte scener
Scener, der er kortere end et konfigurerbart minimum, flettes automatisk med deres naboer eller fjernes.
Demo & Pris
Kontakt mig for en demoversion og prisoplysninger.
API-reference
sdScenesMergeKind enum
Angiver hvordan korte scener håndteres efter detektering.
| sdMergeDelete = 0 | Kort scene fjernes. |
| sdMergeWithPrev = 1 | Kort scene flettes med den forrige scene. |
| sdMergeWithNext = 2 | Kort scene flettes med den næste scene. |
| sdMergeWithBoth = 3 | Kort scene, den forrige scene og den næste scene flettes alle til én. |
DetectorParameters structure
Kerne-parametre for scenedetekteringsmotoren.
| BSTR VideoFileName | Fuld sti til videofilen, der skal behandles. |
| int Threshold | Detekteringsfølsomhed. Område 0-255. Anbefalede standarder: 19 (RGB) og 5 (YUV). En ny scene begynder, når forskellen mellem to på hinanden følgende billeder overstiger denne værdi. Lavere værdier producerer flere scener. |
| int UpLumaTresh | Tærskel for fade-til-hvid. Område -1-255. En værdi på -1 deaktiverer denne funktion. Når den samlede lysstyrke i billedet overstiger denne værdi, begynder en ny scene, der grupperer lyse billeder sammen. |
| int BottomLumaTresh | Tærskel for fade-til-sort. Område -1-255. En værdi på -1 deaktiverer denne funktion. Når den samlede lysstyrke i billedet falder under denne værdi, begynder en ny scene, der grupperer mørke billeder sammen. |
| int MinSceneLength | Minimum scenelængde i billeder (frames). Scener kortere end denne værdi ændres i henhold til Merge-feltet. Anbefalet standard: 5. |
| int RegisterGraph | ROT-registrering af den interne behandlingsgraf. 1: registrer. 0: registrer ikke. |
| BSTR SourceFilterMoniker | Visningsnavn for det ønskede kildefilter. NULL: brug standard. |
| BSTR SplitterFilterMoniker | Visningsnavn for det ønskede splitterfilter. NULL: brug standard. |
| BSTR DecoderFilterMoniker | Visningsnavn for det ønskede dekoderfilter. NULL: brug standard. |
| sdScenesMergeKind Merge | Sammenfletningsstrategi anvendt, når en detekteret scene er kortere end MinSceneLength. |
DetectorParameters2 structure
Udvider DetectorParameters med valg af farverum og delvis filbehandling. Indeholder alle felter fra DetectorParameters plus følgende.
| int UseYUV | Farverum. 1: YUY2. 0: RGB24. |
| int Pad | Reserveret. |
| double StartPosition | Behandlingsstartposition i sekunder. Når den ikke er nul, er alle returnerede scenetider relative til denne forskydning. |
| double StopPosition | Behandlingsstopposition i sekunder. 0: behandl til slutningen af filen. |
ThumbnailsParameters structure
Styrer generering af miniaturer. Send en pointer til denne struktur for at aktivere miniaturer, eller NULL for at deaktivere.
| int JpegFormat | Outputformat. 0: BMP. 1: JPEG. |
| int JpegQuality | JPEG-komprimeringskvalitet, 0-100. |
| int ImagesPerScene | 1: kun startbillede. 2: start- og slutbillede pr. scene. |
| double Scale | Skaleringsfaktor for miniaturer. 1.0: fuld størrelse. |
| BSTR FileName | Filnavnsskabelon ved brug af C printf-syntaks med ét heltalsfelt, f.eks. d:\dir\frame%05d.jpg. Billednummeret erstatter %d-pladsholderen. Kræver fuld sti med korrekt filendelse. |
ISceneDetector interface
Kerne-grænseflade for scenedetektering.
DetectScenesInFile
HRESULT _stdcall DetectScenesInFile(
[in] DetectorParameters *Params,
[in] ThumbnailsParameters *ThumbnailsParams,
[out] SAFEARRAY(long) *Scenes
);
Hoveddetekteringsmetode. Kalderen behøver ikke at oprette SafeArray på forhånd - send en pointer til en SAFEARRAY-variabel. Hvis *Scenes ikke er NULL efter kaldet, skal kalderen destruere det. Resultatet er et todimensionalt array. For hver scene angiver to long-værdier start- og slutbillednumre relative til behandlingsstartpositionen. Send en ikke-NULL ThumbnailsParams for at aktivere generering af miniaturer.
| HRESULT | Betydning |
|---|---|
| 0 | Succes |
| 0x80040601 | Uspecificeret fejl |
| 0x80040602 | DirectShow er ikke installeret eller versionen er for gammel |
| 0x80040603 | Kan ikke hente videovarighed - kan være et stillbillede |
| 0x80040604 | Ugyldigt argument |
| 0x80040605 | Kan ikke oprette enhedskontekst |
| 0x80040606 | Objektet er optaget af en anden opgave |
| 0x80040607 | Billedhastighed er nul - kan være et stillbillede |
| 0x80040608 | Kan ikke bygge graf |
ISceneDetector2 interface
Udvider ISceneDetector. Arver alle dens metoder og tilføjer følgende.
DetectScenesInFile2
HRESULT _stdcall DetectScenesInFile2(
[in] DetectorParameters2 *Params,
[in] ThumbnailsParameters *ThumbnailsParams,
[out] SAFEARRAY(long) *Scenes
);
Samme som DetectScenesInFile, men bruger DetectorParameters2, hvilket muliggør valg af farverum og delvis filbehandling. Returnerede scene-start- og slutværdier er relative til Params.StartPosition.
GetFrameRate
HRESULT _stdcall GetFrameRate(
[out, retval] double *pFrameRate
);
Returnerer billedhastigheden for den sidst behandlede fil. Nyttig til konvertering af billednumre til tidsstempler. Returnerer S_OK, eller E_INVALIDARG hvis pFrameRate er NULL.
ISceneDetectorEvents interface
Callback-grænseflade for realtids-detekteringshændelser. Implementer i din applikation for at modtage resultater, efterhånden som de findes.
NewScene
HRESULT NewScene(
[in] long SceneIndex,
[in] long Start,
[in] long Stop
);
Udløses, når en ny scene er færdiggjort. SceneIndex starter fra 0. Start og Stop er billednumre, der starter fra 0. Når behandlingen blev startet via DetectScenesInFile2, er begge værdier relative til Params.StartPosition.
Status
HRESULT Status(
[in] long ScenesFound,
[in] long CurrentFrame,
[in] long TotalFrames,
[out] long *AbortProcess
);
Udløses hvert 50. ms med den aktuelle behandlingsfremgang. Sæt *AbortProcess til 1 for at annullere den igangværende detektering.