1

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

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

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

那么有人有办法获得视频文件的分辨率吗?即使它有一个漂亮的灯光库......只是大小没有别的......Windows设法在文件浏览器中找到它,但我完全无法从代码中获取它......

谢谢!

4

1 回答 1

0

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

不过有一些警告,因此您可能需要一种备份方法。

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

它目前已被弃用,在 MSDN 参考页面上没有说明替换此功能的内容。由于头文件已从 Windows SDK 中删除,因此构建起来也很痛苦。

这是该方法不起作用的一种情况... 获取 MP4 流长度

于 2011-03-31T12:47:28.397 回答