1、最近公司要看海康的视频,采用海康4G摄像头+海康8700平台+公司平台显示视频的方式
2、通过和海康的沟通,公司平台加载海康的OCX控件即可,可惜,可惜,海康的OCX版本估计还是大几年前的,只支持IE8浏览器,顿时奔溃。现在都win10时代了,IE早就11了,用IE11看海康视频,有时候会直接IE奔溃。泪奔。你总不能要求客户把IE11卸载了,改回IE8吧,又麻烦,还会增加用户的讨厌感。偶尔又一次机会,发现360浏览器IE兼容模式,居然也可以看海康的OCX,信心立马大增。让用户装个360极速浏览器总归没问题。
3、自建私有服务器,安装海康8700平台,跟电信申请固定IP,绑定到私有服务器。么办法,4G摄像头,没有固定IP服务器,就无法传输视频。这个成本还是很高滴。
4、一切准备好,在海康技术的帮助下,在海康8700平台,顺利的看到了视频。不看视频的情况下,4G摄像头,需要注册到8700平台,1小时1M的流量,一个月就是24*30;在看视频的情况下,3/4M每秒,要人老命。1G个的流量,只够看300秒(高清),这年头,非高清看了有啥意思,想看啥都看不清楚。再过几年,4G是否也会实现包月功能呢?
5、平台搞定,就是接入自己的平台了。海康提供了OCX-SDK,HTML+JS,直接拿来用,功能删删减减,最终实现:登录不同的用户,直接可以看到该用户才有权限看到的视频。具体细节就不描述了,各种调试,各种功能的测试。
var OCXobj = document.getElementById("PreviewOcx"); //获取视频控件 var ret = OCXobj.Login(ipAdd, port, userName, pw); //IP地址,端口号,用户名,密码 var xmlStr = OCXobj.GetResourceInfo(4);//获取所有监控点信息 var xmldom = getXmlDomFromStr(xmlStr); //检测视频查看权限,不满足的,直接跳过,满足的就显示到界面上的list里面 $(xmldom).find("CameraInfo").each(function () { var camview = 128; var camid = $(this).find("CameraIndexCode").text(); //128:预览视频权限;camid :监控点编号 var xmlStr1 = OCXobj.QueryRightByIndexCodes(camview, camid); //检测权限 var xmldom1 = getXmlDomFromStr(xmlStr1); var xmlStr2 = xmldom1.getElementsByTagName("right")[0].getAttributeNode("rightCode").text; //"0"是有权限;"-1"是无权限 if (xmlStr2 == "0") { htmlStr += "<li οndblclick='startPreview(" + $(this).find("CameraID").text() + ");'><a href='javascript:void(0)' style='text-decoration:none'>" + $(this).find("CameraName").text() + "</a></li>"; } }); $("#tree").html(htmlStr); /*****************调用预览**********************/ function startPreview(cameraId) { var OCXobj = document.getElementById("PreviewOcx"); var ret = OCXobj.StartTask_Preview_FreeWnd(cameraId); switch (ret) { case 0: showMethodInvokedInfo("StartTask_Preview_FreeWnd接口调用成功!"); break; case -1: showMethodInvokedInfo("StartTask_Preview_FreeWnd接口调用失败!错误码:" + OCXobj.GetLastError()); break; default: break; } } function getXmlDomFromStr(xmlStr) { var xmldom = null; if (navigator.userAgent.toLowerCase().indexOf("msie") != -1) { xmldom = new ActiveXObject("Microsoft.XMLDOM"); xmldom.loadXML(xmlStr); } else { xmldom = new DOMParser().parseFromString(xmlStr, "text/xml"); } return xmldom; }
6、实时浏览至此完成