DirectShow - 将参数传递给自定义源推送过滤器

时间:2010-01-26 21:21:43

标签: filter directshow

我正在研究一种解决方案,该解决方案将用于接收来自远程主机的视频流,并将各种文本放在其上。目前,它包括自定义DirectShow推送过滤器(C ++),它使用RTP协议从远程主机接收数据,以及设置DirectShow图形的小型C#应用程序,并用作视频的容器。我正在使用DirectShowLib互操作库。但是,我不确定如何将此C#应用程序中的参数传递给我的自定义过滤器。有什么方法可以做到这一点?

2 个答案:

答案 0 :(得分:3)

最简单的方法是注册自己的协议(在HKCR下创建一个密钥myproto,然后创建一个包含你的clsid的值“Source Filter”)。然后你可以渲染“myproto://ip=192.168.0.1& port = 12& param1 = x”并将它们传递给你的IFileSourceFilter :: Load方法。

答案 1 :(得分:2)

创建密钥:

HKEY_CLASS_ROOT

  • myproto
    • “Source Filter”=“187463A0-5BB7-11D3-ACBE-0080C75E246E”
Windows 7上的

是不够的。有两个问题:

  • 你需要用大括号包装你的CLSID
  • 您需要添加“网址协议”

正确的版本如下:

HKEY_CLASS_ROOT

  • myproto
    • “Source Filter”=“{187463A0-5BB7-11D3-ACBE-0080C75E246E}”
    • “Url Protocol”=“”

此外,您可以查看HKEY_CLASS_ROOT-> MMS作为参考。