【问题标题】:Display active window for video in custom allocator在自定义分配器中显示视频的活动窗口
【发布时间】:2009-10-13 10:43:56
【问题描述】:

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

【问题讨论】:

    标签: directx video-streaming directshow


    【解决方案1】:

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

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

    可以在here 中找到自定义分配器使用的非常好的示例。

    【讨论】:

      【解决方案2】:

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

      如果是这样,您可能想调查Video Mixing Render filter。您可以创建您的own custom allocator,它允许您拦截present call,然后您可以在任何地方绘制视频,但是,您想要的。

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

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

      【讨论】:

      • 感谢您的回复。是的,它用实际视频打开新视频。我已经制作了自己的自定义分配器,在目前的通话中,我正在面板上绘制视频。正如在某些视频文件中提到的那样,显示了这个视频窗口..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      相关资源
      最近更新 更多