Scene Detector – COM-Objekt zur Erkennung von Videoszenen
Beschreibung
Scene Detector ist eine leistungsstarke COM-Komponente zur Szenenerkennung und Szenenverarbeitung. Es enthält preisgekrönte HandySaw DS-Technologien für eine äußerst genaue und schnelle optische Szenenerkennung. Es richtet sich an Softwareunternehmen und Entwickler, die ihre Produkte erweitern möchten. Eine COM-Komponente ist ein wiederverwendbares Softwaremodul, das der Component Object Model (COM)-Architektur folgt und die Verwendung in verschiedenen Programmiersprachen und Umgebungen ermöglicht. Wenn Sie nach einer eigenständigen Anwendung zur Szenenerkennung suchen, können Sie HandySaw DS verwenden, indem Sie diesem Link folgen.
Das Szenendetektorobjekt verarbeitet die Videodatei und gibt eine Liste der gefundenen Szenen zurück. Es kann auch Miniaturansichten für jede Szene speichern und die aufrufende Anwendung während der Verarbeitung über Callback-Schnittstellen sofort über jede neu gefundene Szene informieren.
Haupteigenschaften
- Erkennt Szenen in fast jeder Videodatei, die vom Windows Media Player abgespielt werden kann (aufgrund der Verwendung der DirectShow-API).
- Schneller und genauer Algorithmus
- Einfache Integration
- Meldet eine neue Szene direkt nach ihrer Definition während der Verarbeitung. Sie müssen nicht warten, bis die Erkennung abgeschlossen ist
- Kann Miniaturansichten generieren – Bilder des ersten und letzten Einzelbilds für jede Szene – und diese in BMP- oder JPG-Dateien speichern
- Es ist möglich, Quell-, Splitter- und Videodecoderfilter anzugeben, die während der Verarbeitung verwendet werden sollen
- Kann „weiße“ und „schwarze“ Szenen erkennen
- Kann in RGB- und YUV-Farbräumen arbeiten
- Kann einen Teil einer Mediendatei verarbeiten – der Benutzer kann Start- und Endpositionen für die Verarbeitung angeben
Demoversion und Preis
Kontaktieren Sie mich.
Dokumentation
sdScenesMergeKind-Enumeration
Wird verwendet, um Anweisungen zu geben, was mit kurzen Szenen zu tun ist.
sdMergeDelete = 0, | Kurze Szene entfernt |
sdMergeWithPrev = 1, | Kurze Szene verschmilzt mit der vorherigen |
sdMergeWithNext = 2, | Kurze Szene verschmilzt mit der nächsten |
sdMergeWithBoth = 3 | Kurze (mittlere), vorherige und nächste Szene werden zu einer einzigen Szene verschmolzen |
DetectorParameters-Struktur
Diese Struktur enthält Parameter der Szenenerkennungs-Engine.
BSTR VideoFileName; | Vollständiger Name der Videodatei zur Erkennung. |
int Threshold; | Erkennungsschwellenwert. Empfohlene Standardwerte sind 19 für den RGB-Farbraum und 5 für YUV. Kann zwischen 0 und 255 liegen. Dieser Parameter ist der wichtigste. Wenn die Differenz zwischen zwei Bildern größer als dieser Wert ist, beginnt eine neue Szene. Also: niedrigerer Schwellenwert – mehr Szenen. |
int UpLumaTresh; | Wird bei der Erkennung von „weißen Ausblendungen“ verwendet. Empfohlener Standardwert -1. Kann zwischen -1 und 255 liegen. „-1“ deaktiviert diese Funktion. Wenn die Gesamthelligkeit des Bildes größer als dieser Wert ist, beginnt eine neue Szene. Mit dieser Funktion ist es möglich, die Abfolge solcher hellen Bilder als separate Szene zu definieren. |
int BottomLumaTresh; | Wird bei der Erkennung von „Schwarz-Fadeouts“ verwendet. Empfohlener Standardwert -1. Kann zwischen -1 und 255 liegen. „-1“ deaktiviert diese Funktion. Wenn die Gesamthelligkeit des Bildes unter diesem Wert liegt, beginnt eine neue Szene. Mit dieser Funktion ist es möglich, die Abfolge solcher Darkframes als separate Szene zu definieren. |
int MinSceneLength; | Legt eine Mindestdauer einer erkannten Szene fest (in Bildern). |
int RegisterGraph; | Kontrollieren Sie die Registrierung des internen Verarbeitungsgraphen in der Running Object Table (ROT). Kann 1 (im ROT registrieren) oder 0 (nicht registrieren) sein. |
BSTR SourceFilterMoniker; | Anzeigename des gewünschten Quellfiltermonikers, der im internen Verarbeitungsdiagramm verwendet wird. Wenn NULL – Standardfilter verwendet. |
BSTR SplitterFilterMoniker; | Anzeigename des gewünschten Splitterfiltermonikers, der im internen Verarbeitungsdiagramm verwendet wird. Wenn NULL – Standardfilter verwendet. |
BSTR DecoderFilterMoniker; | Anzeigename des gewünschten Decoder-Filtermonikers, der im internen Verarbeitungsdiagramm verwendet wird. Wenn NULL – Standardfilter verwendet. |
sdScenesMergeKind Merge; | Wenn die Szenenlänge kleiner als MinSceneLength ist, wird die Szene entsprechend dem Wert dieses Parameters geändert. |
DetectorParameters2-Struktur
Diese Struktur erweitert einen Satz von Szenenerkennungs-Engine-Parametern, die in der DetectorParameters- Struktur definiert sind. Zusätzlich zu den Mitgliedern von DetectorParameters enthält es:
int UseYUV; | Ermöglicht die Auswahl des Farbraums für die Szenenerkennung. Kann 1 (YUY2) oder 0 (RGB24) sein. |
int Pad; | Reserviert |
double StartPosition; | Gibt die Startposition des Mediums für die Szenenerkennung in Sekunden an. Wenn dieser Wert ungleich Null ist, vergessen Sie nicht, dass alle Szenenzeiten relativ zu dieser Position sind. |
double StopPosition; | Gibt die Stoppposition des Mediums für die Szenenerkennung in Sekunden an. Zum Ignorieren auf Null setzen. |
ThumbnailsParameters-Struktur
Diese Struktur enthält Parameter für die Generierung von Miniaturansichten.
int JpegFormat; | Dateiformat auswählen. 0 – BMP-Dateien generieren, 1 – JPEG-Dateien generieren. |
int JpegQuality; | JPEG-Komprimierungsqualität. Ganzzahl von 0 bis 100. |
int ImagesPerScene; | Bilder pro Szenennummer. 1 – nur Startbild, 2 – Start- und Endbild jeder Szene. |
double Scale; | Miniaturbild-Skalierungsfaktor. 1 - Vollbild. Gleitkommawert. |
BSTR FileName; | Vorlage für Dateinamen von Miniaturansichten. String für die „C“-Funktion „printf“ mit einem ganzzahligen Feld. |
ISceneDetector-Schnittstelle
Diese Schnittstelle bietet Methoden zur Szenenerkennung:
DetectScenesInFile-Methode
HRESULT _stdcall DetectScenesInFile ([in] DetectorParameters *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (long) *Scenes );
Dies ist die Hauptmethode zur Szenenerkennung.
Übergeben Sie Erkennungsparameter in Params und einen Zeiger auf SAFEARRAY in Scenes.
Wenn „Szenen“ NULL ist, gibt die Funktion keine Liste der erkannten Szenen zurück.
Der Aufrufer muss SafeArray nicht erstellen, bevor er diese Methode aufruft.
Wenn Scenes nicht NULL ist und nach dem Funktionsaufruf auch *Scenes nicht NULL ist, muss der Aufrufer *Scenes SafeArray zerstören.
*Szenen sind zweidimensionale Arrays. Für jede gefundene Szene gibt es zwei lange Werte: Szenenstart- und -stoppbildnummern. Diese Werte beziehen sich auf die Position des Verarbeitungsstartmediums.
Übergeben Sie einen Nicht-NULL-Zeiger als ThumbnailsParams , um die Generierung von Miniaturansichten zu aktivieren und die Parameter anzugeben. Übergeben Sie NULL, um die Miniaturbildgenerierung zu deaktivieren.Gibt einen HRESULT- Wert zurück. Zu den möglichen Werten gehören:
0 Erfolg 0x80040601 Unspezifizierter Fehler 0x80040602 DirectShow ist nicht installiert oder die Version ist zu alt 0x80040603 Die Videodauer kann nicht ermittelt werden. Möglicherweise handelt es sich um ein Standbild 0x80040604 Schlechtes Argument 0x80040605 Gerätekontext kann nicht erstellt werden 0x80040606 Das Objekt ist mit einer anderen Aufgabe beschäftigt 0x80040607 Framerate ist gleich Null. Möglicherweise handelt es sich um ein Standbild 0x80040608 Diagramm kann nicht erstellt werden
ISceneDetector2-Schnittstelle
Diese Schnittstelle leitet sich von der ISceneDetector- Schnittstelle ab und bietet erweiterte Methoden zur Szenenerkennung. Zusätzlich zu den von ISceneDetector geerbten Methoden stellt die ISceneDetector2- Schnittstelle die folgenden Methoden bereit:
DetectScenesInFile2-Methode
HRESULT _stdcall DetectScenesInFile2 ([in] DetectorParameters2 *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (long) *Scenes );
Im Gegensatz zu DetectScenesInFile verwendet diese Methode den Parametersatz DetectorParameters2 und ermöglicht so die Angabe des Farbraums sowie der Start- und Stopppositionen der Verarbeitung.
Beachten Sie, dass die von dieser Methode zurückgegebenen Start- und Stoppwerte der Szenen relativ zum Params.StartPosition- Wert sind.
Weitere Informationen finden Sie in der Beschreibung von DetectScenesInFile .GetFrameRate-Methode
HRESULT _stdcall GetFrameRate ([out, retval] double *pFrameRate );
Gibt die Videobildrate der zuletzt verarbeiteten Datei zurück. Nützlich für die Zeit-zu-Frame-Zahlenübersetzung.
Gibt S_OK oder E_INVALIDARG zurück, wenn pFrameRate NULL ist.
ISceneDetectorEvents-Ereignisschnittstelle
Diese Ereignisschnittstelle bietet Methoden zum Abrufen von Szenenerkennungsinformationen in Echtzeit.
NewScene-Methode
HRESULT NewScene ([in] long SceneIndex, [in] long Start, [in] long Stop );
Vom Detektor ausgelöstes Ereignis, wenn eine neue Szene definiert wird.
SceneIndex beginnt bei 0.
Start und Stopp beginnen ebenfalls bei 0 und sind Bildnummern.
Wenn die Verarbeitung über die DetectScenesInFile2 -Methode gestartet wird, sind die Start- und Stop- Werte relativ zum Params.StartPosition- Wert.Statusmethode
HRESULT Status ([in] long ScenesFound, [in] long CurrentFrame, [in] long TotalFrames, [out] long *AbortProcess );
Das Ereignis wird alle 50 ms ausgelöst und informiert den Client über den Prozessstatus.
AbortProcess ist ein Zeiger auf eine Variable. Somit kann der Client * AbortProcess auf den Wert 1 setzen, um die aktuelle Szenenerkennung abzubrechen.