Componente COM

Scene Detector

Detecção de cenas de vídeo para desenvolvedores. Integre-o à sua aplicação via COM.

O Scene Detector é um componente COM construído com a tecnologia de reconhecimento de cenas HandySaw DS. Ele processa um arquivo de vídeo e retorna uma lista de cenas detectadas com limites precisos por quadro. O componente também pode gerar miniaturas para cada cena e relatar novas cenas encontradas em tempo real através de interfaces de retorno (callback). Você não precisa esperar a conclusão de todo o processo de detecção.

Um componente COM segue uma arquitetura padrão, tornando-o utilizável a partir de praticamente qualquer ambiente de desenvolvimento Windows. Se você precisa de uma ferramenta de desktop independente em vez de um componente para desenvolvedores, o HandySaw DS é a escolha certa.

Amplo suporte a formatos

Processa qualquer arquivo de vídeo reproduzível pelo Windows Media Player via API DirectShow.

Retornos em tempo real

Relata cada nova cena imediatamente assim que ela é encontrada. Sua aplicação recebe os resultados durante o processamento.

Geração de miniaturas

Salva opcionalmente o primeiro e o último quadro de cada cena como arquivos BMP ou JPEG em qualquer escala.

Espaços de cor RGB e YUV

A detecção pode ser executada no espaço de cor RGB24 ou YUY2; cada um possui seus próprios padrões de limite recomendados.

Detecção de cenas brancas e pretas

Limites de luma configuráveis identificam transições de esmaecimento para branco e para preto como cenas separadas.

Processamento parcial de arquivos

Especifique as posições de início e fim para detectar cenas apenas dentro de um segmento escolhido do arquivo de mídia.

Pipeline de filtros personalizado

Substitua os filtros DirectShow de origem, divisor e decodificador usados internamente para máxima compatibilidade.

Mesclagem de cenas curtas

Cenas mais curtas que um mínimo configurável são automaticamente mescladas com seus vizinhos ou removidas.

Entre em contato comigo para obter a versão de demonstração e informações sobre preços.

sdScenesMergeKind enum

Especifica como cenas curtas são tratadas após a detecção.

sdMergeDelete = 0 Cena curta é removida.
sdMergeWithPrev = 1 Cena curta é mesclada com a cena anterior.
sdMergeWithNext = 2 Cena curta é mesclada com a próxima cena.
sdMergeWithBoth = 3 Cena curta, a cena anterior e a próxima cena são todas mescladas em uma só.

DetectorParameters structure

Parâmetros principais do motor de detecção de cenas.

BSTR VideoFileName Caminho completo para o arquivo de vídeo a ser processado.
int Threshold Sensibilidade de detecção. Intervalo 0-255. Padrões recomendados: 19 (RGB) e 5 (YUV). Uma nova cena começa quando a diferença entre dois quadros consecutivos excede este valor. Valores menores produzem mais cenas.
int UpLumaTresh Limite de esmaecimento para branco. Intervalo -1-255. Um valor de -1 desativa este recurso. Quando o brilho geral do quadro excede este valor, uma nova cena começa, agrupando quadros brilhantes.
int BottomLumaTresh Limite de esmaecimento para preto. Intervalo -1-255. Um valor de -1 desativa este recurso. Quando o brilho geral do quadro cai abaixo deste valor, uma nova cena começa, agrupando quadros escuros.
int MinSceneLength Duração mínima da cena em quadros. Cenas mais curtas que este valor são modificadas de acordo com o campo Merge. Padrão recomendado: 5.
int RegisterGraph Registro ROT do grafo de processamento interno. 1: registrar. 0: não registrar.
BSTR SourceFilterMoniker Nome de exibição do filtro de origem desejado. NULL: usar padrão.
BSTR SplitterFilterMoniker Nome de exibição do filtro divisor desejado. NULL: usar padrão.
BSTR DecoderFilterMoniker Nome de exibição do filtro decodificador desejado. NULL: usar padrão.
sdScenesMergeKind Merge Estratégia de mesclagem aplicada quando uma cena detectada é mais curta que MinSceneLength.

DetectorParameters2 structure

Estende DetectorParameters com seleção de espaço de cor e processamento parcial de arquivos. Contém todos os campos de DetectorParameters mais os seguintes.

int UseYUV Espaço de cor. 1: YUY2. 0: RGB24.
int Pad Reservado.
double StartPosition Posição inicial do processamento em segundos. Quando diferente de zero, todos os tempos de cena retornados são relativos a este deslocamento.
double StopPosition Posição final do processamento em segundos. 0: processar até o final do arquivo.

ThumbnailsParameters structure

Controla a geração de miniaturas. Passe um ponteiro para esta estrutura para ativar miniaturas, ou NULL para desativar.

int JpegFormat Formato de saída. 0: BMP. 1: JPEG.
int JpegQuality Qualidade de compressão JPEG, 0-100.
int ImagesPerScene 1: apenas o quadro inicial. 2: quadros inicial e final por cena.
double Scale Fator de escala da miniatura. 1.0: tamanho total.
BSTR FileName Modelo de nome de arquivo usando sintaxe printf do C com um campo inteiro, por exemplo, d:\dir\frame%05d.jpg. O número do quadro substitui o marcador %d. Requer caminho completo com a extensão correta.

ISceneDetector interface

Interface principal de detecção de cenas.

DetectScenesInFile

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

Método principal de detecção. O chamador não precisa criar o SafeArray de antemão - passe um ponteiro para uma variável SAFEARRAY. Se *Scenes não for NULL após a chamada, o chamador deve destruí-lo. O resultado é um array bidimensional. Para cada cena, dois valores longos fornecem os números dos quadros inicial e final relativos à posição inicial do processamento. Passe ThumbnailsParams não-NULL para ativar a geração de miniaturas.

HRESULT Significado
0Sucesso
0x80040601Erro não especificado
0x80040602DirectShow não instalado ou versão muito antiga
0x80040603Não é possível obter a duração do vídeo - pode ser uma imagem estática
0x80040604Argumento inválido
0x80040605Não é possível criar contexto de dispositivo
0x80040606Objeto ocupado com outra tarefa
0x80040607Taxa de quadros igual a zero - pode ser uma imagem estática
0x80040608Não é possível construir o grafo

ISceneDetector2 interface

Estende ISceneDetector. Herda todos os seus métodos e adiciona o seguinte.

DetectScenesInFile2

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

O mesmo que DetectScenesInFile, mas usa DetectorParameters2, permitindo a seleção de espaço de cor e processamento parcial de arquivos. Os valores de início e fim de cena retornados são relativos a Params.StartPosition.

GetFrameRate

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

Retorna a taxa de quadros do último arquivo processado. Útil para converter números de quadros em carimbos de tempo. Retorna S_OK, ou E_INVALIDARG se pFrameRate for NULL.

ISceneDetectorEvents interface

Interface de retorno para eventos de detecção em tempo real. Implemente em sua aplicação para receber resultados assim que forem encontrados.

NewScene

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

Disparado quando uma nova cena é finalizada. SceneIndex começa em 0. Start e Stop são números de quadros começando em 0. Quando o processamento foi iniciado via DetectScenesInFile2, ambos os valores são relativos a Params.StartPosition.

Status

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

Disparado a cada 50 ms com o progresso atual do processamento. Defina *AbortProcess como 1 para cancelar a detecção em andamento.