【问题标题】:Get native video resolution of a video file获取视频文件的原生视频分辨率
【发布时间】:2011-07-05 23:13:51
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

  • 您是否想在 EVR 的上下文中获取本机?如果是这样,这将很困难,因为您现在已经知道您和解码的视频信号之间的过滤器是什么。如果您的应用程序只需要它,请查看 Media Foundation 的 Source Reader。

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-02
    • 2017-05-09
    • 2014-05-15
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2013-04-03
    • 2022-01-27
    相关资源
    最近更新 更多