Scene Detector – 비디오 장면 감지 COM 개체
설명
Scene Detector는 장면 인식 및 장면 처리를 위한 강력한 COM 구성 요소입니다. 매우 정확하고 빠른 광학 장면 인식을 위해 수상 경력에 빛나는 HandySaw DS 기술을 통합했습니다. 제품 확장을 원하는 소프트웨어 회사 및 개발자를 대상으로 합니다. COM 구성 요소는 구성 요소 개체 모델(COM) 아키텍처를 따르는 재사용 가능한 소프트웨어 모듈로, 다양한 프로그래밍 언어 및 환경에서 사용할 수 있습니다. 장면 감지를 위한 독립 실행형 응용 프로그램을 찾고 있다면 이 링크를 따라 HandySaw DS를 사용할 수 있습니다.
Scene Detector 개체는 비디오 파일을 처리하고 발견된 장면 목록을 반환합니다. 또한 각 장면의 축소판 그림을 저장하고 처리 중에 콜백 인터페이스를 통해 각 새로운 발견된 장면에 대해 호출자 응용 프로그램에 즉시 알릴 수 있습니다.
주요 기능
- Windows Media Player에서 재생할 수 있는 거의 모든 비디오 파일에서 장면 감지(DirectShow API 사용으로 인해)
- 빠르고 정확한 알고리즘
- 쉬운 통합
- 처리 중 새 장면이 정의된 직후 보고. 감지가 끝날 때까지 기다릴 필요가 없음
- 각 장면의 처음 및 마지막 프레임 이미지를 생성하고 BMP 또는 JPG 파일로 저장할 수 있음
- 처리 중에 사용할 소스, 스플리터 및 비디오 디코더 필터를 지정할 수 있음
- "흰색" 및 "검은색" 장면 감지 가능
- RGB 및 YUV 색 공간에서 작업 가능
- 미디어 파일의 일부를 처리할 수 있음 - 사용자가 시작 및 중지 처리 위치를 지정할 수 있음
데모 버전 및 가격
문의하십시오.
설명서
sdScenesMergeKind enum
짧은 장면으로 수행할 작업에 대한 지침을 제공하는 데 사용됩니다.
sdMergeDelete = 0, | 짧은 장면 제거됨 |
sdMergeWithPrev = 1, | 짧은 장면이 이전 장면과 병합됨 |
sdMergeWithNext = 2, | 짧은 장면이 다음 장면과 병합됨 |
sdMergeWithBoth = 3 | 짧은(중간), 이전 및 다음 장면이 하나의 단일 장면으로 병합됨 |
DetectorParameters structure
이 구조체에는 장면 감지 엔진 매개변수가 포함되어 있습니다.
BSTR VideoFileName; | 감지를 위한 전체 비디오 파일 이름입니다. |
int Threshold; | 감지 임계값입니다. 권장되는 기본값은 RGB 색 공간의 경우 19, YUV의 경우 5입니다. 0에서 255 사이일 수 있습니다. 이 매개변수가 주 매개변수입니다. 두 프레임의 차이가 이 값보다 크면 새 장면이 시작됩니다. 따라서: 임계값이 낮을수록 장면이 더 많습니다. |
int UpLumaTresh; | "흰색 페이드 아웃" 감지에 사용됩니다. 권장되는 기본값은 -1입니다. -1에서 255 사이일 수 있습니다. "-1"은 이 기능을 비활성화합니다. 전반적인 프레임 밝기가 이 값보다 크면 새 장면이 시작됩니다. 이 기능을 사용하면 이러한 밝은 프레임 시퀀스를 별도의 장면으로 정의할 수 있습니다. |
int BottomLumaTresh; | "검은색 페이드 아웃" 감지에 사용됩니다. 권장되는 기본값은 -1입니다. -1에서 255 사이일 수 있습니다. "-1"은 이 기능을 비활성화합니다. 전반적인 프레임 밝기가 이 값보다 작으면 새 장면이 시작됩니다. 이 기능을 사용하면 이러한 어두운 프레임 시퀀스를 별도의 장면으로 정의할 수 있습니다. |
int MinSceneLength; | 감지된 장면의 최소 지속 시간(프레임 단위)을 설정합니다. |
int RegisterGraph; | 내부 처리 그래프의 등록을 제어합니다.
ROT(Running Object Table)에서. 1(ROT에 등록) 또는 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
이 구조체에는 축소판 그림 생성 매개변수가 포함되어 있습니다.
int JpegFormat; | 파일 형식을 선택합니다. 0 - BMP 파일 생성, 1 - JPEG 파일 생성. |
int JpegQuality; | JPEG 압축 품질입니다. 0에서 100 사이의 정수입니다. |
int ImagesPerScene; | 장면당 이미지 수입니다. 1 - 시작 프레임만, 2 - 각 장면의 시작 및 끝 프레임. |
double Scale; | 축소판 그림 크기 조정 계수입니다. 1 - 전체 크기 사진. 부동 소수점 값입니다. |
BSTR FileName; | 축소판 그림 파일 이름 템플릿입니다. 하나의 정수 필드가 있는 "C" "printf" 함수용 문자열입니다. |
ISceneDetector interface
이 인터페이스는 장면 감지를 위한 메서드를 제공합니다.
DetectScenesInFile method
HRESULT _stdcall DetectScenesInFile([in] DetectorParameters *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY(long) *Scenes );
이것이 주 장면 감지 메서드입니다.
Params에서 감지 매개변수를 전달하고 Scenes에서 SAFEARRAY에 대한 포인터를 전달합니다.
Scenes가 NULL이면 함수는 감지된 장면 목록을 반환하지 않습니다.
호출자는 이 메서드를 호출하기 전에 SafeArray를 만들 필요가 없습니다.
Scenes가 NULL이 아니고 함수 호출 후에도 *Scenes가 NULL이 아니면 호출자는 *Scenes SafeArray를 제거해야 합니다.
*Scenes는 2차원 배열입니다. 찾은 각 장면에 대해 장면 시작 및 중지 프레임 번호의 두 가지 long 값이 있습니다. 이러한 값은 처리 시작 미디어 위치와 관련이 있습니다.
축소판 그림 생성을 켜고 매개변수를 지정하려면 NULL이 아닌 포인터를 ThumbnailsParams로 전달합니다. 축소판 그림 생성을 비활성화하려면 NULL을 전달합니다.HRESULT 값을 반환합니다. 가능한 값은 다음과 같습니다.
0 성공 0x80040601 지정되지 않은 오류 0x80040602 DirectShow가 설치되지 않았거나 버전이 너무 오래되었습니다. 0x80040603 비디오 지속 시간을 가져올 수 없습니다. 스틸 이미지일 수 있습니다. 0x80040604 잘못된 인수 0x80040605 장치 컨텍스트를 만들 수 없습니다. 0x80040606 개체가 다른 작업으로 인해 사용 중입니다. 0x80040607 프레임 속도가 0입니다. 스틸 이미지일 수 있습니다. 0x80040608 그래프를 빌드할 수 없습니다.
ISceneDetector2 interface
이 인터페이스는 ISceneDetector 인터페이스에서 파생되며 장면 감지를 위한 확장된 메서드를 제공합니다. ISceneDetector에서 상속된 메서드 외에 ISceneDetector2 인터페이스는 다음 메서드를 노출합니다.
DetectScenesInFile2 method
HRESULT _stdcall DetectScenesInFile2([in] DetectorParameters2 *Params, [in] ThumbnailsParameters *ThumbnailsParams, [out] SAFEARRAY(long) *Scenes );
DetectScenesInFile과 달리 이 메서드는 DetectorParameters2 매개변수 집합을 사용하므로 색 공간, 시작 및 중지 처리 위치를 지정할 수 있습니다.
이 메서드에서 반환된 장면 시작 및 중지 값은 Params.StartPosition 값과 관련이 있다는 점에 유의하십시오.
다른 정보는 DetectScenesInFile 설명을 참조하십시오.GetFrameRate method
HRESULT _stdcall GetFrameRate([out, retval] double *pFrameRate );
마지막으로 처리된 파일의 비디오 프레임 속도를 반환합니다. 시간-프레임 번호 변환에 유용합니다.
pFrameRate가 NULL이면 S_OK 또는 E_INVALIDARG를 반환합니다.
ISceneDetectorEvents events interface
이 이벤트 인터페이스는 실시간 방식으로 장면 감지 정보를 검색하기 위한 메서드를 제공합니다.
NewScene method
HRESULT NewScene([in] long SceneIndex, [in] long Start, [in] long Stop );
새 장면이 정의될 때 감지기에 의해 실행되는 이벤트입니다.
SceneIndex는 0부터 시작합니다.
Start 및 Stop도 0부터 시작하며 프레임 번호입니다.
DetectScenesInFile2 메서드를 통해 처리가 시작되면 Start 및 Stop 값은 Params.StartPosition 값과 관련이 있습니다.Status method
HRESULT Status([in] long ScenesFound, [in] long CurrentFrame, [in] long TotalFrames, [out] long *AbortProcess );
이벤트는 50ms마다 발생하고 프로세스 상태에 대해 클라이언트에 알립니다.
AbortProcess는 변수에 대한 포인터입니다. 따라서 클라이언트는 *AbortProcess를 1 값으로 설정하여 현재 장면 감지를 취소할 수 있습니다.