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