0

我在 c# 中遇到了一个奇怪的问题...
我试图通过 VLC 库连接到 ONVIF 相机(告诉我是否有更好的方法)
我在 NuGet 上找到了一个名为 nVLC 的不错的预实现库,然后我使用了它,非常好,
但是当我在c#中更改目标框架时,我意识到nVLC的目标框架与我选择的不同,
当我将目标框架改回4.0(作为nVLC的)时,我有一个奇怪的LibVlcInitException异常,
然后我下载了nVLC源代码和调试数据库以找出nVLC中的问题
最后我发现异常不在nVLC的代码中,而是在处理外部方法的C#内部库加载机制中的某个地方。
我什至尝试在我的项目中使用内核方法 LoadLibrary() 加载 libvlc.dll ,但是这个失败像以前一样......

m_hMediaLib = LibVlcMethods.libvlc_new(args.Length, args); //nVLC internal line that error occures.
//and:
IMediaPlayerFactory _factory = new MediaPlayerFactory(); //in my code.

我更喜欢使用 VLC 连接到我的 ONVIF 相机(我的相机给我 H264 格式)。

最后:

  1. 我想知道 LoadLibrary() 有什么问题。
  2. 我想知道是否有更好的库可以用更少的代码(JUST H264)连接到 ONVIF 相机。

谢谢...

4

1 回答 1

1

经过一周的努力,我找到了答案!!
这是因为 nVLC 找到 VLC 安装路径的方式...

如果您安装了 x64 VLC,这将肯定会在注册表中添加一个名为“SOFTWARE\VideoLAN\VLC”的键。
然后在 nVLC 中检查进程(Environment.Is64BitProcess)是否为 x64 从“SOFTWARE\VideoLAN\VLC”获取 VLC 安装路径(由于我安装了 x86 版本的 VLC 而丢失的路径),但如果进程为 x86,它会搜索在 VLC 的“SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”中。

希望能帮到你...

于 2014-10-01T13:04:27.987 回答