IMediaDet 接口

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

注意

[已弃用。 此 API 可能会从 Windows 的未来版本中删除。]

 

接口 IMediaDet 检索有关媒体文件的信息,例如流数以及每个流的媒体类型、持续时间和帧速率。 它还包含用于从视频流中检索单个帧的方法。 MediaDet (MediaDet) 对象公开此接口。

若要使用此接口获取有关文件的信息,请执行以下步骤:

  1. 通过调用 CoCreateInstance 创建 MediaDet 对象的实例。 类 ID 为CLSID_MediaDet。
  2. 调用 IMediaDet::p ut_Filename 以指定源文件的名称。
  3. 调用 IMediaDet::get_OutputStreams 以获取源中的输出流数。
  4. 调用 IMediaDet::p ut_CurrentStream 以指定特定流。
  5. 调用以下任一方法:

若要检索视频帧,请调用 IMediaDet::GetBitmapBitsIMediaDet::WriteBitmapBits。 返回的帧始终采用 24 位 RGB 格式。

注意

不要将同一 MediaDet 对象用于多个文件。 若要从多个文件获取信息或视频帧,请使用单独的 MediaDet 实例。

 

IMediaDet 接口不支持 VIDEOINFOHEADER2 格式,因此不能使用此接口获取交错字段或有关交错的信息。 此外,如果上游解码器仅支持 VIDEOINFOHEADER2,则不能使用 IMediaDet。 例如,MPEG-2 解码器可能就是这种情况。 此外,接口 IMediaDet 会忽略文件中非视频或音频的任何流。 例如,如果文件包含音频流、数据流和视频流, 则 get_OutputStreams 方法将仅报告音频和视频) (两个流。

成员

IMediaDet 接口继承自 IUnknown 接口。 IMediaDet 还具有以下类型的成员:

方法

IMediaDet 接口具有这些方法。

方法 说明
EnterBitmapGrabMode 将媒体检测器切换到位图抓取模式,并将筛选器图查找到指定时间。
get_CurrentStream 检索媒体检测器当前使用的流编号。
get_Filename 检索媒体检测器当前使用的源文件的名称。
get_Filter 检索指向媒体检测器当前使用的源筛选器的指针。
get_FrameRate 检索当前流的帧速率。
get_OutputStreams 检索媒体源中包含的音频和视频流的数量。
get_StreamLength 检索当前流的持续时间。
get_StreamMediaType 检索当前流的媒体类型。
get_StreamType 检索当前流的媒体类型的全局唯一标识符 (GUID) 。
get_StreamTypeB 检索表示当前流的媒体类型的 GUID 的字符串。
GetBitmapBits 检索指定媒体时间的视频帧。
GetSampleGrabber 检索指向 ISampleGrabber 接口的指针。
put_CurrentStream 指定媒体检测器要使用的流编号。
put_Filename 指定媒体检测器要使用的源文件的名称。
put_Filter 指定媒体检测器要使用的源筛选器。
WriteBitmapBits 在指定的媒体时间检索视频帧并将其写入文件。

 

备注

注意

头文件 Qedit.h 与版本 7 之后的 Direct3D 标头不兼容。

 

注意

若要获取 Qedit.h,请下载适用于 Windows Vista 和 .NET Framework 3.0 的Microsoft Windows SDK更新。 Qedit.h 在 Windows 7 和 .NET Framework 3.5 Service Pack 1 的Microsoft Windows SDK中不可用。

 

要求

要求
标头
Qedit.h

Strmiids.lib