Scene Detector – Objet COM de détection de scène vidéo

Description

Scene Detector est un composant COM puissant pour la reconnaissance et le traitement de scènes. Il intègre les technologies primées HandySaw DS pour une reconnaissance optique de scène extrêmement précise et rapide. Il s'adresse aux éditeurs de logiciels et aux développeurs qui souhaitent étendre leurs produits. Un composant COM est un module logiciel réutilisable qui suit l'architecture COM ( Component Object Model ), lui permettant d'être utilisé dans divers langages et environnements de programmation. Si vous recherchez une application autonome pour la détection de scènes, vous pouvez utiliser HandySaw DS en suivant ce lien .

L'objet Scene Detector traite le fichier vidéo et renvoie une liste des scènes trouvées. Il peut également enregistrer des vignettes pour chaque scène et informer immédiatement l'application appelante de chaque nouvelle scène trouvée via des interfaces de rappel pendant le traitement.

Caractéristiques principales

  • Détecte les scènes dans presque tous les fichiers vidéo pouvant être lus par Windows Media Player (en raison de l'utilisation de l'API DirectShow)
  • Algorithme rapide et précis
  • Intégration facile
  • Signale une nouvelle scène juste après sa définition, pendant le traitement. Pas besoin d'attendre la fin de la détection
  • Peut générer des vignettes - premières et dernières images pour chaque scène et les enregistrer dans des fichiers BMP ou JPG
  • Possibilité de spécifier les filtres de source, de séparateur et de décodeur vidéo à utiliser pendant le traitement
  • Peut détecter les scènes « blanches » et « noires »
  • Peut fonctionner dans les espaces colorimétriques RVB et YUV
  • Peut traiter une partie d'un fichier multimédia - l'utilisateur peut spécifier les positions de début et d'arrêt du traitement

Version démo et prix

Contactez- moi.

Documentation

Énumération sdScenesMergeKind

Utilisé pour donner des instructions sur ce qu'il faut faire avec de courtes scènes.

sdMergeDelete = 0, Courte scène supprimée
sdMergeWithPrev = 1, Scène courte fusionnée avec la précédente
sdMergeWithNext = 2, Scène courte fusionnée avec la suivante
sdMergeWithBoth = 3 Scènes courtes (au milieu), précédentes et suivantes fusionnées en une seule scène

Structure des paramètres du détecteur

Cette structure contient les paramètres du moteur de détection de scène.

BSTR VideoFileName; Nom complet du fichier vidéo pour la détection.
int Threshold; Valeur du seuil de détection.
Les valeurs par défaut recommandées sont 19 pour l’espace colorimétrique RVB et 5 pour YUV.
Peut être compris entre 0 et 255.
Ce paramètre est le principal.
Lorsque la différence entre deux images est supérieure à cette valeur, une nouvelle scène commence.
Ainsi : seuil inférieur - plus de scènes.
int UpLumaTresh; Utilisé dans la détection des « fondus blancs ».
Valeur par défaut recommandée -1.
Peut être compris entre -1 et 255.
"-1" désactive cette fonctionnalité.
Lorsque la luminosité globale de l'image est supérieure à cette valeur, une nouvelle scène commence.
Grâce à cette fonctionnalité, il est possible de définir une séquence d'images aussi lumineuses que des scènes séparées.
int BottomLumaTresh; Utilisé dans la détection des « fondus noirs ».
Valeur par défaut recommandée -1.
Peut être compris entre -1 et 255.
"-1" désactive cette fonctionnalité.
Lorsque la luminosité globale de l'image est inférieure à cette valeur, une nouvelle scène commence.
Grâce à cette fonctionnalité, il est possible de définir une séquence de ces images sombres comme scène séparée.
int MinSceneLength;

Définit une durée minimale d'une scène détectée (en images).
Valeur par défaut recommandée 5.
Peut être compris entre 0 et n’importe quelle valeur positive.
Si la longueur de la scène définie est inférieure à cette valeur, cette scène est fusionnée avec les scènes précédente, suivante ou les deux, selon la valeur du champ Fusionner (voir ci-dessous).

int RegisterGraph; Contrôler l'enregistrement du graphique de traitement interne dans la table des objets en cours d'exécution (ROT).
Peut être 1 (s'inscrire dans ROT) ou 0 (ne pas s'enregistrer).
BSTR SourceFilterMoniker; Nom d’affichage du moniker de filtre source souhaité utilisé dans le graphique de traitement interne.
Si NULL - filtre par défaut utilisé.
BSTR SplitterFilterMoniker; Nom d’affichage du surnom de filtre de séparation souhaité utilisé dans le graphique de traitement interne.
Si NULL - filtre par défaut utilisé.
BSTR DecoderFilterMoniker; Nom d’affichage du surnom de filtre de décodeur souhaité utilisé dans le graphique de traitement interne.
Si NULL - filtre par défaut utilisé.
sdScenesMergeKind Merge; Lorsque la longueur de la scène est inférieure à MinSceneLength, scène modifiée en fonction de la valeur de ce paramètre.

Structure DetectorParameters2

Cette structure étend un ensemble de paramètres du moteur de détection de scène définis dans la structure DetectorParameters . En plus des membres de DetectorParameters, il contient :

int UseYUV; Permet de sélectionner l’espace colorimétrique pour la détection de scène.
Peut être 1(YUY2) ou 0(RGB24).
int Pad; Réservé
double StartPosition; Spécifie la position de départ du média pour la détection de scène en secondes.
Si cette valeur est différente de zéro, n'oubliez pas que toutes les durées de scène sont relatives à cette position.
double StopPosition; Spécifie la position d'arrêt du média pour la détection de scène en secondes.
Réglez sur zéro pour ignorer.

Structure des paramètres des miniatures

Cette structure contient les paramètres de génération des vignettes.

int JpegFormat; Sélectionnez le format de fichier. 0 - générer des fichiers BMP, 1 - générer des fichiers JPEG.
int JpegQuality; Qualité de compression JPEG. Entier de 0 à 100.
int ImagesPerScene; Images par numéro de scène. 1 - uniquement l'image de début, 2 - les images de début et de fin de chaque scène.
double Scale; Facteur de mise à l’échelle des vignettes. 1 - image en taille réelle. Valeur à virgule flottante.
BSTR FileName;

Modèle de noms de fichiers miniatures. Chaîne pour la fonction "C" "printf" avec un champ entier.
Par exemple : "d:\filedir\filename%05d.jpg"
Vous devez spécifier le chemin d'accès complet avec l'extension appropriée. Le numéro d'image sera inséré à la place des symboles %d pour obtenir le nom de fichier d'une vignette spécifique.

Interface ISceneDetector

Cette interface fournit des méthodes de détection de scène :

Méthode DetectScenesInFile

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

Il s'agit de la méthode de détection de scène principale.
Transmettez les paramètres de détection dans Params et le pointeur vers SAFEARRAY dans Scenes.
Si Scenes est NULL, la fonction ne renvoie pas la liste des scènes détectées.
L'appelant n'a pas besoin de créer SafeArray avant d'appeler cette méthode.
Si Scenes n'est pas NULL et après l'appel de fonction , *Scenes n'est pas non plus NULL, l'appelant doit détruire *Scenes SafeArray.
*Les scènes sont un tableau bidimensionnel. Pour chaque scène trouvée, il existe deux valeurs longues : les numéros d'image de début et de fin de la scène. Ces valeurs sont relatives à la position du support de début de traitement.
Transmettez le pointeur non NULL en tant que ThumbnailsParams pour activer la génération de vignettes et spécifier ses paramètres. Passez NULL pour désactiver la génération de vignettes.

Renvoie une valeur HRESULT . Les valeurs possibles sont les suivantes :

0 Succès
0x80040601 Erreur non spécifiée
0x80040602 DirectShow n'est pas installé ou la version est trop ancienne
0x80040603 Impossible d'obtenir la durée de la vidéo. Peut-être une image fixe
0x80040604 Mauvais argument
0x80040605 Impossible de créer le contexte de l'appareil
0x80040606 L'objet est occupé avec une autre tâche
0x80040607 Le framerate est égal à zéro. Peut-être une image fixe
0x80040608 Impossible de créer un graphique

Interface ISceneDetector2

Cette interface dérive de l'interface ISceneDetector et fournit des méthodes étendues pour la détection de scène. En plus des méthodes héritées de ISceneDetector , l'interface ISceneDetector2 expose les méthodes suivantes :

Méthode DetectScenesInFile2

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

Contrairement à DetectScenesInFile, cette méthode utilise l'ensemble de paramètres DetectorParameters2 , permettant ainsi de spécifier l'espace colorimétrique, les positions de démarrage et d'arrêt du traitement.
Faites attention au fait que les valeurs de début et d'arrêt des scènes renvoyées par cette méthode sont relatives à la valeur Params.StartPosition .
Voir la description de DetectScenesInFile pour plus d’informations.

Méthode GetFrameRate

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

Renvoie la fréquence d'images vidéo du dernier fichier traité. Utile pour le temps nécessaire à la traduction du numéro d'image.
Renvoie S_OK ou E_INVALIDARG si pFrameRate est NULL.

Interface d'événements ISceneDetectorEvents

Cette interface d'événements fournit des méthodes pour récupérer les informations de détection de scène en temps réel.

Méthode NouvelleScène

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

Événement déclenché par le détecteur lors de la définition d'une nouvelle scène.
SceneIndex commence à 0.
Start et Stop commencent également à partir de 0 et sont des numéros d'image.
Lorsque le traitement a démarré via la méthode DetectScenesInFile2 , les valeurs Start et Stop sont relatives à la valeur Params.StartPosition .

Méthode de statut

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

L'événement est déclenché toutes les 50 ms et informe le client de l'état du processus.
AbortProcess est un pointeur vers une variable. Ainsi, le client peut définir * AbortProcess sur la valeur 1 pour annuler la détection de la scène actuelle.