抓取海报框架

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

[此 API 不受支持,将来可能会更改或不可用。]

本文介绍如何使用 DirectShow 编辑服务随附的 MediaDet (MediaDet) 对象显示数字媒体文件中的海报框。

媒体检测器是一个帮助程序对象,可以从媒体源文件获取格式信息。 它还可以从源文件中的视频流中获取位图图像。 假设文件是可查找的,可以从文件中的任何点获取图像。 返回的图像始终采用 24 位 RGB 格式。

媒体检测器不是筛选器,应用程序不需要使用 Filter Graph 管理器或创建筛选器图。 在内部,媒体检测器会创建一个包含 样本抓取器筛选器的筛选器图。 为了获取位图,媒体检测器会查找并暂停筛选器图,然后从示例抓取器筛选器检索位图。 应用程序通过 IMediaDet 接口与媒体检测器通信。 媒体检测器是将筛选器图封装在帮助程序对象中的一个很好的示例,目的是保护应用程序免受图形相关详细信息的防护。

媒体检测器在两种模式下运行。 首次创建媒体检测器时,媒体检测器处于“信息收集”模式。 可以指定媒体文件的名称,并获取有关文件中每个流的信息,例如格式类型、帧速率或持续时间。 如果文件包含视频流,则可以将媒体检测器切换到“位图抓取”模式,并从源中检索位图。 但是,执行此操作后,无法将媒体检测器切换回其原始模式;它永久附加到该视频流。 若要使用另一个流或另一个文件,必须创建媒体检测器的新实例。

注意

本教程中的代码示例使用自动管理引用计数的 ATL CComPtr 类。 如果希望使用原始接口指针,请记得在使用完接口后释放每个接口。 此外,为简洁起见,代码示例省略了应用程序应执行的大部分错误检查。 在工作代码中,始终检查 HRESULT 值。

 

本教程包含以下步骤:

使用 DirectShow 编辑服务