查询查找功能

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

Microsoft® DirectShow® 支持通过 IMediaSeeking 接口进行 查找。 筛选器关系图管理器公开此接口,但查找功能始终由图中的筛选器实现。

无法查找某些数据。 例如,无法从相机中查找实时视频流。 但是,如果流是可查找的,则有各种类型的查找,它可能支持。 其中包括:

  • 在流中查找任意位置。
  • 检索流的持续时间。
  • 检索流中的当前位置。
  • 反向播放。

IMediaSeeking 接口定义一组标志(AM_SEEKING_SEEKING_CAPABILITIES),用于描述可能的查找功能。 若要检索流的功能,请调用 IMediaSeeking::GetCapabilities 方法。 方法返回标志的按位组合。 应用程序可以使用 (位 AND) 运算符对其进行测试&。 例如,以下代码检查图形是否可以查找任意位置:

DWORD dwCap = 0;
HRESULT hr = pSeek->GetCapabilities(&dwCap);
if (AM_SEEKING_CanSeekAbsolute & dwCap)
{
    // Graph can seek to absolute positions.
}