如何使用VMR9无渲染模式查找源视频大小

时间:2011-06-01 23:41:38

标签: directx directshow

我的应用程序使用VMR9 Renderless模式播放WMV文件。我使用 IGraphBuilder :: RenderFile 构建过滤器图形,并使用 IMediaControl 控制播放。一切都很好,但我无法弄清楚如何确定源视频大小。有什么想法吗?

注意:此问题之前曾在How can I adjust the video to a specified size in VMR9 renderless mode?中提出过。但解决方案是使用无窗口模式而不是无渲染模式,这需要重写我的代码。

2 个答案:

答案 0 :(得分:1)

您可以在http://mediainfo.sourceforge.net/hr/Download/Windows使用MediaInfo项目,并通过VCS2010或VCS2008文件夹中包含的CS包装器获取有关所需视频的所有信息。

编辑:对不起,我以为你是受管理的。但在任何一种情况下都可以使用MediaInfo,所以它可能会有所帮助。

答案 1 :(得分:1)

首先,您需要视频渲染器。您可以通过在IGraphBuilder界面上使用EnumFilters来完成此操作。然后在该过滤器上调用EnumPins以查找输入引脚。然后,您可以调用ConnectionMediaType以获取要传入该过滤器的媒体类型。现在,根据设置的formattype,您可以将pbFormat指针强制转换为相关结构,然后从中找出视频大小。如果你想要之前的尺寸(看看是否正在进行一些缩放),你可以使用“ConnectedTo”返回引脚,以获得下一个过滤器。然后,您可以找到其输入引脚并重复ConnectionMediaType调用。重复,直到找到所需的过滤器引脚。