天天看點

海康威視WEB視訊預覽

        近期,公司一更新項目需要線上視訊預覽,用到海康威視的硬碟錄像機,接手之後發現原有的元件(NetVideoActiveX23.ocx),登入接口和擷取裝置、通道等接口都正常調用,預覽接口StartRealPlay總是傳回失敗,沒找到原因,隻能重新寫了一遍。這裡記錄一下用WebComponentsKit對海康威視進行預覽時的心得,希望對各位有所幫助。

  •  WebComponentsKit和NetVideoActiveX23的登入端口不一樣,這裡要特别注意,WebComponentsKit通過HTTP端口登入,而NetVideoActiveX23則是通過一個叫服務端口來登入。具體可以登入硬碟錄像機的配置頁面進行檢視。
  •  WebComponentsKit支援域名登入和IP登入,NetVideoActiveX23隻支援IP登入
  • WebComponentsKit登入接口為異步模式,回調寫在SUCCESS中,這個看demo就知道了。
    var iRet = WebVideoCtrl.I_Login(IP, protocol, Port, Username, Password, {
    
            success: function (xmlDoc) {
            },
            error: function () {
            }
        });
               
  • 預覽接口I_StartRealPlay,預設顯示在目前選中視窗。如果要指定視訊顯示在哪個視窗,通過參數iWndIndex來指定,iWndIndex從0開始。
    var iRet = WebVideoCtrl.I_StartRealPlay(IP, { iWndIndex: wndIndex, iStreamType: 1, iChannelID: iChannelID,bZeroChannel: false})
               

             可以通過上述方式來同時預覽多個視訊通道

g_iWndIndex = 0; 

    for (var i = 0; i < channels.length; i++) {
            (function (index) {
                setTimeout(function () {
                    StartRealPlay(IP, index, index + 1);
                    g_iWndIndex++;
                }, 50); 
            })(i);
    }
           
  • 有時調用預覽接口失敗,發現webVideoCtrl.js中p内容為空,n為-1,沒找到原因(知道的朋友可以回複,謝謝),暫時添加if (S != undefined)跳出不處理(還沒發現影響)
    var S = p[n];if (S != undefined) S.bShttpIPChannel = P 
               

            以上如有錯漏,懇請指出,友善大家共同學習!

繼續閱讀