Composant COM

Scene Detector

Détection de scènes vidéo pour les développeurs. Intégrez-le dans votre application via COM.

Scene Detector est un composant COM basé sur la technologie de reconnaissance de scènes HandySaw DS. Il traite un fichier vidéo et renvoie une liste de scènes détectées avec des limites précises à l'image près. Le composant peut également générer des vignettes pour chaque scène et signaler les nouvelles scènes trouvées en temps réel via des interfaces de rappel (callback). Vous n'avez pas besoin d'attendre la fin du processus de détection complet.

Un composant COM suit une architecture standard, ce qui le rend utilisable depuis pratiquement n'importe quel environnement de développement Windows. Si vous avez besoin d'un outil de bureau autonome plutôt que d'un composant pour développeur, HandySaw DS est le bon choix.

Large prise en charge des formats

Traite tout fichier vidéo lisible par Windows Media Player via l'API DirectShow.

Rappels en temps réel

Signale chaque nouvelle scène dès qu'elle est trouvée. Votre application reçoit les résultats pendant le traitement.

Génération de vignettes

Enregistre optionnellement la première et la dernière image de chaque scène sous forme de fichiers BMP ou JPEG à n'importe quelle échelle.

Espaces colorimétriques RVB et YUV

La détection peut s'exécuter dans l'espace colorimétrique RVB24 ou YUY2 ; chacun possède ses propres seuils par défaut recommandés.

Détection de scènes blanches et noires

Des seuils de luminance configurables identifient les transitions vers le blanc et vers le noir comme des scènes distinctes.

Traitement partiel de fichier

Spécifiez les positions de début et de fin pour détecter les scènes uniquement dans un segment choisi du fichier multimédia.

Pipeline de filtres personnalisé

Remplacez les filtres DirectShow de source, de séparation (splitter) et de décodage utilisés en interne pour une compatibilité maximale.

Fusion de scènes courtes

Les scènes plus courtes qu'un minimum configurable sont automatiquement fusionnées avec leurs voisines ou supprimées.

Contactez-moi pour obtenir une version de démonstration et des informations sur les tarifs.

sdScenesMergeKind enum

Spécifie comment les scènes courtes sont traitées après la détection.

sdMergeDelete = 0 La scène courte est supprimée.
sdMergeWithPrev = 1 La scène courte est fusionnée avec la scène précédente.
sdMergeWithNext = 2 La scène courte est fusionnée avec la scène suivante.
sdMergeWithBoth = 3 La scène courte, la scène précédente et la scène suivante sont toutes fusionnées en une seule.

DetectorParameters structure

Paramètres principaux du moteur de détection de scènes.

BSTR VideoFileName Chemin complet du fichier vidéo à traiter.
int Threshold Sensibilité de détection. Plage 0-255. Valeurs par défaut recommandées : 19 (RVB) et 5 (YUV). Une nouvelle scène commence lorsque la différence entre deux images consécutives dépasse cette valeur. Des valeurs plus faibles produisent plus de scènes.
int UpLumaTresh Seuil de fondu au blanc. Plage -1 à 255. Une valeur de -1 désactive cette fonctionnalité. Lorsque la luminosité globale de l'image dépasse cette valeur, une nouvelle scène commence, regroupant les images lumineuses.
int BottomLumaTresh Seuil de fondu au noir. Plage -1 à 255. Une valeur de -1 désactive cette fonctionnalité. Lorsque la luminosité globale de l'image tombe en dessous de cette valeur, une nouvelle scène commence, regroupant les images sombres.
int MinSceneLength Durée minimale de la scène en nombre d'images. Les scènes plus courtes que cette valeur sont modifiées selon le champ Merge. Valeur par défaut recommandée : 5.
int RegisterGraph Enregistrement ROT du graphe de traitement interne. 1 : enregistrer. 0 : ne pas enregistrer.
BSTR SourceFilterMoniker Nom d'affichage du filtre source souhaité. NULL : utiliser la valeur par défaut.
BSTR SplitterFilterMoniker Nom d'affichage du filtre de séparation souhaité. NULL : utiliser la valeur par défaut.
BSTR DecoderFilterMoniker Nom d'affichage du filtre de décodage souhaité. NULL : utiliser la valeur par défaut.
sdScenesMergeKind Merge Stratégie de fusion appliquée lorsqu'une scène détectée est plus courte que MinSceneLength.

DetectorParameters2 structure

Étend DetectorParameters avec la sélection de l'espace colorimétrique et le traitement partiel de fichier. Contient tous les champs de DetectorParameters plus les suivants.

int UseYUV Espace colorimétrique. 1 : YUY2. 0 : RVB24.
int Pad Réservé.
double StartPosition Position de début de traitement en secondes. Lorsqu'elle est non nulle, tous les temps de scène renvoyés sont relatifs à ce décalage.
double StopPosition Position de fin de traitement en secondes. 0 : traiter jusqu'à la fin du fichier.

ThumbnailsParameters structure

Contrôle la génération de vignettes. Passez un pointeur vers cette structure pour activer les vignettes, ou NULL pour les désactiver.

int JpegFormat Format de sortie. 0 : BMP. 1 : JPEG.
int JpegQuality Qualité de compression JPEG, 0-100.
int ImagesPerScene 1 : image de début uniquement. 2 : images de début et de fin par scène.
double Scale Facteur d'échelle de la vignette. 1.0 : taille réelle.
BSTR FileName Modèle de nom de fichier utilisant la syntaxe printf du C avec un champ entier, par ex. d:\dir\frame%05d.jpg. Le numéro d'image remplace l'espace réservé %d. Nécessite le chemin complet avec l'extension correcte.

ISceneDetector interface

Interface principale de détection de scènes.

DetectScenesInFile

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

Méthode de détection principale. L'appelant n'a pas besoin de créer le SafeArray au préalable - passez un pointeur vers une variable SAFEARRAY. Si *Scenes est non-NULL après l'appel, l'appelant doit le détruire. Le résultat est un tableau bidimensionnel. Pour chaque scène, deux valeurs longues donnent les numéros d'image de début et de fin relatifs à la position de début du traitement. Passez un ThumbnailsParams non-NULL pour activer la génération de vignettes.

HRESULT Signification
0Succès
0x80040601Erreur non spécifiée
0x80040602DirectShow non installé ou version trop ancienne
0x80040603Impossible d'obtenir la durée de la vidéo - peut être une image fixe
0x80040604Argument incorrect
0x80040605Impossible de créer le contexte de périphérique
0x80040606L'objet est occupé par une autre tâche
0x80040607La fréquence d'images est égale à zéro - peut être une image fixe
0x80040608Impossible de construire le graphe

ISceneDetector2 interface

Étend ISceneDetector. Hérite de toutes ses méthodes et ajoute les suivantes.

DetectScenesInFile2

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

Identique à DetectScenesInFile, mais utilise DetectorParameters2, permettant la sélection de l'espace colorimétrique et le traitement partiel de fichier. Les valeurs de début et de fin de scène renvoyées sont relatives à Params.StartPosition.

GetFrameRate

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

Renvoie la fréquence d'images du dernier fichier traité. Utile pour convertir les numéros d'image en horodatages. Renvoie S_OK, ou E_INVALIDARG si pFrameRate est NULL.

ISceneDetectorEvents interface

Interface de rappel pour les événements de détection en temps réel. Implémentez-la dans votre application pour recevoir les résultats au fur et à mesure qu'ils sont trouvés.

NewScene

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

Déclenché lorsqu'une nouvelle scène est finalisée. SceneIndex commence à 0. Start et Stop sont des numéros d'image commençant à 0. Lorsque le traitement a été démarré via DetectScenesInFile2, les deux valeurs sont relatives à Params.StartPosition.

Status

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

Déclenché toutes les 50 ms avec la progression actuelle du traitement. Définissez *AbortProcess sur 1 pour annuler la détection en cours.