gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:05:59 26 4
gpt4 key购买 nike

我不是严格意义上的软件开发人员,我是一名电子工程师,我主要处理硬件和微处理器上的 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 支持:

  • 彩信流
  • HTTP 流媒体
  • 文件流
  • 广播和多比特率流媒体
  • Windows Media Station 支持
  • ASX 支持
  • 编解码器

现在,我认为 Windows CE 本身不支持来自 UDP 的流式传输是否正确?如果是这样,我有几个问题:

  1. 我了解到可以创建自定义 DirectShow 过滤器。除了我的技术能力,这是否是实现我在这里想要的目标的一种选择?我找到了 http://archive.msdn.microsoft.com/dshowfilter ,但我对 C++ 不是很熟悉,而且我无法将它放入 VS2008 中来使用它。我相当精通 C 和 C#,所以我希望对于这样的事情,如果我必须的话,我应该能够摸索通过?

  2. 有没有人知道现有的组件可以满足我的要求?我们可以购买的东西?我不能花太多时间在这上面。我搜索了一些关于“Windows CE DirectShow”和“Windows CE DirectShow 源代码过滤器”的内容,但我只得到了相同的几篇文章和未答复的论坛帖子。我不确定是否什么都不存在,或者我在搜索错误的东西?

  3. 如果我自己写这篇文章,我会找到诸如 this 之类的文章,他们在 C# 而不是 C++ 中创建了过滤器。这看起来更符合我的舒适区,但我仍然不确定我到底需要做什么。我对获取 UDP 流数据的想法很好,但我不确定下一步需要做什么才能将其传输到“输出引脚”。我如何修改我们的软件以使用此自定义过滤器而不是普通过滤器?目前,我似乎无法从一个空的源过滤器开始!

如果其中一些看起来微不足道,我很抱歉,但一下子就有点太多了,我认为我只需要一点指导。如果有人能帮助我,我将不胜感激!

提前致谢

瑞克

最佳答案

关于您的问题:

  1. 是的,自定义 Direct Show 过滤器正是您所需要的。然后可以将该过滤器插入到您的过滤器图中。

  2. 我不知道有任何适用于 Windows CE 的现成产品可以做到这一点,但我也从未寻找过这样的产品,所以不要认为我缺乏知识就等于缺乏可用性。我敢打赌,如果您想以其他人的工作为基础,您将不得不找到过滤器的桌面版本,获取源代码,然后为 Windows CE 重新编译它。我知道 LEADTOOLS有大量的成像资料,因此至少值得在那里查询一下。

  3. 不幸的是,如果您自己编写,则必须使用 C++ 完成。 DirectShow 过滤器必须 有一个 COM 接口(interface)。要导出 native 接口(interface),框架必须具有 EE 托管,而 Compact Framework 则没有。其最终结果是您无法在 Compact Framework 中创建 COM 对象或 CCW,这意味着您无法在 C# 中为 Windows CE 创建 DirectShow 过滤器。

关于c# - 在 Windows CE 上接收 UDP 单播视频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8415397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com