Composant COM

Scene Detector

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

Scene Detector est un composant COM basé sur la technologie de reconnaissance de scènes de HandySaw DS. Il analyse un fichier vidéo et renvoie une liste des scènes détectées avec des limites précises à l'image près. Le composant peut également générer des miniatures 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 de l'analyse complète.

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

Large support des formats

Analyse 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 sa détection. Votre application reçoit les résultats pendant le traitement.

Génération de miniatures

Enregistre optionnellement la première et la dernière image de chaque scène au format BMP ou JPEG, à l'échelle de votre choix.

Espaces colorimétriques RGB et YUV

La détection peut s'effectuer en espace colorimétrique RGB24 ou YUY2 ; chacun possède ses propres valeurs de seuil recommandées.

Détection de scènes blanches et noires

Des seuils de luminance configurables permettent d'identifier les transitions vers le blanc (fade-to-white) et vers le noir (fade-to-black) comme des scènes distinctes.

Traitement partiel de fichier

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

Pipeline de filtres personnalisé

Remplacez les filtres DirectShow de source, de splitteur et de décodeur utilisés en interne pour une compatibilité maximale.

Fusion de scènes courtes

Les scènes dont la durée est inférieure à un minimum configurable sont automatiquement fusionnées avec leurs voisines ou supprimées.

Contactez-moi pour obtenir la version de démonstration et les informations tarifaires.

sdScenesMergeKind enum

Spécifie la manière dont 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 du moteur de détection de scènes principal.

BSTR VideoFileName Chemin complet vers le fichier vidéo à traiter.
int Threshold Sensibilité de la détection. Plage 0–255. Valeurs recommandées : 19 (RGB) et 5 (YUV). Une nouvelle scène commence lorsque la différence entre deux images consécutives dépasse cette valeur. Des valeurs plus basses produisent plus de scènes.
int UpLumaTresh Seuil de transition vers le blanc. Plage -1–255. Une valeur de -1 désactive cette fonction. Lorsque la luminosité globale de l'image dépasse cette valeur, une nouvelle scène commence, regroupant les images claires.
int BottomLumaTresh Seuil de transition vers le noir. Plage -1–255. Une valeur de -1 désactive cette fonction. Lorsque la luminosité globale de l'image descend en dessous de cette valeur, une nouvelle scène commence, regroupant les images sombres.
int MinSceneLength Durée minimale d'une scène en images. Les scènes plus courtes que cette valeur sont modifiées selon le champ Merge. Valeur 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 le filtre par défaut.
BSTR SplitterFilterMoniker Nom d'affichage du filtre splitteur souhaité. NULL : utiliser le filtre par défaut.
BSTR DecoderFilterMoniker Nom d'affichage du filtre décodeur souhaité. NULL : utiliser le filtre 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

Extension de 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 : RGB24.
int Pad Réservé.
double StartPosition Position de début du 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 du traitement en secondes. 0 : traiter jusqu'à la fin du fichier.

ThumbnailsParameters structure

Contrôle la génération de miniatures. Passez un pointeur vers cette structure pour activer les miniatures, 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 des miniatures. 1.0 : taille réelle.
BSTR FileName Modèle de nom de fichier utilisant la syntaxe printf du C avec un champ entier, ex: d:\dir\frame%05d.jpg. Le numéro de l'image remplace le marqueur %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 long indiquent 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 miniatures.

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 l'appareil
0x80040606L'objet est occupé par une autre tâche
0x80040607La cadence d'images est égale à zéro - peut être une image fixe
0x80040608Impossible de construire le graphe

ISceneDetector2 interface

Extension de 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 cadence 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 de leur détection.

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é lancé 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 à 1 pour annuler la détection en cours.