海康視頻的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、實時瀏覽至此完成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM