节拍器筛选器示例

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

说明

此示例筛选器演示如何实现引用时钟。 筛选器使用默认麦克风输入来侦听音频峰值 (,例如点击、手拍或咳嗽) ,用于确定时钟速率。

使用情况

生成示例项目并将筛选器 DLL (Metronom.ax) 复制到 Windows 系统目录。 运行 Metronom.reg 文件以注册 DLL。

若要使用筛选器,请执行以下操作:

  1. 在 GraphEdit 中生成用于呈现视频流的筛选器图。
  2. 删除任何呈现的音频流。
  3. 将 Metronome 筛选器添加到图形。 它显示在 DirectShow 筛选器类别中。
  4. 运行图形。 视频将以正常速度开始播放。
  5. 拍手或使用节拍器设置新的速度。

编程说明

此筛选器仅适用于视频。 音频呈现器无法同步到完全不同的时钟速率。

如果每分钟拍 92 次, (每约 652 毫秒) 一次,则视频将以正常速率播放。 可以通过在 Metronom.cpp 中更改常量 BPM 的值来更改此默认值。

如果停止鼓掌一段时间,然后再次开始鼓掌,则必须以大致相同的速度重新开始,否则筛选器将忽略它。 此外,视频播放速率受 CPU 速度的限制。 如果超出限制的任何时间长度,筛选器将停止响应速率更改。 如果发生这种情况,请停止图形并重启。

如果实现自己的时钟,最重要的规则是引用时钟不得后退。 也就是说,它们不得报告小于上一个时间值的时间值。

下载示例

若要下载 DirectShow SDK 示例,请安装最新版本的 Windows SDK

此示例安装在以下路径下: [SDK 根]\Samples\Multimedia\DirectShow\Filters\Metronome。

CBaseReferenceClock 类

DirectShow 示例