Scene Detector – Oggetto COM rilevamento scene video
Descrizione
Scene Detector è un potente componente COM per il riconoscimento e l'elaborazione delle scene. Incorpora le pluripremiate tecnologie HandySaw DS per il riconoscimento ottico delle scene estremamente accurato e veloce. È orientato alle aziende di software e agli sviluppatori che desiderano estendere i propri prodotti. Un componente COM è un modulo software riutilizzabile che segue l'architettura COM ( Component Object Model ), consentendone l'utilizzo in vari linguaggi e ambienti di programmazione. Se stai cercando un'applicazione autonoma per il rilevamento delle scene, puoi utilizzare HandySaw DS seguendo questo collegamento .
L'oggetto Scene Detector elabora il file video e restituisce un elenco delle scene trovate. Può anche salvare miniature per ogni scena e informare immediatamente l'applicazione chiamante su ogni nuova scena trovata tramite interfacce di callback durante l'elaborazione.
Caratteristiche principali
- Rileva scene in quasi tutti i file video che possono essere riprodotti da Windows Media Player (grazie all'utilizzo dell'API DirectShow)
- Algoritmo veloce e accurato
- Integrazione semplice
- Riporta la nuova scena subito dopo averla definita, durante l'elaborazione. Non è necessario attendere il completamento del rilevamento
- Può generare miniature: immagini del primo e dell'ultimo fotogramma per ogni scena e salvarle in file BMP o JPG
- È possibile specificare i filtri di origine, splitter e decodificatore video da utilizzare durante l'elaborazione
- Può rilevare scene "bianche" e "nere".
- Può funzionare negli spazi colore RGB e YUV
- Può elaborare parte di un file multimediale: l'utente può specificare le posizioni di avvio e arresto dell'elaborazione
Versione demo e prezzo
Documentazione
enumerazione sdScenesMergeKind
Utilizzato per dare istruzioni su cosa fare con scene brevi.
sdMergeDelete = 0, | Breve scena rimossa |
sdMergeWithPrev = 1, | Breve scena fusa con la precedente |
sdMergeWithNext = 2, | La scena breve si è fusa con quella successiva |
sdMergeWithBoth = 3 | Scene brevi (al centro), precedenti e successive fuse in un'unica scena |
Struttura DetectorParameters
Questa struttura contiene i parametri del motore di rilevamento delle scene.
BSTR VideoFileName; | Nome completo del file video per il rilevamento. |
int Threshold; | Valore di soglia di rilevamento. I valori predefiniti consigliati sono 19 per lo spazio colore RGB e 5 per YUV. Può essere compreso tra 0 e 255. Questo parametro è il principale. Quando la differenza di due fotogrammi è maggiore di questo valore, inizia una nuova scena. Quindi: Soglia più bassa - più scene. |
int UpLumaTresh; | Utilizzato nel rilevamento delle "dissolvenze del bianco". Valore predefinito consigliato -1. Può essere compreso tra -1 e 255. "-1" disabilita questa funzione. Quando la luminosità complessiva del fotogramma è maggiore di questo valore, inizia una nuova scena. Con questa funzione è possibile definire la sequenza di fotogrammi luminosi come una scena separata. |
int BottomLumaTresh; | Utilizzato nel rilevamento delle "dissolvenze nere". Valore predefinito consigliato -1. Può essere compreso tra -1 e 255. "-1" disabilita questa funzione. Quando la luminosità complessiva del fotogramma è inferiore a questo valore, inizia una nuova scena. Con questa funzione è possibile definire la sequenza di tali fotogrammi scuri come una scena separata. |
int MinSceneLength; | Imposta la durata minima di una scena rilevata (in fotogrammi). |
int RegisterGraph; | Controllare la registrazione del grafico di elaborazione interna nella Running Object Table (ROT). Può essere 1(registra in ROT) o 0(non registra). |
BSTR SourceFilterMoniker; | Nome visualizzato del moniker del filtro di origine desiderato utilizzato nel grafico di elaborazione interna. Se NULL: viene utilizzato il filtro predefinito. |
BSTR SplitterFilterMoniker; | Nome visualizzato del moniker del filtro splitter desiderato utilizzato nel grafico di elaborazione interna. Se NULL: viene utilizzato il filtro predefinito. |
BSTR DecoderFilterMoniker; | Nome visualizzato del moniker del filtro del decodificatore desiderato utilizzato nel grafico di elaborazione interna. Se NULL: viene utilizzato il filtro predefinito. |
sdScenesMergeKind Merge; | Quando la lunghezza della scena è inferiore a MinSceneLength, la scena viene modificata in base al valore di questo parametro. |
Struttura DetectorParameters2
Questa struttura espande un insieme di parametri del motore di rilevamento scene definiti nella struttura DetectorParameters . Oltre ai membri di DetectorParameters contiene:
int UseYUV; | Consente di selezionare lo spazio colore per il rilevamento della scena. Può essere 1(YUY2) o 0(RGB24). |
int Pad; | Riservato |
double StartPosition; | Specifica la posizione iniziale del supporto per il rilevamento della scena in secondi. Se questo è diverso da zero, non dimenticare che tutti i tempi della scena sono relativi a questa posizione. |
double StopPosition; | Specifica la posizione del supporto di arresto per il rilevamento della scena in secondi. Impostato su zero per ignorare. |
MiniatureStruttura dei parametri
Questa struttura contiene i parametri di generazione delle miniature.
int JpegFormat; | Seleziona il formato del file. 0: genera file BMP, 1: genera file JPEG. |
int JpegQuality; | Qualità di compressione JPEG. Numero intero compreso tra 0 e 100. |
int ImagesPerScene; | Immagini per numero di scena. 1 - solo il fotogramma iniziale, 2 - i fotogrammi iniziali e finali di ogni scena. |
double Scale; | Fattore di scala della miniatura. 1 - immagine a grandezza naturale. Valore in virgola mobile. |
BSTR FileName; | Modello di nomi di file di miniature. Stringa per la funzione "C" "printf" con un campo intero. |
Interfaccia ISceneDetector
Questa interfaccia fornisce metodi per il rilevamento della scena:
Metodo DetectScenesInFile
HRESULT _stdcall DetectScenesInFile ([in] DetectorParameters *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (lungo) *Scenes );
Questo è il metodo di rilevamento della scena principale.
Passa i parametri di rilevamento in Params e puntatore a SAFEARRAY in Scenes.
Se Scene è NULL, la funzione non restituisce l'elenco delle scene rilevate.
Non è necessario che il chiamante crei SafeArray prima di chiamare questo metodo.
Se Scenes non è NULL e dopo la chiamata alla funzione anche *Scenes non è NULL, il chiamante deve distruggere *Scenes SafeArray.
*Le scene sono una matrice bidimensionale. Per ogni scena trovata ci sono due valori lunghi: i numeri dei fotogrammi di inizio e fine scena. Questi valori sono relativi alla posizione del supporto iniziale dell'elaborazione.
Passa un puntatore non NULL come ThumbnailsParams per attivare la generazione di miniature e specificarne i parametri. Passa NULL per disabilitare la generazione delle miniature.Restituisce un valore HRESULT . I valori possibili includono quanto segue:
0 Successo 0x80040601 Errore non specificato 0x80040602 DirectShow non è installato o la versione è troppo vecchia 0x80040603 Impossibile ottenere la durata del video. Potrebbe trattarsi di un'immagine fissa 0x80040604 Cattiva argomentazione 0x80040605 Impossibile creare il contesto del dispositivo 0x80040606 L'oggetto è occupato con un'altra attività 0x80040607 Il framerate è uguale a zero. Potrebbe trattarsi di un'immagine fissa 0x80040608 Impossibile creare il grafico
Interfaccia ISceneDetector2
Questa interfaccia deriva dall'interfaccia ISceneDetector e fornisce metodi estesi per il rilevamento delle scene. Oltre ai metodi ereditati da ISceneDetector , l'interfaccia ISceneDetector2 espone i seguenti metodi:
Metodo DetectScenesInFile2
HRESULT _stdcall DetectScenesInFile2 ([in] DetectorParameters2 *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY (lungo) *Scenes );
A differenza di DetectScenesInFile, questo metodo utilizza il set di parametri DetectorParameters2 , quindi consente di specificare lo spazio colore e le posizioni di avvio e arresto dell'elaborazione.
Prestare attenzione al fatto che i valori di inizio e fine delle scene restituiti da questo metodo sono relativi al valore Params.StartPosition .
Vedi la descrizione di DetectScenesInFile per altre informazioni.Metodo GetFrameRate
HRESULT _stdcall GetFrameRate ([out, retval] double *pFrameRate );
Restituisce la frequenza fotogrammi video dell'ultimo file elaborato. Utile per la traduzione del numero di time to frame.
Restituisce S_OK o E_INVALIDARG se pFrameRate è NULL.
Interfaccia degli eventi ISceneDetectorEvents
Questa interfaccia degli eventi fornisce metodi per recuperare informazioni sul rilevamento della scena in tempo reale.
Metodo NewScene
HRESULT NewScene ([in] long SceneIndex, [in] long Start, [in] long Stop );
Evento attivato dal rilevatore quando viene definita una nuova scena.
SceneIndex inizia da 0.
Anche Start e Stop iniziano da 0 e sono numeri di frame.
Quando l'elaborazione è avviata tramite il metodo DetectScenesInFile2 , i valori Start e Stop sono relativi al valore Params.StartPosition .Metodo dello stato
Stato HRESULT ([in] long ScenesFound, [in] long CurrentFrame, [in] long TotalFrames, [out] long *AbortProcess );
L'evento viene attivato ogni 50 ms e informa il client sullo stato del processo.
AbortProcess è un puntatore alla variabile. Pertanto il client può impostare * AbortProcess sul valore 1 per annullare il rilevamento della scena corrente.