Componente COM

Scene Detector

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

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

Un componente COM segue un'architettura standard, il che lo rende utilizzabile da quasi ogni ambiente di sviluppo Windows. Se preferisci uno strumento desktop autonomo invece di un componente per sviluppatori, HandySaw DS è la scelta giusta.

Ampio supporto dei formati

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

Callback in tempo reale

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

Generazione di miniature

Salva opzionalmente il primo e l'ultimo frame 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 di scene bianche e nere

Soglie di luma configurabili identificano le transizioni fade-to-white (dissolvenza al bianco) e fade-to-black (dissolvenza al 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 (source), splitter e decoder utilizzati internamente per la massima compatibilità.

Accorpamento di scene brevi

Le scene più brevi di un minimo configurabile vengono accorpate automaticamente a quelle adiacenti o rimosse.

Contattami per ottenere 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 accorpata alla scena precedente.
sdMergeWithNext = 2 La scena breve viene accorpata alla scena successiva.
sdMergeWithBoth = 3 La scena breve, la precedente e la successiva vengono tutte accorpate in una sola.

DetectorParameters structure

Parametri principali del motore di rilevamento scene.

BSTR VideoFileName Percorso completo del file video da elaborare.
int Threshold Sensibilità del rilevamento. Intervallo 0–255. Valori predefiniti consigliati: 19 (RGB) e 5 (YUV). Una nuova scena inizia quando la differenza tra due frame consecutivi supera questo valore. Valori più bassi producono più scene.
int UpLumaTresh Soglia fade-to-white. Intervallo -1–255. Un valore di -1 disabilita questa funzione. Quando la luminosità complessiva del frame supera questo valore, inizia una nuova scena, raggruppando i frame luminosi.
int BottomLumaTresh Soglia fade-to-black. Intervallo -1–255. Un valore di -1 disabilita questa funzione. Quando la luminosità complessiva del frame scende sotto questo valore, inizia una nuova scena, raggruppando i frame scuri.
int MinSceneLength Durata minima della scena in frame. Le scene più brevi di questo valore vengono modificate in base al campo Merge. Valore predefinito consigliato: 5.
int RegisterGraph Registrazione ROT del grafo di elaborazione interno. 1: registra. 0: non registrare.
BSTR SourceFilterMoniker Nome visualizzato del filtro source desiderato. NULL: usa il predefinito.
BSTR SplitterFilterMoniker Nome visualizzato del filtro splitter desiderato. NULL: usa il predefinito.
BSTR DecoderFilterMoniker Nome visualizzato del filtro decoder desiderato. NULL: usa il predefinito.
sdScenesMergeKind Merge Strategia di accorpamento 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 è diversa da zero, tutti i tempi delle scene restituite 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, oppure NULL per disabilitarle.

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

ISceneDetector interface

Interfaccia principale per il rilevamento delle scene.

DetectScenesInFile

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

Metodo di rilevamento principale. Il chiamante non deve creare il SafeArray preventivamente: 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 indicano i numeri del frame di inizio e fine relativi alla posizione di inizio elaborazione. Passa ThumbnailsParams non NULL per abilitare la generazione delle miniature.

HRESULT Significato
0Successo
0x80040601Errore non specificato
0x80040602DirectShow non installato o versione troppo vecchia
0x80040603Impossibile ottenere la durata del video - potrebbe trattarsi di un'immagine statica
0x80040604Argomento non valido
0x80040605Impossibile creare il contesto del dispositivo
0x80040606L'oggetto è occupato in un'altra attività
0x80040607Il frame rate è pari a zero - potrebbe trattarsi di 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 );

Identico a DetectScenesInFile, ma utilizza DetectorParameters2, consentendo la selezione dello spazio colore e l'elaborazione parziale del file. I valori di inizio e fine della 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 frame in timestamp. Restituisce S_OK, oppure E_INVALIDARG se pFrameRate è NULL.

ISceneDetectorEvents interface

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

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 frame a partire 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 a 1 per annullare il rilevamento in corso.