我目前正在为Media Foundation播放器编写一些自定义EVR。
到目前为止一切正常,但我需要找到我正在渲染的视频文件的原始分辨率。
我尝试使用IBasicFilter2接口来使用getVideoSize,get_VideoHeight或其他get_SourceWidth等...但它总是返回给我一个E_NOINTERFACE ......
那么有人有一种解决视频文件的方法吗?即使它有一个漂亮的光库...只是大小没有其他... Windows设法在文件浏览器中找到它,但我完全无法从代码中获取它...
谢谢!
答案 0 :(得分:0)
您可以在DirectShow中使用IMediaDet获取媒体文件中的流信息,包括视频流的分辨率。
虽然有些警告,但您可能需要备份方法。
您需要注册合适的DirectShow过滤器,以了解正在检查的媒体文件。您可能安装了可能产生错误结果的过滤器 - 例如仅为音频过滤器注册了忽略文件中任何视频流的媒体类型。
目前已弃用,MSDN参考页上没有任何关于替换此功能的指示。由于已从Windows SDK中删除标头,因此构建也很麻烦。
以下是该方法不起作用的一个例子...... Get MP4 stream lengths