寻求

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

筛选器支持通过 IMediaSeeking 接口查找。 应用程序查询 适用于 IMediaSeeking 的 Filter Graph 管理器,并使用它发出 seek 命令。 Filter Graph 管理器将每个 seek 命令分发到图形中的所有呈现器筛选器。 每个呈现器通过上游筛选器的输出引脚上游传递命令,直到到达可以执行搜寻的筛选器。 通常,源筛选器或分析器筛选器(如 AVI 拆分器)执行查找操作。

当筛选器执行查找操作时,它会刷新所有挂起的数据。 结果是最大程度地减少搜寻命令的延迟,因为现有数据是从图形中刷新的。 执行 seek 命令后,流时间将重置为零。

下图演示了事件序列。

事件序列

如果分析程序筛选器具有多个输出引脚,则通常指定其中一个引脚接受 seek 命令。 其他引脚拒绝或忽略它们收到的任何查找命令。 这样,分析程序会保持其所有流同步。 但是,所有输出引脚都应实现 IMediaSeeking::GetCapabilitiesIMediaSeeking::CheckCapabilities ,以返回筛选器的查找功能。 这可确保 Filter Graph 管理器向应用程序返回正确的值。

已弃用 用于筛选器的 IMediaPosition 接口。 自动化客户端仍然需要在 Filter Graph Manager 上使用此接口,因为 IMediaSeeking 与自动化不兼容,但 Filter Graph Manager 会将所有 IMediaPosition 调用转换为 IMediaSeeking 调用。

冲洗

DirectShow 中的时间和时钟