Scene Detector – Video Scene Detection COM-object

Beschrijving

Scene Detector is een krachtig COM-component voor scèneherkenning en scèneverwerking. Het bevat bekroonde HandySaw DS-technologieën voor extreem nauwkeurige en snelle optische scèneherkenning. Het is gericht op softwarebedrijven en ontwikkelaars die hun producten willen uitbreiden. Een COM-component is een herbruikbare softwaremodule die de Component Object Model (COM)-architectuur volgt, waardoor het kan worden gebruikt in verschillende programmeertalen en -omgevingen. Als u op zoek bent naar een zelfstandige toepassing voor scènedetectie, kunt u HandySaw DS gebruiken door deze link te volgen.

Scene Detector-object verwerkt videobestand en retourneert een lijst met gevonden scènes. Het kan ook miniaturen opslaan voor elke scène en de aanroepende toepassing onmiddellijk informeren over elke nieuwe gevonden scène via callback-interfaces tijdens de verwerking.

 

Belangrijkste kenmerken

  • Detecteert scènes in bijna elk videobestand dat kan worden afgespeeld door Windows Media Player (vanwege gebruik van DirectShow API)
  • Snel en nauwkeurig algoritme
  • Eenvoudige integratie
  • Rapporteert nieuwe scène direct nadat deze is gedefinieerd, tijdens verwerking. U hoeft niet te wachten tot de detectie is voltooid
  • Kan miniaturen genereren - eerste en laatste frame-afbeeldingen voor elke scène en deze opslaan in BMP- of JPG-bestanden
  • Mogelijkheid om bron-, splitter- en videodecoderfilters te specificeren die tijdens de verwerking moeten worden gebruikt
  • Kan "witte" en "zwarte" scènes detecteren
  • Kan werken in RGB- en YUV-kleurruimten
  • Kan een deel van een mediabestand verwerken - gebruiker kan begin- en stopverwerkingsposities specificeren

 

Demoversie en prijs

Neem contact met mij op.

 

Documentatie

 

sdScenesMergeKind enum

Wordt gebruikt om instructies te geven over wat te doen met korte scènes.

sdMergeDelete = 0, Korte scène verwijderd
sdMergeWithPrev = 1, Korte scène samengevoegd met vorige
sdMergeWithNext = 2, Korte scène samengevoegd met volgende
sdMergeWithBoth = 3 Korte (middelste), vorige en volgende scènes samengevoegd tot één enkele scène

 

DetectorParameters structure

Deze structuur bevat parameters van de scène-detectie-engine.

BSTR VideoFileName; Volledige videobestandsnaam voor detectie.
int Threshold; Detectiedrempelwaarde.
Aanbevolen standaardwaarden zijn 19 voor RGB-kleurruimte en 5 voor YUV.
Kan van 0 tot 255 zijn.
Deze parameter is de belangrijkste.
Wanneer het verschil van twee frames groter is dan deze waarde, begint een nieuwe scène.
Dus: lagere drempelwaarde - meer scènes.
int UpLumaTresh; Gebruikt bij detectie van "witte fade-outs".
Aanbevolen standaard -1.
Kan van -1 tot 255 zijn.
"-1" schakelt deze functie uit.
Wanneer de algehele frame-helderheid groter is dan deze waarde, begint een nieuwe scène.
Met deze functie is het mogelijk om een reeks van dergelijke heldere frames te definiëren als een afzonderlijke scène.
int BottomLumaTresh; Gebruikt bij detectie van "zwarte fade-outs".
Aanbevolen standaard -1.
Kan van -1 tot 255 zijn.
"-1" schakelt deze functie uit.
Wanneer de algehele frame-helderheid lager is dan deze waarde, begint een nieuwe scène.
Met deze functie is het mogelijk om een reeks van dergelijke donkere frames te definiëren als een afzonderlijke scène.
int MinSceneLength;

Stelt een minimale duur van een gedetecteerde scène in (in frames).
Aanbevolen standaard 5.
Kan van 0 tot elke positieve waarde zijn.
Als de lengte van de gedefinieerde scène kleiner is dan deze waarde, wordt deze scène samengevoegd met de vorige, volgende of beide scènes, afhankelijk van de waarde van het veld Merge (zie hieronder).

int RegisterGraph; Regelt de registratie van de interne verwerkingsgrafiek in de Running Object Table (ROT).
Kan 1 zijn (registreren in ROT) of 0 (niet registreren).
BSTR SourceFilterMoniker; Weergavenaam van de gewenste bronfiltermoniker die wordt gebruikt in de interne verwerkingsgrafiek.
Indien NULL - standaardfilter gebruikt.
BSTR SplitterFilterMoniker; Weergavenaam van de gewenste splitterfiltermoniker die wordt gebruikt in de interne verwerkingsgrafiek.
Indien NULL - standaardfilter gebruikt.
BSTR DecoderFilterMoniker; Weergavenaam van de gewenste decoderfiltermoniker die wordt gebruikt in de interne verwerkingsgrafiek.
Indien NULL - standaardfilter gebruikt.
sdScenesMergeKind Merge; Wanneer de scène-lengte kleiner is dan MinSceneLength, wordt de scène gewijzigd op basis van de waarde van deze parameter.

 

DetectorParameters2 structure

Deze structuur breidt een set parameters van de scène-detectie-engine uit die is gedefinieerd in de structuur DetectorParameters. Naast de leden van DetectorParameters bevat het:

int UseYUV; Hiermee kan de kleurruimte voor scènedetectie worden geselecteerd.
Kan 1(YUY2) of 0(RGB24) zijn.
int Pad; Gereserveerd
double StartPosition; Specificeert de begin-mediapositie voor scènedetectie in seconden.
Als dit niet nul is, vergeet dan niet dat alle scène-tijden relatief zijn ten opzichte van deze positie.
double StopPosition; Specificeert de stop-mediapositie voor scènedetectie in seconden.
Instellen op nul om te negeren.

 

ThumbnailsParameters structure

Deze structuur bevat parameters voor het genereren van miniaturen.

int JpegFormat; Selecteer bestandsindeling. 0 - genereer BMP-bestanden, 1 - genereer JPEG-bestanden.
int JpegQuality; JPEG-compressiekwaliteit. Integer van 0 tot 100.
int ImagesPerScene; Aantal afbeeldingen per scène. 1 - alleen beginframe, 2 - begin- en eindframes van elke scène.
double Scale; Schaalfactor voor miniaturen. 1 - afbeelding op volledige grootte. Floating point-waarde.
BSTR FileName;

Sjabloon voor bestandsnamen van miniaturen. String voor de "C" "printf"-functie met één integer-veld.
Bijvoorbeeld: "d:\filedir\filename%05d.jpg"
U moet een volledig pad met de juiste extensie opgeven. Het framenummer wordt ingevoegd in plaats van %d-symbolen om de bestandsnaam voor een specifieke miniatuur te verkrijgen.

 

ISceneDetector interface

Deze interface biedt methoden voor scènedetectie:

DetectScenesInFile method

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

Dit is de belangrijkste methode voor scènedetectie.
Geef detectieparameters door in Params en pointer naar SAFEARRAY in Scenes.
Als Scenes NULL is, retourneert de functie geen gedetecteerde scènelijst.
De aanroeper hoeft geen SafeArray te maken voordat deze methode wordt aangeroepen.
Als Scenes niet NULL is en na de functie-aanroep *Scenes ook niet NULL is, moet de aanroeper *Scenes SafeArray vernietigen.
*Scenes is een tweedimensionale array. Voor elke gevonden scène zijn er twee lange waarden: begin- en stopframe-nummers van de scène. Deze waarden zijn relatief ten opzichte van de begin-mediapositie van de verwerking.
Geef een niet-NULL pointer door als ThumbnailsParams om het genereren van miniaturen in te schakelen en de parameters te specificeren. Geef NULL door om het genereren van miniaturen uit te schakelen.

Retourneert een HRESULT waarde. Mogelijke waarden zijn:

0 Succes
0x80040601 Niet-gespecificeerde fout
0x80040602 DirectShow is niet geïnstalleerd of de versie is te oud
0x80040603 Kan videoduur niet verkrijgen. Mogelijk stilstaand beeld
0x80040604 Ongeldig argument
0x80040605 Kan geen device context maken
0x80040606 Object is bezig met een andere taak
0x80040607 Framesnelheid is nul. Mogelijk stilstaand beeld
0x80040608 Kan geen grafiek bouwen

 

ISceneDetector2 interface

Deze interface is afgeleid van de interface ISceneDetector en biedt uitgebreide methoden voor scènedetectie. Naast de methoden die zijn overgeërfd van ISceneDetector, biedt de interface ISceneDetector2 de volgende methoden:

DetectScenesInFile2 method

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

In tegenstelling tot DetectScenesInFile gebruikt deze methode de set parameters DetectorParameters2, waardoor het mogelijk is om de kleurruimte, begin- en stopverwerkingsposities te specificeren.
Let op het feit dat de begin- en stopwaarden van scènes die door deze methode worden geretourneerd, relatief zijn aan de waarde Params.StartPosition.
Zie de beschrijving van DetectScenesInFile voor andere informatie.

GetFrameRate method

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

Retourneert de video-framesnelheid van het laatst verwerkte bestand. Handig voor het vertalen van tijd naar framenummer.
Retourneert S_OK of E_INVALIDARG als pFrameRate NULL is.

 

ISceneDetectorEvents events interface

Deze events-interface biedt methoden voor het ophalen van scène-detectie-info in realtime.

NewScene method

HRESULT NewScene([in] long SceneIndex, [in] long Start, [in] long Stop );

Event afgevuurd door de detector wanneer een nieuwe scène is gedefinieerd.
SceneIndex begint vanaf 0.
Start en Stop beginnen ook vanaf 0 en zijn framenummers.
Wanneer de verwerking is gestart via de methode DetectScenesInFile2, zijn de waarden Start en Stop relatief aan de waarde Params.StartPosition.

Status method

HRESULT Status([in] long ScenesFound, [in] long CurrentFrame, [in] long TotalFrames, [out] long *AbortProcess );

Event wordt elke 50 ms afgevuurd en informeert de client over de processtatus.
AbortProcess is een pointer naar een variabele. De client kan dus *AbortProcess instellen op de waarde 1 om de huidige scènedetectie te annuleren.