COM-component

Scene Detector

Videoscènedetectie voor ontwikkelaars. Integreer het in uw applicatie via COM.

Scene Detector is een COM-component gebouwd op HandySaw DS scèneherkenningstechnologie. Het verwerkt een videobestand en geeft een lijst terug van gedetecteerde scènes met frame-nauwkeurige grenzen. De component kan ook miniaturen genereren voor elke scène en nieuw gevonden scènes in realtime rapporteren via callback-interfaces. U hoeft niet te wachten tot de volledige detectie is voltooid.

Een COM-component volgt een standaardarchitectuur, waardoor het bruikbaar is vanuit vrijwel elke Windows-ontwikkelomgeving. Als u een zelfstandige desktoptool nodig heeft in plaats van een ontwikkelaarscomponent, dan is HandySaw DS de juiste keuze.

Brede formaatondersteuning

Verwerkt elk videobestand dat afspeelbaar is door Windows Media Player via de DirectShow API.

Realtime callbacks

Rapporteert elke nieuwe scène direct zodra deze is gevonden. Uw applicatie ontvangt resultaten tijdens de verwerking.

Genereren van miniaturen

Slaat optioneel het eerste en laatste frame van elke scène op als BMP- of JPEG-bestanden op elke gewenste schaal.

RGB- en YUV-kleurruimtes

Detectie kan worden uitgevoerd in RGB24- of YUY2-kleurruimte; elk heeft zijn eigen aanbevolen drempelwaarden.

Detectie van witte en zwarte scènes

Configureerbare luma-drempels identificeren overgangen naar wit en naar zwart als afzonderlijke scènes.

Gedeeltelijke bestandsverwerking

Specificeer start- en stopposities om scènes alleen binnen een gekozen segment van het mediabestand te detecteren.

Aangepaste filterpijplijn

Overschrijf de bron-, splitter- en decoder-DirectShow-filters die intern worden gebruikt voor maximale compatibiliteit.

Samenvoegen van korte scènes

Scènes die korter zijn dan een configureerbaar minimum worden automatisch samengevoegd met hun buren of verwijderd.

Neem contact met mij op voor een demoversie en prijsinformatie.

sdScenesMergeKind enum

Specificeert hoe korte scènes worden afgehandeld na detectie.

sdMergeDelete = 0 Korte scène wordt verwijderd.
sdMergeWithPrev = 1 Korte scène wordt samengevoegd met de vorige scène.
sdMergeWithNext = 2 Korte scène wordt samengevoegd met de volgende scène.
sdMergeWithBoth = 3 Korte scène, de vorige scène en de volgende scène worden allemaal samengevoegd tot één.

DetectorParameters structure

Kernparameters van de scènedetectie-engine.

BSTR VideoFileName Volledig pad naar het te verwerken videobestand.
int Threshold Detectiegevoeligheid. Bereik 0-255. Aanbevolen standaardwaarden: 19 (RGB) en 5 (YUV). Een nieuwe scène begint wanneer het verschil tussen twee opeenvolgende frames deze waarde overschrijdt. Lagere waarden produceren meer scènes.
int UpLumaTresh Drempelwaarde voor overgang naar wit. Bereik -1-255. Een waarde van -1 schakelt deze functie uit. Wanneer de algehele helderheid van het frame deze waarde overschrijdt, begint een nieuwe scène, waarbij heldere frames worden gegroepeerd.
int BottomLumaTresh Drempelwaarde voor overgang naar zwart. Bereik -1-255. Een waarde van -1 schakelt deze functie uit. Wanneer de algehele helderheid van het frame onder deze waarde zakt, begint een nieuwe scène, waarbij donkere frames worden gegroepeerd.
int MinSceneLength Minimale scèneduur in frames. Scènes die korter zijn dan deze waarde worden aangepast volgens het Merge-veld. Aanbevolen standaardwaarde: 5.
int RegisterGraph ROT-registratie van de interne verwerkingsgrafiek. 1: registreren. 0: niet registreren.
BSTR SourceFilterMoniker Weergavenaam van het gewenste bronfilter. NULL: gebruik standaard.
BSTR SplitterFilterMoniker Weergavenaam van het gewenste splitterfilter. NULL: gebruik standaard.
BSTR DecoderFilterMoniker Weergavenaam van het gewenste decoderfilter. NULL: gebruik standaard.
sdScenesMergeKind Merge Samenvoegstrategie toegepast wanneer een gedetecteerde scène korter is dan MinSceneLength.

DetectorParameters2 structure

Breidt DetectorParameters uit met kleurruimteselectie en gedeeltelijke bestandsverwerking. Bevat alle velden van DetectorParameters plus het volgende.

int UseYUV Kleurruimte. 1: YUY2. 0: RGB24.
int Pad Gereserveerd.
double StartPosition Startpositie van verwerking in seconden. Indien niet nul, zijn alle geretourneerde scènetijden relatief aan deze offset.
double StopPosition Stoppositie van verwerking in seconden. 0: verwerk tot einde van bestand.

ThumbnailsParameters structure

Beheert het genereren van miniaturen. Geef een pointer naar deze structuur door om miniaturen in te schakelen, of NULL om uit te schakelen.

int JpegFormat Uitvoerformaat. 0: BMP. 1: JPEG.
int JpegQuality JPEG-compressiekwaliteit, 0-100.
int ImagesPerScene 1: alleen startframe. 2: start- en eindframes per scène.
double Scale Schaalfactor voor miniaturen. 1.0: volledige grootte.
BSTR FileName Bestandsnaamsjabloon met C printf-syntaxis met één geheel getalveld, bijv. d:\dir\frame%05d.jpg. Het framenummer vervangt de %d-placeholder. Vereist volledig pad met de juiste extensie.

ISceneDetector interface

Kerninterface voor scènedetectie.

DetectScenesInFile

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

Hoofddetectiemethode. De aanroeper hoeft de SafeArray niet vooraf aan te maken - geef een pointer naar een SAFEARRAY-variabele door. Als *Scenes na de aanroep niet-NULL is, moet de aanroeper deze vernietigen. Het resultaat is een tweedimensionale array. Voor elke scène geven twee long-waarden de start- en stopframenummers aan, relatief aan de startpositie van de verwerking. Geef een niet-NULL ThumbnailsParams door om het genereren van miniaturen in te schakelen.

HRESULT Betekenis
0Succes
0x80040601Niet-gespecificeerde fout
0x80040602DirectShow niet geïnstalleerd of versie te oud
0x80040603Kan videoduur niet verkrijgen - mogelijk een stilstaand beeld
0x80040604Ongeldig argument
0x80040605Kan apparaatcontext niet aanmaken
0x80040606Object is bezig met een andere taak
0x80040607Framerate is nul - mogelijk een stilstaand beeld
0x80040608Kan grafiek niet opbouwen

ISceneDetector2 interface

Breidt ISceneDetector uit. Erft alle methoden en voegt het volgende toe.

DetectScenesInFile2

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

Hetzelfde als DetectScenesInFile, maar gebruikt DetectorParameters2, wat kleurruimteselectie en gedeeltelijke bestandsverwerking mogelijk maakt. De geretourneerde start- en stopwaarden van scènes zijn relatief aan Params.StartPosition.

GetFrameRate

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

Retourneert de framerate van het laatst verwerkte bestand. Handig voor het converteren van framenummers naar tijdstempels. Retourneert S_OK, of E_INVALIDARG als pFrameRate NULL is.

ISceneDetectorEvents interface

Callback-interface voor realtime detectie-events. Implementeer in uw applicatie om resultaten te ontvangen zodra ze worden gevonden.

NewScene

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

Wordt aangeroepen wanneer een nieuwe scène is voltooid. SceneIndex begint bij 0. Start en Stop zijn framenummers beginnend bij 0. Wanneer de verwerking is gestart via DetectScenesInFile2, zijn beide waarden relatief aan Params.StartPosition.

Status

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

Wordt elke 50 ms aangeroepen met de huidige verwerkingsvoortgang. Zet *AbortProcess op 1 om de lopende detectie te annuleren.