1

我正在通过 UDP 接收 H264 流。我想解码流,以便我可以将帧发送到 OpenCV 或其他任何东西。我在这里遇到了 Cisco 的开源 H264 解码器:https ://github.com/cisco/openh264 经过一番努力,我得到了在 Visual Studio 2019 中构建的解码器解决方案,并使用我从命令行创建的文件对其进行了测试原始 UDP 数据报。有用。

现在我想弄清楚如何在 C# 项目中使用解码器 DLL (welsdec.dll)。上一次我在 Windows 中用 C++ 做任何严肃的事情是在 DirectShow 和 Delphi 5 天,所以我完全迷失了。

使用 __declspec(dllexport) 显式导出 H264 项目中的任何内容。这正常吗?将 DLL 作为项目引用添加到 C# 项目不起作用(“引用无效或不受支持”)。

我猜DLL是非托管的。我可以直接在 C# 中使用它吗?我是否必须将 DLL 重写为,或者可能或将其包装在 C++ CX 库中才能使其正常工作?

4

1 回答 1

3

您可以使用PInvoke显式使用 C# 中的非托管 DLL 。

您还可以在 C++/CLI 中编写中间 DLL,以简化托管 C# 应用程序和本机 DLL 之间的调用。这是secile/OpenH264Lib.NET根据stuartd 的评论采取的方法。

看起来 H264 项目使用模块定义文件 (.def)代替使用 .def 装饰导出declspec。您应该仍然可以使用上述方法访问这些公开导出的函数。

于 2019-05-21T02:26:27.003 回答