当前位置: 首页 > 编程语言 > C#

如何使用WPFMediaKit或类似程序将使用DES创建的DirectShowfilter图形渲染到WPF控件?

时间:2023-04-11 12:17:13 C#

我如何使用WPFMediaKit或类似工具将使用DES创建的DirectShowfilter图形渲染到WPF控件?我使用C#和DirectShow.net开发了一个简单的视频编辑器。到目前为止,我有一个使用DirectShow编辑服务构建的DirectShowfilter图。我的应用程序根据需要控制图形,在预览窗口中运行、暂停和停止播放。在编辑会话期间,图表会响应用户添加、删除或修改媒体的请求而发生变化。目前,我正在使用包裹在WindowsFormsHost中的PictureBox来预览编辑后的视频。但我真的很想试试JeremiahMorril的WPFMediaKit。(http://wpfmediakit.codeplex.com)最初的想法(我的蛮力方法)是将IGraphBuilder和IPin从我的图表传递到WPFMediaKit中MediaUriPlayer.cs中的OpenSource()函数,以添加VMR9渲染器并连接到我现有的图表,而不是创建一个在原始OpenSource()中完成的新图表。这并没有很好地解决问题,在尝试了各种组合之后,我放弃了,大部分时间都出现了“COM对象从其底层RCW中分离出来”的错误。在最初的失败之后,我在http://videorendererelement.codeplex.com上搜索并发现了Morrill的类似VideoRendererElement。将样本采集器添加到我的DirectShow图形并使用它将样本发送到VideoRendererElement似乎并不难。这类似于VideoRendererElement中包含的网络摄像头示例。最后,我想知道是否有可能以相同的方式使用WPFMediaKit中的任何较新控件,即将图形中的样本采集器中的样本传递到MediaUriElement、DvdPlayerElement或WPFMediaKit集合中的其他控件。基本上我的问题是:任何人都可以建议一种使用WPFMediaKit或VideoRenderingElement实现此示例采集器场景的方法吗?或者也许有人可以建议一种更好的方法让我的DES将过滤器图形呈现为WPF控件……从内存中进行。因为听起来你有一个自定义的DirectShow图。我只想将WPFMediaKit用于一些事情:参加D3DRenderer基类。这使得使用D3DImage渲染D3D内容变得容易。采用VMR9分配器和D3D9互操作的东西。我假设您正在使用VideoMixingRenderer9...因此,在创建VMR9时,在您的代码中获取允许您设置自定义分配器的VMR9接口(示例应该在baseclass.cs的CreateRenderer方法中)。实例化从MediaKit中提取的自定义分配器并将其传递给接口。这个分配器有一个事件,当它获得一个新的d3d表面和一个新的框架准备好出现时触发。确保D3DRenderer类获得这些事件(新表面、新框架)。应该是90%复制粘贴:)以上是C#学习教程:HowtorenderfromaDirectShowfiltergraphiccreatedwithDEStoaWPFcontrolusingWPFMediaKitorsimilar?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢