【问题标题】:Directshow video render to two windowsDirectshow 视频渲染到两个窗口
【发布时间】:2019-06-07 13:52:06
【问题描述】:

我正在使用一个使用 C++ Builder 渲染到面板上的 directshow 播放器。我希望将正在播放的内容复制到第二台显示器上。 directshow 是否支持任何类型的事件来表示渲染器何时渲染了帧?

我正在使用标准的 Microsoft 播放器示例,它选择第一个可用的渲染器,该渲染器适用于 AVI 文件 EVR、VRM9,它可以正常播放和渲染。我想在渲染图像更新时复制它们(最大 50fps 或 60fps)并将它们放在没有我所有其他关联按钮和面板的第二个屏幕上。

【问题讨论】:

  • 你找到方法了吗? Infinite Pin Tee Filter 似乎允许附加多个查看器。快速 GraphEdit 测试成功。
  • 您好,我设法通过添加无限 Tee 和两个演示者(每个都有自己的窗口)来使用 Directshow。可以满足我的需求,但可能不是正确的方法。

标签: directshow


【解决方案1】:

您需要配置 EVR 或 VMR9 以使用无窗口渲染模式并实现一个Custom Presenter for EVR,它将负责渲染每个接收到的帧(纹理)。然后,您就可以在单独的窗口上渲染此纹理。

这里也是实现Custom Presenter for VMR9 的链接,但IMO EVR 更适合在Win 7 及更高版本中使用。

【讨论】:

  • 感谢您的回复。您的回答可能是更好的方法,但有点超出我目前的信心水平。感谢您的链接,它们将在未来证明是有用的。现在我已经设法通过将两个渲染器过滤器放入过滤器图中来使其工作,每个窗口一个。现在这对我有用,并且易于实施,无需向系统添加任何过滤器。我可以看看更好的实现方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多