获取视频文件的原生视频分辨率

时间:2011-02-28 18:03:20

标签: c++ video directshow resolution ms-media-foundation

我目前正在为Media Foundation播放器编写一些自定义EVR。

到目前为止一切正常,但我需要找到我正在渲染的视频文件的原始分辨率。

我尝试使用IBasicFilter2接口来使用getVideoSize,get_VideoHeight或其他get_SourceWidth等...但它总是返回给我一个E_NOINTERFACE ......

那么有人有一种解决视频文件的方法吗?即使它有一个漂亮的光库...只是大小没有其他... Windows设法在文件浏览器中找到它,但我完全无法从代码中获取它...

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在DirectShow中使用IMediaDet获取媒体文件中的流信息,包括视频流的分辨率。

虽然有些警告,但您可能需要备份方法。

您需要注册合适的DirectShow过滤器,以了解正在检查的媒体文件。您可能安装了可能产生错误结果的过滤器 - 例如仅为音频过滤器注册了忽略文件中任何视频流的媒体类型。

目前已弃用,MSDN参考页上没有任何关于替换此功能的指示。由于已从Windows SDK中删除标头,因此构建也很麻烦。

以下是该方法不起作用的一个例子...... Get MP4 stream lengths