Scene Detector – Videoscènedetectie COM-object

Beschrijving

Scene Detector is een krachtige 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 deze in verschillende programmeertalen en omgevingen kan worden gebruikt. Als u op zoek bent naar een zelfstandige toepassing voor scènedetectie, kunt u HandySaw DS gebruiken door deze link te volgen.

Het Scene Detector-object verwerkt het videobestand en retourneert een lijst met gevonden scènes. Het kan ook miniaturen voor elke scène opslaan en de bellertoepassing tijdens de verwerking onmiddellijk informeren over elke nieuw gevonden scène via terugbelinterfaces.

Belangrijkste kenmerken

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

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 de vorige
sdMergeWithNext = 2, Korte scène samengevoegd met de volgende
sdMergeWithBoth = 3 Korte (midden), vorige en volgende scènes samengevoegd tot één enkele scène

DetectorParameters-structuur

Deze structuur bevat parameters voor de scènedetectie-engine.

BSTR VideoFileName; Volledige videobestandsnaam voor detectie.
int Threshold; Detectiedrempelwaarde.
Aanbevolen standaardwaarden zijn 19 voor RGB-kleurruimte en 5 voor YUV.
Kan variëren van 0 tot 255.
Deze parameter is de belangrijkste.
Wanneer het verschil van twee frames groter is dan deze waarde, begint een nieuwe scène.
Dus: lagere drempel - 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 helderheid van het frame groter is dan deze waarde, begint een nieuwe scène.
Met deze functie is het mogelijk om de reeks van zulke heldere frames als afzonderlijke scènes te definiëren.
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 helderheid van het frame kleiner is dan deze waarde, begint een nieuwe scène.
Met deze functie is het mogelijk om de reeks van dergelijke donkere frames als afzonderlijke scènes te definiëren.
int MinSceneLength;

Stelt een minimale duur in van een gedetecteerde scène (in frames).
Aanbevolen standaard 5.
Kan variëren van 0 tot elke positieve waarde.
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, volgens de waarde van het samenvoegveld (zie hieronder).

int RegisterGraph; Controleregistratie van de interne verwerkingsgrafiek in de Running Object Table (ROT).
Kan 1 zijn (registreren in ROT) of 0 (registreert niet).
BSTR SourceFilterMoniker; Weergavenaam van de gewenste bronfilternaam die wordt gebruikt in de interne verwerkingsgrafiek.
Indien NULL: standaardfilter gebruikt.
BSTR SplitterFilterMoniker; Weergavenaam van de gewenste splitterfilternaam die wordt gebruikt in de interne verwerkingsgrafiek.
Indien NULL: standaardfilter gebruikt.
BSTR DecoderFilterMoniker; Weergavenaam van de gewenste decoderfilternaam die wordt gebruikt in de interne verwerkingsgrafiek.
Indien NULL: standaardfilter gebruikt.
sdScenesMergeKind Merge; Wanneer de scènelengte kleiner is dan MinSceneLength, wordt de scène aangepast op basis van de waarde van deze parameter.

DetectorParameters2-structuur

Deze structuur breidt een set parameters voor de scènedetectie-engine uit die zijn gedefinieerd in de DetectorParameters- structuur. Naast leden van DetectorParameters bevat het:

int UseYUV; Maakt het mogelijk om de kleurruimte voor scènedetectie te selecteren.
Kan 1(YUY2) of 0(RGB24) zijn.
int Pad; Gereserveerd
double StartPosition; Specificeert de startmediapositie voor scènedetectie in seconden.
Als dit niet nul is, vergeet dan niet dat alle scènetijden relatief zijn ten opzichte van deze positie.
double StopPosition; Specificeert de stopmediapositie voor scènedetectie in seconden.
Zet op nul om te negeren.

ThumbnailsParameters-structuur

Deze structuur bevat parameters voor het genereren van miniaturen.

int JpegFormat; Selecteer bestandsformaat. 0 - genereer BMP-bestanden, 1 - genereer JPEG-bestanden.
int JpegQuality; JPEG-compressiekwaliteit. Geheel getal van 0 tot 100.
int ImagesPerScene; Afbeeldingen per scènenummer. 1 - alleen startframe, 2 - start- en eindframes van elke scène.
double Scale; Schaalfactor van miniatuur. 1 - afbeelding op volledige grootte. Drijvende-kommawaarde.
BSTR FileName;

Sjabloon voor miniaturen bestandsnamen. Tekenreeks voor "C" "printf"-functie met één geheel getalveld.
Bijvoorbeeld: "d:\filedir\bestandsnaam%05d.jpg"
U moet de volledige padnaam 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-methode

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

Dit is de belangrijkste scènedetectiemethode.
Geef detectieparameters door in Params en wijs naar SAFEARRAY in Scenes.
Als Scènes NULL is, retourneert de functie de lijst met gedetecteerde scènes niet.
De beller hoeft SafeArray niet te maken voordat hij deze methode aanroept.
Als Scenes niet NULL is en na functieaanroep *Scenes ook niet NULL is, moet de aanroeper *Scenes SafeArray vernietigen.
*Scènes zijn tweedimensionale array. Voor elke gevonden scène zijn er twee lange waarden: start- en stopframenummers van de scène. Deze waarden zijn relatief ten opzichte van de startmediapositie van de verwerking.
Geef de niet-NULL-aanwijzer door als ThumbnailsParams om het genereren van miniaturen in te schakelen en de parameters ervan op te geven. Geef NULL door om het genereren van miniaturen uit te schakelen.

Retourneert een HRESULT- waarde. Mogelijke waarden zijn onder meer:

0 Succes
0x80040601 Ongespecificeerde fout
0x80040602 DirectShow is niet geïnstalleerd of de versie is te oud
0x80040603 Kan de videoduur niet verkrijgen. Mogelijk stilstaand beeld
0x80040604 Slecht betoog
0x80040605 Kan apparaatcontext niet maken
0x80040606 Object is bezig met een andere taak
0x80040607 Framerate is gelijk aan nul. Mogelijk stilstaand beeld
0x80040608 Kan grafiek niet bouwen

ISceneDetector2-interface

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

DetectScenesInFile2-methode

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

In tegenstelling tot DetectScenesInFile gebruikt deze methode een set parameters van DetectorParameters2 , zodat u de kleurruimte kunt specificeren en verwerkingsposities kunt starten en stoppen.
Houd er rekening mee dat de start- en stopwaarden van scènes die door deze methode worden geretourneerd relatief zijn aan de waarde van Params.StartPosition .
Zie DetectScenesInFile- beschrijving voor andere informatie.

GetFrameRate-methode

HRESULT _stdcall GetFrameRate ([uit, retval] dubbel *pFrameRate);

Retourneert de videoframesnelheid van het laatst verwerkte bestand. Handig voor tijd-tot-frame-nummervertaling.
Retourneert S_OK of E_INVALIDARG als pFrameRate NULL is.

ISceneDetectorEvents-gebeurtenisinterface

Deze gebeurtenisseninterface biedt methoden voor het in realtime ophalen van scènedetectie-informatie.

NewScene-methode

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

Gebeurtenis geactiveerd door detector wanneer nieuwe scène is gedefinieerd.
SceneIndex begint vanaf 0.
Start en Stop beginnen ook vanaf 0 en zijn framenummers.
Wanneer de verwerking wordt gestart via de DetectScenesInFile2- methode, zijn de Start- en Stop- waarden relatief ten opzichte van de Params.StartPosition- waarde.

Statusmethode

HRESULT Status ([in] lang ScenesFound, [in] lang CurrentFrame, [in] lang TotalFrames, [uit] lang *AbortProcess );

Gebeurtenis wordt elke 50 ms geactiveerd en informeert de klant over de processtatus.
AbortProcess is een verwijzing naar een variabele. Zo kan de klant * AbortProcess instellen op 1 waarde om de huidige scènedetectie te annuleren.