Componente COM
Scene Detector
Rilevamento delle scene video per sviluppatori. Integralo nella tua applicazione tramite COM.
Informazioni
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.
Caratteristiche
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.
Demo e Prezzo
Contattami per ottenere la versione demo e informazioni sui prezzi.
Riferimenti API
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 |
|---|---|
| 0 | Successo |
| 0x80040601 | Errore non specificato |
| 0x80040602 | DirectShow non installato o versione troppo vecchia |
| 0x80040603 | Impossibile ottenere la durata del video - potrebbe trattarsi di un'immagine statica |
| 0x80040604 | Argomento non valido |
| 0x80040605 | Impossibile creare il contesto del dispositivo |
| 0x80040606 | L'oggetto è occupato in un'altra attività |
| 0x80040607 | Il frame rate è pari a zero - potrebbe trattarsi di un'immagine statica |
| 0x80040608 | Impossibile 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.