3

我正在使用一个 DirectShow 应用程序,该应用程序导出为用于视频流的 Firefox 插件。

据我所知,该插件似乎是在与网页不同的窗口上呈现的。我想编辑应用程序以允许插件上的 html 元素,就像 flash 允许 wmode='opaque' 或 'transparent' 一样。另一个可行的选择是通过应用程序传递鼠标事件(例如鼠标移动和鼠标按下)。

我一直在阅读 put_MessageDrain 和 put_Owner,但我不确定如何将它们应用到应用程序或它们是否会起作用。

我也知道 iframe shimming 可能会起作用,但由于我可以访问应用程序的源代码,因此我想直接添加功能而不是使用变通方法。iframe 匀场是我的最佳选择吗?这似乎是最简单的选择。

该应用程序当前使用无窗口模式,并且始终位于网页上的所有其他内容之上。

4

1 回答 1

1

使用 DirectShow 视频渲染器显示视频的方式,如果不提供您自己的视频渲染器过滤器或用于标准视频渲染器之一的自定义分配器/演示器对象,则无法使其透明。DirectShow 渲染器使用 DirectDraw 或 Direct3D 表面显示视频,该表面独立于宿主窗口,并且不与宿主交互,以使您能够将图片与透明视频和其他内容组合在一起。

我一直在阅读put_MessageDrainput_Owner

这些是用于窗口模式的,您似乎使用 Windowless 假设您提供了一个托管窗口和矩形以不透明地覆盖。Renderless,第三​​种模式 VMR-7/9 和 EVR 为您提供的是您提供分配器/演示器并覆盖演示的模式。

Windows SDK(对于某些您可能需要寻找旧版本,而不是最新版本)提供了示例: Renderless, VMR9AllocatorEVRPresenter用于演示无渲染模式。

于 2013-06-06T16:59:27.853 回答