Componente COM

Scene Detector

Detección de escenas de vídeo para desarrolladores. Intégrelo en su aplicación mediante COM.

Scene Detector es un componente COM construido sobre la tecnología de reconocimiento de escenas HandySaw DS. Procesa un archivo de vídeo y devuelve una lista de escenas detectadas con límites precisos a nivel de fotograma. El componente también puede generar miniaturas para cada escena e informar de las escenas recién encontradas en tiempo real a través de interfaces de devolución de llamada (callback). No tiene que esperar a que finalice todo el proceso de detección.

Un componente COM sigue una arquitectura estándar, lo que lo hace utilizable desde prácticamente cualquier entorno de desarrollo de Windows. Si necesita una herramienta de escritorio independiente en lugar de un componente para desarrolladores, HandySaw DS es la elección correcta.

Amplia compatibilidad de formatos

Procesa cualquier archivo de vídeo que pueda reproducirse con Windows Media Player a través de la API DirectShow.

Devoluciones de llamada en tiempo real

Informa de cada nueva escena inmediatamente después de encontrarla. Su aplicación recibe los resultados durante el procesamiento.

Generación de miniaturas

Guarda opcionalmente el primer y el último fotograma de cada escena como archivos BMP o JPEG a cualquier escala.

Espacios de color RGB y YUV

La detección puede ejecutarse en el espacio de color RGB24 o YUY2; cada uno tiene sus propios valores predeterminados de umbral recomendados.

Detección de escenas blancas y negras

Los umbrales de luminancia configurables identifican las transiciones a blanco y a negro como escenas independientes.

Procesamiento parcial de archivos

Especifique las posiciones de inicio y fin para detectar escenas solo dentro de un segmento elegido del archivo multimedia.

Canalización de filtros personalizada

Anule los filtros DirectShow de origen, división y decodificación utilizados internamente para obtener la máxima compatibilidad.

Fusión de escenas cortas

Las escenas más cortas que un mínimo configurable se fusionan automáticamente con sus vecinas o se eliminan.

Contácteme para obtener información sobre la versión de demostración y los precios.

sdScenesMergeKind enum

Especifica cómo se manejan las escenas cortas después de la detección.

sdMergeDelete = 0 La escena corta se elimina.
sdMergeWithPrev = 1 La escena corta se fusiona con la escena anterior.
sdMergeWithNext = 2 La escena corta se fusiona con la escena siguiente.
sdMergeWithBoth = 3 La escena corta, la escena anterior y la escena siguiente se fusionan en una sola.

DetectorParameters structure

Parámetros principales del motor de detección de escenas.

BSTR VideoFileName Ruta completa al archivo de vídeo que se va a procesar.
int Threshold Sensibilidad de detección. Rango 0-255. Valores predeterminados recomendados: 19 (RGB) y 5 (YUV). Una nueva escena comienza cuando la diferencia entre dos fotogramas consecutivos supera este valor. Los valores más bajos producen más escenas.
int UpLumaTresh Umbral de fundido a blanco. Rango -1-255. Un valor de -1 desactiva esta función. Cuando el brillo general del fotograma supera este valor, comienza una nueva escena, agrupando los fotogramas brillantes.
int BottomLumaTresh Umbral de fundido a negro. Rango -1-255. Un valor de -1 desactiva esta función. Cuando el brillo general del fotograma cae por debajo de este valor, comienza una nueva escena, agrupando los fotogramas oscuros.
int MinSceneLength Duración mínima de la escena en fotogramas. Las escenas más cortas que este valor se modifican según el campo Merge. Valor predeterminado recomendado: 5.
int RegisterGraph Registro ROT del grafo de procesamiento interno. 1: registrar. 0: no registrar.
BSTR SourceFilterMoniker Nombre para mostrar del filtro de origen deseado. NULL: usar el predeterminado.
BSTR SplitterFilterMoniker Nombre para mostrar del filtro de división deseado. NULL: usar el predeterminado.
BSTR DecoderFilterMoniker Nombre para mostrar del filtro de decodificación deseado. NULL: usar el predeterminado.
sdScenesMergeKind Merge Estrategia de fusión aplicada cuando una escena detectada es más corta que MinSceneLength.

DetectorParameters2 structure

Extiende DetectorParameters con selección de espacio de color y procesamiento de archivos parciales. Contiene todos los campos de DetectorParameters más los siguientes.

int UseYUV Espacio de color. 1: YUY2. 0: RGB24.
int Pad Reservado.
double StartPosition Posición de inicio del procesamiento en segundos. Cuando no es cero, todos los tiempos de escena devueltos son relativos a este desplazamiento.
double StopPosition Posición de parada del procesamiento en segundos. 0: procesar hasta el final del archivo.

ThumbnailsParameters structure

Controla la generación de miniaturas. Pase un puntero a esta estructura para habilitar las miniaturas, o NULL para desactivarlas.

int JpegFormat Formato de salida. 0: BMP. 1: JPEG.
int JpegQuality Calidad de compresión JPEG, 0-100.
int ImagesPerScene 1: solo fotograma inicial. 2: fotogramas inicial y final por escena.
double Scale Factor de escala de la miniatura. 1.0: tamaño completo.
BSTR FileName Plantilla de nombre de archivo usando la sintaxis printf de C con un campo entero, p. ej. d:\dir\frame%05d.jpg. El número de fotograma reemplaza al marcador de posición %d. Requiere la ruta completa con la extensión correcta.

ISceneDetector interface

Interfaz principal de detección de escenas.

DetectScenesInFile

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

Método de detección principal. El llamador no necesita crear el SafeArray de antemano: pase un puntero a una variable SAFEARRAY. Si *Scenes no es NULL después de la llamada, el llamador debe destruirlo. El resultado es una matriz bidimensional. Para cada escena, dos valores largos proporcionan los números de fotograma de inicio y fin relativos a la posición de inicio del procesamiento. Pase ThumbnailsParams distinto de NULL para habilitar la generación de miniaturas.

HRESULT Significado
0Éxito
0x80040601Error no especificado
0x80040602DirectShow no instalado o versión demasiado antigua
0x80040603No se puede obtener la duración del vídeo: puede ser una imagen fija
0x80040604Argumento incorrecto
0x80040605No se puede crear el contexto del dispositivo
0x80040606El objeto está ocupado con otra tarea
0x80040607La velocidad de fotogramas es cero: puede ser una imagen fija
0x80040608No se puede construir el grafo

ISceneDetector2 interface

Extiende ISceneDetector. Hereda todos sus métodos y añade los siguientes.

DetectScenesInFile2

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

Igual que DetectScenesInFile, pero utiliza DetectorParameters2, lo que permite la selección del espacio de color y el procesamiento de archivos parciales. Los valores de inicio y fin de escena devueltos son relativos a Params.StartPosition.

GetFrameRate

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

Devuelve la velocidad de fotogramas del último archivo procesado. Útil para convertir números de fotograma a marcas de tiempo. Devuelve S_OK, o E_INVALIDARG si pFrameRate es NULL.

ISceneDetectorEvents interface

Interfaz de devolución de llamada para eventos de detección en tiempo real. Impleméntela en su aplicación para recibir los resultados a medida que se encuentran.

NewScene

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

Se dispara cuando se finaliza una nueva escena. SceneIndex comienza desde 0. Start y Stop son números de fotograma que comienzan desde 0. Cuando el procesamiento se inició a través de DetectScenesInFile2, ambos valores son relativos a Params.StartPosition.

Status

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

Se dispara cada 50 ms con el progreso actual del procesamiento. Establezca *AbortProcess en 1 para cancelar la detección en curso.