在Windows CE上接收UDP单播视频流

本文关键字:UDP 单播 视频 Windows CE | 更新日期: 2023-09-27 18:17:07

我不是严格意义上的软件开发人员,我是一名电子工程师,我主要处理硬件和微机上的C,但我刚刚继承了一个c#项目,需要对其进行轻微的调整(至少我希望是轻微的!)我用c#做过一些完整紧凑的框架,但是我没有DirectShow的经验。

我们有一个Windows CE 6.0设备,它运行一些用于数字标牌类型产品的c#软件。部分显示器可以配置为视频,目前它可以播放存储在设备SD卡上的文件,没有太多问题。我被要求使它与UDP网络流一起工作(我相信它将是RAW MPEG4,我只是在等待最终确认)。

从阅读这个,我知道DirectShow使用"过滤器",并且有源,解码器和渲染过滤器。它们通过"引脚"连接在一起,形成一个"过滤图"。我看到DirectShow都是基于COM的,虽然我知道COM,但我自己从来没有在愤怒中使用过它。我确实有这个c#软件,我继承了,所以我不是从一个空白的画布开始。

我认为我需要修改的部分是:

clsid = CLSID_.FilterGraph;
riid = IID_.ICaptuGraphBuilder2;
hr = (HRESULT)PInvokes.CoCreateInstance(ref clsid, IntPtr.Zero, (uint)CLSCTX_.INPROC_SERVER, riid, out obj);
_graphBuilder = (IGraphBuilder)obj;
hr = (HRESULT)_graphBuilder.RenderFile(filePath, null);

根据msdn.microsoft.com/en-us/library/ms834433.aspx上的文章和其他各种来源,Windows CE支持:

  • MMS流
  • HTTP流媒体
  • 文件流
  • 广播和多比特率流
  • Windows Media Station支持
  • <
  • ASX支持/gh>
  • 编解码器

现在,我认为Windows CE不原生支持UDP流是对的吗?如果是这样,我有几个问题:

  1. 我读到有可能创建自定义DirectShow过滤器。撇开我的技术能力不谈,这是实现我想要的目标的一个选择吗?我已经找到http://archive.msdn.microsoft.com/dshowfilter,但我不是很熟悉c++,我有麻烦把它进入VS2008玩它。我相当精通C和c#,所以我希望像这样的东西,我应该能够摸索我的方式,如果我必须?

  2. 有人知道任何现有的组件在那里,将做什么我想要的已经?我们可以买的东西吗?我不能在这上面浪费太多时间。我做了一些搜索关于"Windows CE DirectShow"answers"Windows CE DirectShow源过滤器",但我只是得到相同的几篇文章和未回答的论坛帖子。我不确定什么都不存在,还是我找错了东西?

  3. 如果我自己写这篇文章,我已经找到了这样的文章,他们用c#而不是c++创建了过滤器。这看起来有点在我的舒适区,但我仍然不确定我到底需要做什么。我对获得UDP流数据的想法很好,但我不确定我需要用它做什么才能把它转到"输出引脚"。我如何修改我们的软件来使用这个自定义过滤器,而不是普通的过滤器?只是一般开始与空源过滤器似乎超出了我的时刻!

我很抱歉,如果这看起来像是琐碎的东西,但这一切都有点太多了,不能一次接受,我只是需要一点指导,我想。如果有人能帮我,我会非常感激的!

提前感谢,

里克

在Windows CE上接收UDP单播视频流

关于你的问题:

  1. 是的,一个自定义的直接显示过滤器正是你所需要的。

  2. 我不知道有任何现成的Windows CE产品可以做到这一点,但我也从来没有找过,所以不要认为我缺乏知识等于缺乏可用性。我敢打赌,如果你想把你的工作建立在别人的基础上,你将不得不找到一个桌面版本的过滤器,获得源代码,然后为Windows CE重新编译它。我知道LEADTOOLS有一船的成像的东西,所以它可能至少值得查询那里。

  3. 如果你自己写,不幸的是,必须用c++完成。DirectShow过滤器必须有一个COM接口。要导出本机接口,框架必须具有EE Hosting,而Compact framework没有。这样做的最终结果是你不能在Compact Framework中创建COM对象或CCW,这意味着你不能在c#中为Windows CE创建DirectShow过滤器。

如果您想购买产品,我建议您联系Chris Tacke,看看他的公司是否有什么产品或可以做什么。

他的博客是>> HERE <<我认为他是关于Compact Framework开发的最大权威,可以去寻找真正的问题。

然而,我不知道有什么办法可以在他的博客上联系到他。也许他会在不久的将来改变这一点。