Componente COM

Scene Detector

Rilevamento di scene video per sviluppatori. Integralo nella tua applicazione tramite COM.

Scene Detector è un componente COM basato sulla tecnologia di riconoscimento scene HandySaw DS. Elabora un file video e restituisce un elenco di scene rilevate con confini precisi al fotogramma. Il componente può anche generare miniature per ogni scena e segnalare le scene appena trovate in tempo reale tramite interfacce di callback. Non è necessario attendere il completamento dell'intero processo di rilevamento.

Un componente COM segue un'architettura standard, rendendolo utilizzabile da praticamente qualsiasi ambiente di sviluppo Windows. Se hai bisogno di uno strumento desktop autonomo anziché di un componente per sviluppatori, HandySaw DS è la scelta giusta.

Ampio supporto di formati

Elabora qualsiasi file video riproducibile da Windows Media Player tramite l'API DirectShow.

Callback in tempo reale

Segnala ogni nuova scena immediatamente non appena viene trovata. La tua applicazione riceve i risultati durante l'elaborazione.

Generazione di miniature

Salva facoltativamente il primo e l'ultimo fotogramma di ogni scena come file BMP o JPEG a qualsiasi scala.

Spazi colore RGB e YUV

Il rilevamento può essere eseguito nello spazio colore RGB24 o YUY2; ognuno ha i propri valori di soglia predefiniti consigliati.

Rilevamento scene bianche e nere

Le soglie di luminanza configurabili identificano le transizioni in dissolvenza verso il bianco e verso il nero come scene separate.

Elaborazione parziale del file

Specifica le posizioni di inizio e fine per rilevare le scene solo all'interno di un segmento scelto del file multimediale.

Pipeline di filtri personalizzata

Sovrascrivi i filtri DirectShow di origine, splitter e decodificatore utilizzati internamente per la massima compatibilità.

Unione di scene brevi

Le scene più brevi di un minimo configurabile vengono automaticamente unite ai vicini o rimosse.

Contattami per la versione demo e informazioni sui prezzi.

sdScenesMergeKind enum

Specifica come vengono gestite le scene brevi dopo il rilevamento.

sdMergeDelete = 0 La scena breve viene rimossa.
sdMergeWithPrev = 1 La scena breve viene unita alla scena precedente.
sdMergeWithNext = 2 La scena breve viene unita alla scena successiva.
sdMergeWithBoth = 3 La scena breve, la scena precedente e la scena successiva vengono tutte unite in una sola.

DetectorParameters structure

Parametri principali del motore di rilevamento scene.

BSTR VideoFileName Percorso completo del file video da elaborare.
int Threshold Sensibilità di rilevamento. Intervallo 0-255. Predefiniti consigliati: 19 (RGB) e 5 (YUV). Una nuova scena inizia quando la differenza tra due fotogrammi consecutivi supera questo valore. Valori più bassi producono più scene.
int UpLumaTresh Soglia di dissolvenza verso il bianco. Intervallo -1-255. Un valore di -1 disabilita questa funzione. Quando la luminosità complessiva del fotogramma supera questo valore, inizia una nuova scena, raggruppando insieme i fotogrammi luminosi.
int BottomLumaTresh Soglia di dissolvenza verso il nero. Intervallo -1-255. Un valore di -1 disabilita questa funzione. Quando la luminosità complessiva del fotogramma scende al di sotto di questo valore, inizia una nuova scena, raggruppando insieme i fotogrammi scuri.
int MinSceneLength Durata minima della scena in fotogrammi. Le scene più brevi di questo valore vengono modificate in base al campo Merge. Predefinito consigliato: 5.
int RegisterGraph Registrazione ROT del grafo di elaborazione interno. 1: registra. 0: non registrare.
BSTR SourceFilterMoniker Nome visualizzato del filtro di origine desiderato. NULL: usa il predefinito.
BSTR SplitterFilterMoniker Nome visualizzato del filtro splitter desiderato. NULL: usa il predefinito.
BSTR DecoderFilterMoniker Nome visualizzato del filtro decodificatore desiderato. NULL: usa il predefinito.
sdScenesMergeKind Merge Strategia di unione applicata quando una scena rilevata è più breve di MinSceneLength.

DetectorParameters2 structure

Estende DetectorParameters con la selezione dello spazio colore e l'elaborazione parziale del file. Contiene tutti i campi di DetectorParameters più i seguenti.

int UseYUV Spazio colore. 1: YUY2. 0: RGB24.
int Pad Riservato.
double StartPosition Posizione di inizio elaborazione in secondi. Quando non è zero, tutti i tempi delle scene restituiti sono relativi a questo offset.
double StopPosition Posizione di fine elaborazione in secondi. 0: elabora fino alla fine del file.

ThumbnailsParameters structure

Controlla la generazione delle miniature. Passa un puntatore a questa struttura per abilitare le miniature, o NULL per disabilitarle.

int JpegFormat Formato di output. 0: BMP. 1: JPEG.
int JpegQuality Qualità di compressione JPEG, 0-100.
int ImagesPerScene 1: solo fotogramma iniziale. 2: fotogrammi iniziale e finale per scena.
double Scale Fattore di scala della miniatura. 1.0: dimensione intera.
BSTR FileName Modello di nome file che utilizza la sintassi printf del C con un campo intero, ad esempio d:\dir\frame%05d.jpg. Il numero del fotogramma sostituisce il segnaposto %d. Richiede il percorso completo con l'estensione corretta.

ISceneDetector interface

Interfaccia principale di rilevamento scene.

DetectScenesInFile

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

Metodo di rilevamento principale. Il chiamante non ha bisogno di creare il SafeArray in anticipo: passa un puntatore a una variabile SAFEARRAY. Se *Scenes non è NULL dopo la chiamata, il chiamante deve distruggerlo. Il risultato è un array bidimensionale. Per ogni scena, due valori long forniscono i numeri dei fotogrammi di inizio e fine relativi alla posizione di inizio elaborazione. Passa ThumbnailsParams non NULL per abilitare la generazione di miniature.

HRESULT Significato
0Successo
0x80040601Errore non specificato
0x80040602DirectShow non installato o versione troppo vecchia
0x80040603Impossibile ottenere la durata del video - potrebbe essere un'immagine statica
0x80040604Argomento errato
0x80040605Impossibile creare il contesto del dispositivo
0x80040606L'oggetto è occupato con un'altra attività
0x80040607Il frame rate è uguale a zero - potrebbe essere un'immagine statica
0x80040608Impossibile costruire il grafo

ISceneDetector2 interface

Estende ISceneDetector. Eredita tutti i suoi metodi e aggiunge i seguenti.

DetectScenesInFile2

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

Uguale a DetectScenesInFile, ma utilizza DetectorParameters2, abilitando la selezione dello spazio colore e l'elaborazione parziale del file. I valori di inizio e fine scena restituiti sono relativi a Params.StartPosition.

GetFrameRate

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

Restituisce il frame rate dell'ultimo file elaborato. Utile per convertire i numeri dei fotogrammi in timestamp. Restituisce S_OK, o E_INVALIDARG se pFrameRate è NULL.

ISceneDetectorEvents interface

Interfaccia di callback per eventi di rilevamento in tempo reale. Implementala nella tua applicazione per ricevere i risultati non appena vengono trovati.

NewScene

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

Attivato quando una nuova scena viene finalizzata. SceneIndex parte da 0. Start e Stop sono numeri di fotogramma che partono da 0. Quando l'elaborazione è stata avviata tramite DetectScenesInFile2, entrambi i valori sono relativi a Params.StartPosition.

Status

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

Attivato ogni 50 ms con l'avanzamento dell'elaborazione corrente. Imposta *AbortProcess su 1 per annullare il rilevamento in corso.