海康视频的4G接入-实时浏览

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

posted on 2017-06-23 16:21  汤包包  阅读(6613)  评论(1编辑  收藏  举报

导航