Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Directx 如何使用VMR9无渲染模式查找源视频大小_Directx_Directshow - Fatal编程技术网

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

Directx 如何使用VMR9无渲染模式查找源视频大小,directx,directshow,Directx,Directshow,我的应用程序使用VMR9无渲染模式播放WMV文件。我使用IGraphBuilder::RenderFile构建一个过滤图,并使用IMediaControl控制播放。一切正常,但我不知道如何确定源视频的大小。有什么想法吗 注:此问题是在中之前提出的。但是解决方案是使用无窗口模式而不是无渲染模式,这需要重写我的代码。您可以通过VCS2010或VCS2008文件夹中包含的CS包装器使用MediaInfo项目,以获取所需视频的所有信息 编辑:对不起,我以为你是被管理的。但无论哪种情况,都可以使用Medi

我的应用程序使用VMR9无渲染模式播放WMV文件。我使用IGraphBuilder::RenderFile构建一个过滤图,并使用IMediaControl控制播放。一切正常,但我不知道如何确定源视频的大小。有什么想法吗


注:此问题是在中之前提出的。但是解决方案是使用无窗口模式而不是无渲染模式,这需要重写我的代码。

您可以通过VCS2010或VCS2008文件夹中包含的CS包装器使用MediaInfo项目,以获取所需视频的所有信息


编辑:对不起,我以为你是被管理的。但无论哪种情况,都可以使用MediaInfo,因此它可能会有所帮助。

首先,您需要视频渲染器。可以通过在IGraphBuilder界面上使用EnumFilters来实现这一点。然后调用该筛选器上的EnumPins以查找输入pin。然后,您可以调用ConnectionMediaType以获取要输入该筛选器的媒体类型。现在,根据formattype设置为什么,您可以将pbFormat指针投射到相关结构,并从中找出视频大小。如果你想在这之前得到尺寸(看看是否有缩放),你可以使用“ConnectedTo”在管脚上找到下一个过滤器。然后,您可以找到它的输入引脚并重复ConnectionMediaType调用。重复此操作,直到找到所需的过滤器pin。

谢谢您的建议。使用这样的库肯定比浏览过滤图容易得多。谢谢你为我指明了正确的方向。虽然花了一段时间,但我还是能够通过过滤图找到我的源视频。我本希望有一种更简单的方法来实现这一点,但这似乎是唯一的方法——至少在无渲染模式下。@Knute:就DirectShow而言,没有什么是容易的。。在我看来,它越灵活越好,但越快越好。不幸的是,媒体基础更糟糕。