c# - 在 C# 项目中使用 OpenH264 DLL

标签 c# c++ h.264 openh264

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

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

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

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

最佳答案

您可以使用 PInvoke 在 C# 中显式使用非托管 DLL .

你也可以写一个intermediary DLL in C++/CLI以简化托管 C# 应用程序和 native DLL 之间的调用。这是 secile/OpenH264Lib.NET 采取的方法每stuartd's评论。

看起来H264项目使用module definition files (.def)代替用 declspec 装饰导出。您应该仍然能够使用上述方法访问这些公开导出的函数。

关于c# - 在 C# 项目中使用 OpenH264 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56230212/

相关文章:

javascript - Angular 提示缺少一个根本没有声明的模块我

c# - 需要帮助打印列表中的多页

c# - Unity C#,如何从另一个脚本调用一个函数来启动动画?

c++ - 将韩语单词分割成单个音节 - C++/Python

OpenCV RTSP H264 捕获

audio - 如何从 H.264 帧和音频帧的集合创建 mp4 文件?

c# - 为 64 位和 32 位开发

c++ - 是否可以从函数模板返回可变参数 lambda?

c++ - boost::filesystem::path::string() 输出的奇怪行为

header - H264 帧查看器