我对DirectShow非常陌生,现在真的感觉到了。我希望在WPF应用程序中托管directshow图形的directshow呈现器窗口,目前正在使用HwndHost类来实现这一点。不过,对于HwndHost,我需要的是渲染视频的窗口的句柄。我已经找到了一个示例,它显示了通过枚举IVideoWindow接口的引脚并查询IOverlay来获取句柄,因此可以使用GetWindowHandle方法来获取句柄。
问题是IOverlay似乎不能在DirectShow.Net中使用。在读取DirectShow.Net 关于页面时,IOverlay在表中列出,标题为“这些接口在源代码中,但被废弃、无文档化、用于Ole自动化或其他不可测试的,这意味着它们不是,也不会被测试”。
那么,我要做什么才能获得这个定义呢?它是否被排除在作为库分发的构建之外,所以我应该自己构建库吗?
还是有更好的方法来做我想做的事?任何帮助都会像我说的那样感谢你,因为我对所有这些东西都是新手。
提前谢谢。
编辑:外面的DirectShow开发人员不多?或者这是个愚蠢的问题,绝对可以接受偷窥者的任何建议.
发布于 2009-09-03 08:17:57
通常这样做的方法是使用IVideoWindow::put_Owner重新创建视频窗口,使其成为您自己窗口的子窗口。您还需要设置AutoShow (false)、可见、宽度和高度属性,并更改WindowStyle属性使其成为子窗口。
IOverlay接口是在DirectShow (1996)的第一个版本中实现的,以支持一些早已失效的硬件解码器。我不认为当前的视频渲染器会支持它。
窗口句柄很难获得,因为糟糕的应用程序编程导致了中频繁的死锁,而开发人员认为需要将DirectShow线程和他们拥有的窗口以及任何应用程序线程明确分隔开来。
G
https://stackoverflow.com/questions/1370888
复制相似问题