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、實時瀏覽至此完成