COM-komponent

Scene Detector

Videoscenedetektering til udviklere. Integrer den i din applikation via COM.

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.

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.

Kontakt mig for en demoversion og prisoplysninger.

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
0Succes
0x80040601Uspecificeret fejl
0x80040602DirectShow er ikke installeret eller versionen er for gammel
0x80040603Kan ikke hente videovarighed - kan være et stillbillede
0x80040604Ugyldigt argument
0x80040605Kan ikke oprette enhedskontekst
0x80040606Objektet er optaget af en anden opgave
0x80040607Billedhastighed er nul - kan være et stillbillede
0x80040608Kan 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.