小工具知识网

当前位置: 首页 > 行业知识 > vue 对接海康威视web视频监控,配合iframe使用

行业知识

vue 对接海康威视web视频监控,配合iframe使用

2026-11-06 14:59:26 来源:互联网转载

一、下载视频web插件v1.5.2版本

下载地址:海康开放平台

bin目录下,打开bin文件安装

二、在vue项目的public目录新建文件夹,放入插件js文件

三、引入海康插件,创建p

四、创建WebControl实例

 // 插件对象实例,初始化为null,需要创建多个插件窗口时,需要定义多个插件对象实例变量,各个变量唯一标志对应的插件实例​    var oWebControl = null;​    var bIE = !!window.ActiveXObject || "ActiveXObject" in window; // 是否为IE浏览器​    var pubKey = ""; // demo中未使用加密,可根据需求参照开发指南自行使用加密功能​    var initCount = 0; // 异常重启计数 initPlugin();        // 创建插件实例,并启动本地服务建立websocket连接,创建插件窗口        function initPlugin() {            oWebControl = new WebControl({                szPluginContainer: "playWnd",                iServicePortStart: 15900,                iServicePortEnd: 15900,                szClassId: "23BF3B0A-2C56-4D97-9C03-0CB103AA8F11", // 用于IE10使用ActiveX的clsid                cbConnectSuccess() {                    console.log('创建WebControl实例成功');                    oWebControl.JS_StartService('window', {                        // WebControl实例创建成功后需要启动服务                        dllPath: './VideoPluginConnect.dll', // 值"./VideoPluginConnect.dll"写***                    })                        .then(                            () => {                                // // 启动插件服务成功                                oWebControl.JS_SetWindowControlCallback({                                    // 设置消息回调                                    cbIntegrationCallBack: cbIntegrationCallBack,                                });                                oWebControl.JS_CreateWnd("playWnd").then(() => {                                    //JS_CreateWnd创建视频播放窗口,宽高可设定                                    oWebControl.JS_SetDocOffset({                                        left: 250,                                        top: 125,                                    }); // 更新插件窗口位置                                    oWebControl.JS_Resize(640 * 1, 360 * 1);                                    initBtnClicked(); // 创建播放实例成功后初始化                                });                            },                            () => {                                // 启动插件服务失败                            }                        )                        .catch((err) => {                            console.log(err);                        });                },                cbConnectError: function () {                    console.log("cbConnectError");                    oWebControl = null;                    $("#playWnd").html("插件未启动,正在尝试启动,请稍候...");                    WebControl.JS_WakeUp("VideoWebPlugin://");                    initCount++;                    if (initCount  

五、初始化

 // 获取公钥​    function getPubKey(callback) {​      oWebControl​        .JS_RequestInterface({​          funcName: "getRSAPubKey",​          argument: JSON.stringify({​            keyLength: 1024,​          }),​        })​        .then(function (oData) {​          console.log(oData);​          if (oData.responseMsg.data) {​            pubKey = oData.responseMsg.data;​            callback();​          }​        });​    }​    // 设置窗口控制回调​    function setCallbacks() {​      oWebControl.JS_SetWindowControlCallback({​        cbIntegrationCallBack: cbIntegrationCallBack,​      });​    }​    // 推送消息​    function cbIntegrationCallBack(oData) {​      showCBInfo(JSON.stringify(oData.responseMsg));​    }​    // RSA加密​    function setEncrypt(value) {​      var encrypt = new JSEncrypt();​      encrypt.setPublicKey(pubKey);​      return encrypt.encrypt(value);​    }​    // 显示接口返回的消息及插件回调信息​    function showCBInfo(szInfo, type) {​      if (type === "error") {​        szInfo =​          "" +​          dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss") +​          " " +​          szInfo +​          "";​      } else {​        szInfo =​          "" +​          dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss") +​          " " +​          szInfo +​          "";​      }​      $("#cbInfo").html(szInfo + $("#cbInfo").html());​    }  // 初始化​     function requestInterface(value) {​      oWebControl.JS_RequestInterface(JSON.parse(value)).then(function (oData) {​        // console.log(oData)​        showCBInfo(JSON.stringify(oData ? oData.responseMsg : ""));​      });​    }  function initBtnClicked() {       var appkey = "XXXXX"; //综合安防管理平台提供的appkey,必填                var secret = _that.setEncrypt("XXXXXXXXXX"); //综合安防管理平台提供的secret,必填                var ip = "XXXXXXXX"; //综合安防管理平台IP地址,必填                var playMode = 0; //初始播放模式:0-预览,1-回放                var port = 443; //综合安防管理平台端口,若启用HTTPS协议,默认443                var snapDir = ""; //抓图存储路径                var videoDir = ""; //紧急录像或录像剪辑存储路径                var layout = _that.layout; //playMode指定模式的布局                var enableHTTPS = 1; //是否启用HTTPS协议与综合安防管理平台交互,这里总是填1                var encryptedFields = "secret"; //加密字段,默认加密领域为secret                var showToolbar = 0; //是否显示工具栏,0-不显示,非0-显示                var showSmart = 0; //是否显示智能信息(如配置移动侦测后画面上的线框),0-不显示,非0-显示                var buttonIDs = ""; //自定义工具条按钮            var params = {                "argument":                {                       appkey: appkey, //API网关提供的appkey                        secret: secret, //API网关提供的secret                        ip: ip, //API网关IP地址                        playMode: playMode, //播放模式(决定显示预览还是回放界面)                        port: port, //端口                        snapDir: snapDir, //抓图存储路径                        videoDir: videoDir, //紧急录像或录像剪辑存储路径                        layout: layout, //布局                        enableHTTPS: enableHTTPS, //是否启用HTTPS协议                        encryptedFields: encryptedFields, //加密字段                        showToolbar: showToolbar, //是否显示工具栏                        showSmart: showSmart, //是否显示智能信息                        buttonIDs: buttonIDs, //自定义工具条按钮                },                "funcName": "init"            }            var param = JSON.stringify(params);            //删除字符串中的回车换行            param = param.replace(/(\s*)/g, "");            // 执行初始化            requestInterface(param);            playFn()        }

六、视频预览

 function playFn() {       var cameraIndexCode = Code; //获取输入的监控点编号值,必填            var streamMode = this.streamMode; //主子码流标识:0-主码流,1-子码流            var transMode = 1; //传输协议:0-UDP,1-TCP            var gpuMode = 0; //是否启用GPU硬解,0-不启用,1-启用            var wndId = -1; //播放窗口序号(在2x2以上布局下可指定播放窗口)            cameraIndexCode = cameraIndexCode.replace(/(^\s*)/g, "");            cameraIndexCode = cameraIndexCode.replace(/(\s*$)/g, "");​      var params = {​        "argument": {​          cameraIndexCode: cameraIndexCode, //监控点编号                    streamMode: streamMode, //主子码流标识                    transMode: transMode, //传输协议                    gpuMode: gpuMode, //是否开启GPU硬解                    wndId: wndId, //可指定播放窗口​        },​        "funcName": "startPreview"​      }​      // console.log(code);​      var param = JSON.stringify(params);​      //删除字符串中的回车换行​      param = param.replace(/(\s*)/g, "");​      // 执行预览​      requestInterface(param);​    }

七、完整代码

play.html页面,放在public目录下

                Document    html,    body {        padding: 0;        margin: 0;    }                                // 插件对象实例,初始化为null,需要创建多个插件窗口时,需要定义多个插件对象实例变量,各个变量唯一标志对应的插件实例        var oWebControl = null;        var bIE = !!window.ActiveXObject || "ActiveXObject" in window; // 是否为IE浏览器        var pubKey = ""; // demo中未使用加密,可根据需求参照开发指南自行使用加密功能        var initCount = 0; // 异常重启计数        initPlugin();        // 创建插件实例,并启动本地服务建立websocket连接,创建插件窗口        function initPlugin() {            oWebControl = new WebControl({                szPluginContainer: "playWnd",                iServicePortStart: 15900,                iServicePortEnd: 15900,                szClassId: "23BF3B0A-2C56-4D97-9C03-0CB103AA8F11", // 用于IE10使用ActiveX的clsid                cbConnectSuccess() {                    console.log('创建WebControl实例成功');                    oWebControl.JS_StartService('window', {                        // WebControl实例创建成功后需要启动服务                        dllPath: './VideoPluginConnect.dll', // 值"./VideoPluginConnect.dll"写***                    })                        .then(                            () => {                                // // 启动插件服务成功                                oWebControl.JS_SetWindowControlCallback({                                    // 设置消息回调                                    cbIntegrationCallBack: cbIntegrationCallBack,                                });                                oWebControl.JS_CreateWnd("playWnd").then(() => {                                    //JS_CreateWnd创建视频播放窗口,宽高可设定                                    oWebControl.JS_SetDocOffset({                                        left: 250,                                        top: 125,                                    }); // 更新插件窗口位置                                    oWebControl.JS_Resize(640 * 1, 360 * 1);                                    initBtnClicked(); // 创建播放实例成功后初始化                                });                            },                            () => {                                // 启动插件服务失败                            }                        )                        .catch((err) => {                            console.log(err);                        });                },                cbConnectError: function () {                    console.log("cbConnectError");                    oWebControl = null;                    $("#playWnd").html("插件未启动,正在尝试启动,请稍候...");                    WebControl.JS_WakeUp("VideoWebPlugin://");                    initCount++;                    if (initCount  

vue文件

 

上一篇:C/C++ 笔试(一)

下一篇:服务器上怎么插拔硬盘的?