1

我正在使用自定义分配器示例在面板上显示视频,对于某些文件,它会在某些活动窗口上播放视频,并且单独显示。我怎样才能避免打开这个不需要的窗口。

4

2 回答 2

1

通常,当解码器和渲染器无法就连接达成一致时,视频会在 ActiveMovie 窗口中播放,因此图形生成器使用默认渲染器(如果您通过执行 RenderFile 方法自动构建图形),它是单独播放的。检查分配器的 InitializeDevice 方法中的代码,如果 InitializeDevice 总是失败,那么您的视频将在默认渲染器中渲染。

确保您使用的是 VMR9Mode_Renderless 模式。如果您没有在 VMR7/9 中使用任何混音,我建议删除对 SetNumberOfStreams 方法的任何调用,这会使事情变得更简单。

可以在此处找到自定义分配器使用的相当好的示例。

于 2009-10-27T11:47:22.073 回答
1

你是什​​么意思?当您开始播放文件时,它会打开一个包含实际视频的窗口?

如果是这样,您可能想研究Video Mixing Render filter。您可以创建自己的自定义分配器,允许您拦截当前呼叫,然后您可以在任何地方绘制视频,但是,你想要。

或者,我个人认为这更容易,您想研究转储过滤器示例,然后使用它来构建您自己的渲染器。这样,当您收到框架时​​,您可以随心所欲地使用它,而无需担心内部结构。如果您不希望它们在您的应用程序之外可用,它非常简单的编写过滤器。

编辑:你有没有QueryInterfaced IVMRFilterConfig9 接口和 SetRenderingMode 到 VMR9Mode_Windowless?

于 2009-10-13T11:17:57.820 回答