COM 구성 요소

Scene Detector

개발자를 위한 비디오 장면 감지 솔루션입니다. COM을 통해 애플리케이션에 통합하세요.

Scene Detector는 HandySaw DS 장면 인식 기술을 기반으로 구축된 COM 구성 요소입니다. 비디오 파일을 처리하여 프레임 단위로 정확한 경계를 가진 감지된 장면 목록을 반환합니다. 또한 이 구성 요소는 각 장면에 대한 썸네일을 생성하고 콜백 인터페이스를 통해 실시간으로 새로 발견된 장면을 보고할 수 있습니다. 전체 감지 과정이 완료될 때까지 기다릴 필요가 없습니다.

COM 구성 요소는 표준 아키텍처를 따르므로 사실상 모든 Windows 개발 환경에서 사용할 수 있습니다. 개발자용 구성 요소가 아닌 독립형 데스크톱 도구가 필요한 경우 HandySaw DS가 적합한 선택입니다.

광범위한 형식 지원

DirectShow API를 통해 Windows Media Player에서 재생할 수 있는 모든 비디오 파일을 처리합니다.

실시간 콜백

새로운 장면이 발견되는 즉시 보고합니다. 처리 중에 애플리케이션이 결과를 수신합니다.

썸네일 생성

선택적으로 각 장면의 첫 번째 및 마지막 프레임을 원하는 크기의 BMP 또는 JPEG 파일로 저장합니다.

RGB 및 YUV 색 공간

RGB24 또는 YUY2 색 공간에서 감지를 실행할 수 있으며, 각각 권장되는 기본 임계값이 있습니다.

화이트 및 블랙 장면 감지

구성 가능한 휘도(luma) 임계값을 통해 페이드 투 화이트(fade-to-white) 및 페이드 투 블랙(fade-to-black) 전환을 별도의 장면으로 식별합니다.

부분 파일 처리

시작 및 종료 위치를 지정하여 미디어 파일의 선택된 세그먼트 내에서만 장면을 감지합니다.

사용자 지정 필터 파이프라인

최대 호환성을 위해 내부적으로 사용되는 소스, 스플리터 및 디코더 DirectShow 필터를 재정의합니다.

짧은 장면 병합

구성 가능한 최소 길이보다 짧은 장면은 자동으로 인접한 장면과 병합되거나 제거됩니다.

데모 버전 및 가격 정보는 문의해 주십시오.

sdScenesMergeKind enum

감지 후 짧은 장면을 처리하는 방법을 지정합니다.

sdMergeDelete = 0 짧은 장면을 제거합니다.
sdMergeWithPrev = 1 짧은 장면을 이전 장면과 병합합니다.
sdMergeWithNext = 2 짧은 장면을 다음 장면과 병합합니다.
sdMergeWithBoth = 3 짧은 장면, 이전 장면, 다음 장면을 모두 하나로 병합합니다.

DetectorParameters structure

핵심 장면 감지 엔진 매개변수입니다.

BSTR VideoFileName 처리할 비디오 파일의 전체 경로입니다.
int Threshold 감지 민감도입니다. 범위 0-255. 권장 기본값: 19 (RGB) 및 5 (YUV). 연속된 두 프레임 간의 차이가 이 값을 초과하면 새 장면이 시작됩니다. 값이 낮을수록 더 많은 장면이 생성됩니다.
int UpLumaTresh 페이드 투 화이트 임계값입니다. 범위 -1-255. -1 값은 이 기능을 비활성화합니다. 전체 프레임 밝기가 이 값을 초과하면 새 장면이 시작되어 밝은 프레임들을 함께 그룹화합니다.
int BottomLumaTresh 페이드 투 블랙 임계값입니다. 범위 -1-255. -1 값은 이 기능을 비활성화합니다. 전체 프레임 밝기가 이 값 아래로 떨어지면 새 장면이 시작되어 어두운 프레임들을 함께 그룹화합니다.
int MinSceneLength 프레임 단위의 최소 장면 지속 시간입니다. 이 값보다 짧은 장면은 Merge 필드에 따라 수정됩니다. 권장 기본값: 5.
int RegisterGraph 내부 처리 그래프의 ROT 등록 여부입니다. 1: 등록. 0: 등록 안 함.
BSTR SourceFilterMoniker 원하는 소스 필터의 표시 이름입니다. NULL: 기본값 사용.
BSTR SplitterFilterMoniker 원하는 스플리터 필터의 표시 이름입니다. NULL: 기본값 사용.
BSTR DecoderFilterMoniker 원하는 디코더 필터의 표시 이름입니다. NULL: 기본값 사용.
sdScenesMergeKind Merge 감지된 장면이 MinSceneLength보다 짧을 때 적용되는 병합 전략입니다.

DetectorParameters2 structure

DetectorParameters를 확장하여 색 공간 선택 및 부분 파일 처리를 추가합니다. DetectorParameters의 모든 필드와 다음 필드를 포함합니다.

int UseYUV 색 공간입니다. 1: YUY2. 0: RGB24.
int Pad 예약됨.
double StartPosition 초 단위의 처리 시작 위치입니다. 0이 아닌 경우, 반환된 모든 장면 시간은 이 오프셋을 기준으로 합니다.
double StopPosition 초 단위의 처리 종료 위치입니다. 0: 파일 끝까지 처리.

ThumbnailsParameters structure

썸네일 생성을 제어합니다. 썸네일을 활성화하려면 이 구조체에 대한 포인터를 전달하고, 비활성화하려면 NULL을 전달하십시오.

int JpegFormat 출력 형식입니다. 0: BMP. 1: JPEG.
int JpegQuality JPEG 압축 품질, 0-100.
int ImagesPerScene 1: 시작 프레임만. 2: 장면당 시작 및 종료 프레임.
double Scale 썸네일 배율입니다. 1.0: 전체 크기.
BSTR FileName 하나의 정수 필드가 있는 C printf 구문을 사용하는 파일 이름 템플릿입니다(예: d:\dir\frame%05d.jpg). 프레임 번호가 %d 자리 표시자를 대체합니다. 올바른 확장자가 포함된 전체 경로가 필요합니다.

ISceneDetector interface

핵심 장면 감지 인터페이스입니다.

DetectScenesInFile

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

주요 감지 메서드입니다. 호출자가 사전에 SafeArray를 생성할 필요는 없으며, SAFEARRAY 변수에 대한 포인터를 전달하십시오. 호출 후 *Scenes가 NULL이 아니면 호출자가 이를 삭제해야 합니다. 결과는 2차원 배열입니다. 각 장면에 대해 두 개의 long 값이 처리 시작 위치를 기준으로 시작 및 종료 프레임 번호를 제공합니다. 썸네일 생성을 활성화하려면 NULL이 아닌 ThumbnailsParams를 전달하십시오.

HRESULT 의미
0성공
0x80040601지정되지 않은 오류
0x80040602DirectShow가 설치되지 않았거나 버전이 너무 오래됨
0x80040603비디오 지속 시간을 가져올 수 없음 - 정지 이미지일 수 있음
0x80040604잘못된 인수
0x80040605장치 컨텍스트를 생성할 수 없음
0x80040606개체가 다른 작업으로 바쁨
0x80040607프레임 속도가 0임 - 정지 이미지일 수 있음
0x80040608그래프를 빌드할 수 없음

ISceneDetector2 interface

ISceneDetector를 확장합니다. 모든 메서드를 상속하고 다음을 추가합니다.

DetectScenesInFile2

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

DetectScenesInFile과 동일하지만 DetectorParameters2를 사용하여 색 공간 선택 및 부분 파일 처리를 활성화합니다. 반환된 장면 시작 및 종료 값은 Params.StartPosition을 기준으로 합니다.

GetFrameRate

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

마지막으로 처리된 파일의 프레임 속도를 반환합니다. 프레임 번호를 타임스탬프로 변환하는 데 유용합니다. S_OK를 반환하거나, pFrameRate가 NULL인 경우 E_INVALIDARG를 반환합니다.

ISceneDetectorEvents interface

실시간 감지 이벤트를 위한 콜백 인터페이스입니다. 결과가 발견되는 대로 수신하려면 애플리케이션에서 구현하십시오.

NewScene

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

새 장면이 확정될 때 발생합니다. SceneIndex는 0부터 시작합니다. StartStop은 0부터 시작하는 프레임 번호입니다. DetectScenesInFile2를 통해 처리가 시작된 경우, 두 값 모두 Params.StartPosition을 기준으로 합니다.

Status

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

현재 처리 진행 상황과 함께 50ms마다 발생합니다. 진행 중인 감지를 취소하려면 *AbortProcess1로 설정하십시오.