最后没有通过这个方式实现,只是简单记录一下尝试这个方法遇到的一些问题和大致思路

需求:.net web项目的网页调用海康视频接口进行实行监控

在网上百度了一番之后,尝试使用web插件,发现需要AppKey和AppSecret的值里面搜索海康视频找到这俩值怎么获取到,是需要访问海康摄像头的ip/center地址去访问,我一直都访问不到,后面问咨询了海康的人员,才知道访问这个地址是需要去购买他们的海康软件才可以的,这时候我也才分清,我需要下载的是硬件的SDK

1.下载【设备网络SDK_Win64 V6.1.6.45_build202103】

找到c# demo 【1-实时预览示例代码一】

搜索了一轮网上的资料找到的海康视频的项目大部分都是winform,想使用前端直接接受后端的视频流,但是没有找到相关的例子,所以最后选择了直接把海康视频原来的winform的demo修改成【windows窗体控件库】,通过activex在页面调用打包好的窗体控件库的方法。

2.在改动过程中可能会遇到的报错:Could not load type 'WIFI_AUTH_PARAM' from assembly 'HikPreview, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 0 that is incorrectly aligned or overlapped by a non-object field.    
两种解决办法:①将海康SDK丢到类库里再引用 (一开始的我这样子操作了,但是引用不进去,这里要注意使用跟项目版本一样的类库,我因为项目是.net framework4.7.2,类库创建时引用了默认的.net core3.1,在调用时虽然有显示,但是无法调用,后面想到版本的问题改为一致的就可以调用了 )

②还有一种就是把WIFI_AUTH_PARAM这个变量相关的代码先注释掉,但是不知道什么时候要用到这个变量。

3.运行代码后,发现报错无法访问到CHCNetSDK,因为dllimport引用的路径不对,将原来的窗体类转换为用户控件类后,引用的dll文件跟之前的不一样,我尝试了几次,发现引用这个项目产生的dll路径相同的地方,才可以正常引用到

我的项目要应用到的dll我放在bin/debug下面

海康监控网页调用 海康监控嵌入网页_c#

 dllimport引用的写法

海康监控网页调用 海康监控嵌入网页_c#_02

4.在控件成功运行,摄像头的各项功能都可以正常使用之后,将修改好的这个【用户控件类】的解决方案里,在新增一个setup项目->选择主项目输出->点击setup项目右键[生成],这时候程序集com被注册(这个不确定是不是这一步被注册的,我是多次操作发现经过一步后,可以在引用的Com里面找到这个项目的dll了),

前端引用方式

<object id="VisioDisPlay"
        classid="clsid:7F29ACED-AD84-4EEE-9E1A-58BE255F9EF7"//com
        width="1250"
        height="600"   
>
</object>

第一次操作页面有出来该控件,后面想再次操作的时候,控件一直不显示,所以海康视频最后没有通过这个方式实现,只是简单记录一下尝试这个方法遇到的一些问题和大致思路。