在自定义分配器中显示视频的活动窗口

时间:2009-10-13 10:43:56

标签: directx video-streaming directshow

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

2 个答案:

答案 0 :(得分:1)

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

如果是这样,您可能想要调查Video Mixing Render filter。您可以创建own custom allocator,以便拦截present call,然后您可以随时随地绘制视频。

或者,我个人认为这更容易,您想调查转储过滤器示例,然后使用它来构建您自己的渲染器。这样,当你收到框架时​​,你可以用它做任何你喜欢的事情,而不用内部的问题。如果您不希望它们在您的应用程序之外可用,那么它的编写过滤器非常简单。

编辑:你有QueryInterfaced the IVMRFilterConfig9 interface和SetRenderingMode到VMR9Mode_Windowless吗?

答案 1 :(得分:1)

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

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

可以找到自定义分配器使用的一个很好的示例here