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 ondblclick='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、实时浏览至此完成