메트로놈 필터 샘플
[DirectShow 이 페이지와 연결된 기능은 레거시 기능입니다. MediaPlayer, IMFMediaEngine, Media Foundation 오디오/비디오 캡처대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. Microsoft는 가능하면 새로운 코드에서 MediaPlayer, IMFMediaEngine 및 Audio/Video Capture를 DirectShow대신 Media Foundation 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
묘사
이 샘플 필터는 참조 클록을 구현하는 방법을 보여줍니다. 필터는 기본 마이크 입력을 사용하여 클릭, 손 박수, 기침과 같은 오디오 스파이크를 감지하고 이를 사용하여 클록 속도를 결정합니다.
사용법
샘플 프로젝트를 빌드하고 필터 DLL(Metronom.ax)을 Windows 시스템 디렉터리에 복사합니다. Metronom.reg 파일을 실행하여 DLL을 등록합니다.
필터를 사용하려면 다음을 수행합니다.
- GraphEdit에서 비디오 스트림을 렌더링하는 필터 그래프를 빌드합니다.
- 렌더링된 오디오 스트림을 삭제합니다.
- 그래프에 Metronome 필터를 추가합니다. DirectShow 필터 범주에 표시됩니다.
- 그래프를 실행합니다. 비디오는 정상 속도로 재생되기 시작합니다.
- 손을 박거나 메트로놈을 사용하여 새로운 속도를 설정합니다.
프로그래밍 노트
이 필터는 비디오에 대해서만 작동합니다. 오디오 렌더러는 근본적으로 다른 클록 속도와 동기화할 수 없습니다.
분당 92번(~652ms마다 한 번씩) 박수를 치면 비디오가 정상 속도로 재생됩니다. Metronom.cpp 상수 BPM
값을 변경하여 이 기본값을 변경할 수 있습니다.
일정 시간 동안 박수를 중지한 다음 다시 박수를 시작하면 거의 동일한 속도로 다시 시작해야 합니다. 그렇지 않으면 필터가 이를 무시합니다. 또한 비디오 재생 속도는 CPU 속도에 의해 제한됩니다. 시간 제한을 초과하면 필터가 속도 변경에 대한 응답을 중지합니다. 이 경우 그래프를 중지하고 다시 시작합니다.
고유한 클록을 구현하는 경우 가장 중요한 규칙은 참조 클록이 뒤로 이동해서는 안 된다는 것입니다. 즉, 이전 시간 값보다 작은 시간 값을 보고해서는 안됩니다.
샘플 다운로드
DirectShow SDK 샘플을 다운로드하려면 최신 버전의 Windows SDK설치합니다.
이 샘플은 [SDK 루트] \Samples\Multimedia\DirectShow\Filters\Metronome 경로 아래에 설치됩니다.
관련 항목