Scene Detector – Video Scene Detection COM-objekt

Beskrivelse

Scene Detector er en kraftfuld COM-komponent til scenegenkendelse og scenebehandling. Den inkorporerer prisvindende HandySaw DS-teknologier til ekstremt nøjagtig og hurtig optisk scenegenkendelse. Det er orienteret mod softwarevirksomheder og udviklere, der ønsker at udvide deres produkter. En COM-komponent er et genanvendeligt softwaremodul, der følger Component Object Model -arkitekturen (COM), hvilket gør det muligt at bruge det i forskellige programmeringssprog og miljøer. Hvis du leder efter et selvstændigt program til scenedetektering, kan du bruge HandySaw DS ved at følge dette link .

Scene Detector-objekt behandler videofil og returnerer en liste over fundne scener. Den kan også gemme thumbnails for hver scene og informere den opkaldende applikation med det samme om hver ny fundet scene via tilbagekaldsgrænseflader under behandlingen.

Hovedtræk

  • Registrerer scener i næsten enhver videofil, der kan afspilles af Windows Media Player (på grund af brug af DirectShow API)
  • Hurtig og præcis algoritme
  • Nem integration
  • Rapporterer ny scene lige efter den er defineret, under behandling. Ingen grund til at vente på, at registreringen er færdig
  • Kan generere thumbnails - første og sidste frames billeder for hver scene og gemme dem i BMP- eller JPG-filer
  • Muligt at specificere kilde-, splitter- og videodekoderfiltre til brug under behandling
  • Kan registrere "hvide" og "sorte" scener
  • Kan arbejde i RGB og YUV farverum
  • Kan behandle en del af en mediefil - bruger kan angive start- og stopbehandlingspositioner

Demoversion og pris

Kontakt mig.

Dokumentation

sdScenesMergeKind enum

Bruges til at give instruktioner, hvad man skal gøre med korte scener.

sdMergeDelete = 0, Kort scene fjernet
sdMergeWithPrev = 1, Kort scene fusioneret med forrige
sdMergeWithNext = 2, Kort scene fusioneret med næste
sdMergeWithBoth = 3 Korte (midterste), forrige og næste scener slået sammen til en enkelt scene

DetektorParameterstruktur

Denne struktur indeholder scenedetektionsmotorparametre.

BSTR VideoFileName; Fuldt videofilnavn til påvisning.
int Threshold; Detektionstærskelværdi.
Anbefalede standardindstillinger er 19 for RGB-farverum og 5 for YUV.
Kan være fra 0 til 255.
Denne parameter er den vigtigste.
Når forskellen på to billeder er større end denne værdi, begynder en ny scene.
Således: lavere tærskel - flere scener.
int UpLumaTresh; Anvendes til registrering af "hvide fadeouts".
Anbefalet standard -1.
Kan være fra -1 til 255.
"-1" deaktiverer denne funktion.
Når den samlede billedlysstyrke er større end denne værdi, begynder en ny scene.
Med denne funktion er det muligt at definere rækkefølgen af sådanne lyse rammer som separat scene.
int BottomLumaTresh; Anvendes i "sort fadeout"-detektion.
Anbefalet standard -1.
Kan være fra -1 til 255.
"-1" deaktiverer denne funktion.
Når den samlede billedlysstyrke er mindre end denne værdi, begynder en ny scene.
Med denne funktion er det muligt at definere rækkefølgen af sådanne mørke rammer som separat scene.
int MinSceneLength;

Indstiller en minimumsvarighed for en detekteret scene (i rammer).
Anbefalet standard 5.
Kan være fra 0 til enhver positiv værdi.
Hvis længden af den definerede scene er mindre end denne værdi, fusionerede denne scene med forrige, næste eller begge scener, i henhold til Merge field value (se nedenfor).

int RegisterGraph; Kontrolregistrering af intern behandlingsgraf i Running Object Table (ROT).
Kan være 1 (registrer i ROT) eller 0 (registrerer ikke).
BSTR SourceFilterMoniker; Visningsnavn på den ønskede kildefilter-moniker, der bruges i den interne behandlingsgraf.
Hvis NULL - bruges standardfilter.
BSTR SplitterFilterMoniker; Visningsnavn på den ønskede splitterfilter-moniker, der bruges i den interne behandlingsgraf.
Hvis NULL - bruges standardfilter.
BSTR DecoderFilterMoniker; Visningsnavnet på den ønskede dekoderfilter-moniker, der bruges i den interne behandlingsgraf.
Hvis NULL - bruges standardfilter.
sdScenesMergeKind Merge; Når scenelængden er mindre end MinSceneLength, ændres scenen i henhold til værdien af denne parameter.

DetektorParameters2 struktur

Denne struktur udvider et sæt af scenedetektionsmotorparametre defineret i DetectorParameters- strukturen. Ud over medlemmer af DetectorParameters indeholder den:

int UseYUV; Gør det muligt at vælge farverum til scenegenkendelse.
Kan være 1(YUY2) eller 0(RGB24).
int Pad; Reserveret
double StartPosition; Angiver startmedieposition for scenedetektering på få sekunder.
Hvis dette ikke er nul, så glem ikke, at alle scenetider er i forhold til denne position.
double StopPosition; Specificerer stopmedieposition for scenedetektering i sekunder.
Indstil til nul for at ignorere.

MiniaturebillederParameterstruktur

Denne struktur indeholder parametre for generering af miniaturebilleder.

int JpegFormat; Vælg filformat. 0 - generer BMP-filer, 1 - generer JPEG-filer.
int JpegQuality; JPEG-komprimeringskvalitet. Heltal fra 0 til 100.
int ImagesPerScene; Billeder pr. scenenummer. 1 - kun startframe, 2 - start- og slutframes for hver scene.
double Scale; Thumbnail skaleringsfaktor. 1 - billede i fuld størrelse. Flydende komma værdi.
BSTR FileName;

Skabelon til miniaturebilleder til filnavne. Streng for "C" "printf" funktion med ét heltalsfelt.
For eksempel: "d:\filedir\filnavn%05d.jpg"
Du skal angive det fulde stinavn med korrekt udvidelse. Rammenummer vil blive indsat i stedet for %d symboler for at få et filnavn til et specifikt miniaturebillede.

ISceneDetector interface

Denne grænseflade giver metoder til scenedetektering:

DetectScenesInFile-metoden

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

Dette er den vigtigste scenegenkendelsesmetode.
Send registreringsparametre i Params og markør til SAFEARRAY i Scener.
Hvis Scener er NULL, returnerer funktionen ikke registrerede scener.
Den, der ringer, behøver ikke at oprette SafeArray, før denne metode kaldes.
Hvis Scenes ikke er NULL og efter funktionskald *Scenes er ikke NULL, skal den, der ringer, ødelægge *Scenes SafeArray.
*Scener er todimensionelle array. For hver fundet scene er der to lange værdier: scene start- og stopframe-numre. Disse værdier er i forhold til behandlingens startmedieposition.
Send en ikke-NULL-markør som ThumbnailsParams for at aktivere thumbnailsgenerering og angive dens parametre. Send NULL for at deaktivere thumbnailgenerering.

Returnerer en HRESULT- værdi. Mulige værdier omfatter følgende:

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 Dårligt argument
0x80040605 Kan ikke oprette enhedskontekst
0x80040606 Objektet er optaget af en anden opgave
0x80040607 Framerate er lig med nul. Kan være et stillbillede
0x80040608 Kan ikke bygge graf

ISceneDetector2 interface

Denne grænseflade stammer fra ISceneDetector- grænsefladen og giver udvidede metoder til scenedetektering. Ud over metoderne, der er arvet fra ISceneDetector , afslører ISceneDetector2- grænsefladen følgende metoder:

DetectScenesInFile2-metoden

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

I modsætning til DetectScenesInFile bruger denne metode DetectorParameters2 sæt parametre, så det tillader at specificere farverum, starte og stoppe behandlingspositioner.
Vær opmærksom på, at sceners start- og stopværdier, der returneres af denne metode, er relative til Params.StartPosition- værdien.
Se beskrivelsen DetectScenesInFile for yderligere oplysninger.

GetFrameRate-metoden

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

Returnerer video frame rate for sidst behandlede fil. Nyttig til time to frame-nummeroversættelse.
Returnerer S_OK eller E_INVALIDARG, hvis pFrameRate er NULL.

ISceneDetectorEvents begivenhedsgrænseflade

Denne begivenhedsgrænseflade giver metoder til at hente scenedetekteringsoplysninger i realtid.

NewScene metode

HRESULT NewScene ([i] lang SceneIndex, [i] lang Start, [i] lang Stop );

Hændelse udløst af detektor, når ny scene er defineret.
SceneIndex starter fra 0.
Start og Stop starter også fra 0 og er rammenumre.
Når behandlingen startes via DetectScenesInFile2- metoden, er Start- og Stop -værdierne relative til Params.StartPosition- værdien.

Status metode

HRESULT Status ([i] lange ScenerFundet, [i] lange CurrentFrame, [i] lange TotalFrames, [ud] lange *AbortProcess );

Hændelsen udløses hver 50 ms og informerer klienten om processtatus.
AbortProcess er pointer til variabel. Således kan klienten indstille * AbortProcess til 1 værdi for at annullere den aktuelle scenedetektering.