IMediaDet 接口
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
注意
[已弃用。 此 API 可能会从 Windows 的未来版本中删除。]
接口 IMediaDet
检索有关媒体文件的信息,例如流数以及每个流的媒体类型、持续时间和帧速率。 它还包含用于从视频流中检索单个帧的方法。
MediaDet (MediaDet) 对象公开此接口。
若要使用此接口获取有关文件的信息,请执行以下步骤:
- 通过调用 CoCreateInstance 创建 MediaDet 对象的实例。 类 ID 为CLSID_MediaDet。
- 调用 IMediaDet::p ut_Filename 以指定源文件的名称。
- 调用 IMediaDet::get_OutputStreams 以获取源中的输出流数。
- 调用 IMediaDet::p ut_CurrentStream 以指定特定流。
- 调用以下任一方法:
若要检索视频帧,请调用 IMediaDet::GetBitmapBits 或 IMediaDet::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中不可用。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|