使用媒体检测器
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
[此 API 不受支持,将来可能会更改或不可用。]
媒体检测器是一个帮助程序对象,可以检索有关文件的信息,例如流的数量、流类型和持续时间。 它还包含用于从视频流检索海报帧的方法。 它公开 IMediaDet 接口。
媒体检测器以两种模式之一运行。 创建媒体检测器实例时,它不会附加到特定的源文件。 在此模式下,可以从多个源文件检索流信息。 但是,使用媒体检测器获取海报帧后,它会切换到 位图抓取模式。 在位图抓取模式下,媒体检测器附加到特定视频流,流信息方法不再有效。 此外,无法将媒体检测器切换回其启动模式。 因此,请在检索海报帧之前获取所需的任何流信息,或者为每个流创建媒体检测器的新实例。
若要获取流信息,请执行以下操作:
- 使用源文件的名称调用 IMediaDet::p ut_Filename 。
- 调用 IMediaDet::get_OutputStreams 以获取源中的流数。
- 使用 IMediaDet::p ut_CurrentStream 指定流编号。 然后调用以下一个或多个方法:
- IMediaDet::get_StreamType:检索流的媒体类型。
- IMediaDet::get_StreamLength:检索流的持续时间。
- IMediaDet::get_FrameRate:检索视频流的帧速率。
若要获取海报框架,请指定流编号,如上一步所示。 然后调用 IMediaDet::GetBitmapBits(将海报帧复制到缓冲区)或 IMediaDet::WriteBitmapBits,后者将海报帧保存到文件中。
相关主题