Metronome 필터 샘플

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

Description

이 샘플 필터는 참조 클록을 구현하는 방법을 보여줍니다. 필터는 기본 마이크 입력을 사용하여 시계 속도를 결정하는 데 사용하는 오디오 스파이크(예: 클릭, 손 박수 또는 기침)를 수신 대기합니다.

사용량

샘플 프로젝트를 빌드하고 필터 DLL(Metronom.ax)을 Windows 시스템 디렉터리에 복사합니다. Metronom.reg 파일을 실행하여 DLL을 등록합니다.

필터를 사용하려면 다음을 수행합니다.

  1. GraphEdit에서 비디오 스트림을 렌더링하는 필터 그래프를 빌드합니다.
  2. 렌더링된 오디오 스트림을 삭제합니다.
  3. 그래프에 Metronome 필터를 추가합니다. DirectShow 필터 범주에 표시됩니다.
  4. 그래프를 실행합니다. 비디오는 정상 속도로 재생되기 시작합니다.
  5. 손을 밀거나 메트로놈을 사용하여 새로운 속도를 설정합니다.

프로그래밍 참고 사항

이 필터는 비디오에 대해서만 작동합니다. 오디오 렌더러는 근본적으로 다른 클록 속도와 동기화할 수 없습니다.

분당 92번(최대 652ms마다 한 번씩) 박수를 치면 비디오가 정상 속도로 재생됩니다. Metronom.cpp에서 상수 BPM 값을 변경하여 이 기본값을 변경할 수 있습니다.

일정 기간 동안 박수를 치지 않고 다시 박수를 치는 경우 거의 동일한 속도로 다시 시작해야 합니다. 그렇지 않으면 필터가 이를 무시합니다. 또한 비디오 재생 속도는 CPU 속도에 의해 제한됩니다. 시간 제한을 초과하면 필터가 속도 변경에 대한 응답을 중지합니다. 이 경우 그래프를 중지하고 다시 시작합니다.

고유한 클록을 구현하는 경우 가장 중요한 규칙은 참조 클록이 뒤로 이동해서는 안 된다는 것입니다. 즉, 이전 시간 값보다 작은 시간 값을 보고해서는 안됩니다.

샘플 다운로드

DirectShow SDK 샘플을 다운로드하려면 최신 버전의 Windows SDK를 설치합니다.

이 샘플은 [SDK 루트]\Samples\Multimedia\DirectShow\Filters\Metronome 경로 아래에 설치됩니다.

CBaseReferenceClock 클래스

DirectShow 샘플