Sfoglia il codice sorgente

视频摄像头预览--海康

彭宇 2 anni fa
parent
commit
fdfb3d3683
4 ha cambiato i file con 112 aggiunte e 73 eliminazioni
  1. 1 1
      src/api/dahua/dahua.js
  2. 17 0
      src/api/haikang/haikang.js
  3. 2 2
      src/api/monitor.js
  4. 92 70
      src/views/monitor.vue

+ 1 - 1
src/api/dahua/dahua.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 查询摄像头列表
+// 查询摄像头
 export function getDahuaVideoServer() {
   return request({
     url: '/center-monitor/DahuaController/getDahuaVideoServer',

+ 17 - 0
src/api/haikang/haikang.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+// 查询摄像头
+export function getHaiKangVideoServer(param) {
+  return request({
+    url: '/center-monitor/HaiKangController/getHaiKangVideoServer',
+    method: 'get',
+    params: param
+  })
+}
+// 查询电视墙
+export function getTVWallList() {
+  return request({
+    url: '/center-monitor/TVWallController/init',
+    method: 'get',
+  })
+}

+ 2 - 2
src/api/monitor.js

@@ -3,14 +3,14 @@ import request from '@/utils/request'
 // 获取左侧动态感知设备
 export function selectDeviceType() {
   return request({
-    url: '/center-fire/VisuForestMonitorCenterController/selectDeviceType',
+    url: '/center-firecontrol/VisuForestMonitorCenterController/selectDeviceType',
     method: 'post',
   })
 }
 // 根据设备类型查看列表
 export function selectCameraByDeptId(deptId) {
   return request({
-    url: '/center-fire/VisuForestMonitorCenterController/selectCameraByDeptId',
+    url: '/center-firecontrol/VisuForestMonitorCenterController/selectCameraByDeptId',
     method: 'post',
     data:{"deptId":deptId}
   })

+ 92 - 70
src/views/monitor.vue

@@ -104,7 +104,7 @@
     </div>
     <eventLocation ref="eventLocation"></eventLocation>
     <TVWall ref="TVWall"></TVWall>
-    <el-dialog title="摄像头" :visible.sync="cameraVisible" v-if="cameraVisible" width="770px" style="height: 700px;"
+    <el-dialog :title="cameraTitle" :visible.sync="cameraVisible" v-if="cameraVisible" width="770px" style="height: 700px;"
                @close="cancelEventLocationShow()">
       <div style="width:100%;height:400px;position:relative;">
         <!--视频窗口展示---海康-->
@@ -131,7 +131,10 @@ import TVWall from '@/components/TVWall.vue' //电视墙弹窗
 import {
   getDahuaVideoServer
 } from '@/api/dahua/dahua'
-import DHWs from '@/dahua/lib/DHWs'
+import {
+  getHaiKangVideoServer
+} from '@/api/haikang/haikang'
+// import DHWs from '@/dahua/lib/DHWs'
 
 /** ----------------------------------摄像头预览结束------------------------------------- */
   // import echarts from 'echarts'
@@ -158,15 +161,14 @@ export default {
     /** ----------------------------------底部按钮公用组件结束------------------------------------- */
   },
   mounted() {
-    this.selectDeviceType()
+    this.selectDeviceType(-1)
     this.selectKeyAreaList()
   },
   data() {
     return {
-      iconCurrentIndex1: '',
-      listCurrentIndex1: '',
-      listCurrentIndex2: '',
-      listCurrentIndex3: '',
+      iconCurrentIndex1: '-1',
+      listCurrentIndex1: '-1',
+      listCurrentIndex2: '-1',
       /** ----------------------------------摄像头预览开始------------------------------------- */
       //大华
       activePanel: 'key1',
@@ -174,7 +176,8 @@ export default {
       cameraParams: [],
       ws: null,
       //海康
-      cameraVisible:false,
+      cameraTitle: '',
+      cameraVisible: false,
       initCount: 0,
       pubKey: '',
       oWebControl: null,
@@ -402,8 +405,7 @@ export default {
               markersMap.isAggregation = true
             }
             if (res.data.visuForestCloudCameraBOList[i].channelCode != null) {
-              markersMap.parameter = res.data.visuForestCloudCameraBOList[i].channelCode.split(
-                ',')
+              markersMap.parameter = res.data.visuForestCloudCameraBOList[i].cameraCode
             } else {
               markersMap.parameter = []
             }
@@ -483,7 +485,7 @@ export default {
               markersMap.isAggregation = true
             }
             if (res.data[i].channelCode != null) {
-              markersMap.parameter = res.data[i].channelCode.split(',')
+              markersMap.parameter = res.data[i].cameraCode
             } else {
               markersMap.parameter = []
             }
@@ -572,11 +574,10 @@ export default {
       }
     },
     /** 预览按钮操作 */
-    preview(channelCode) {
-      let that=this;
+    preview(cameraCode) {
+      let that = this
       // getDahuaVideoServer().then(newResponse => {
       //   console.log(newResponse)
-      //   debugger
       //   this.ws.detectConnectQt().then(res => {
       //     if (res) { // 连接客户端成功
       //       this.alertLogin()
@@ -604,11 +605,53 @@ export default {
       //     }
       //   })
       // })
-      this.cameraVisible=true
-      that.initPlugin()
-      setTimeout(function() {
-        that.playhk();
-      }, 5000)
+      that.cameraVisible = true
+      getHaiKangVideoServer({cameraCode:cameraCode}).then(newResponse => {
+        that.cameraTitle = '摄像头-'+newResponse.data.cameraName
+        that.oWebControl = new WebControl({
+          szPluginContainer: 'playWnd',                       // 指定容器id
+          iServicePortStart: 15900,                           // 指定起止端口号,建议使用该值
+          iServicePortEnd: 15909,
+          szClassId: '23BF3B0A-2C56-4D97-9C03-0CB103AA8F11',   // 用于IE10使用ActiveX的clsid
+          cbConnectSuccess: function() {                     // 创建WebControl实例成功
+            that.oWebControl.JS_StartService('window', {         // WebControl实例创建成功后需要启动服务
+              dllPath: './VideoPluginConnect.dll'         // 值"./VideoPluginConnect.dll"写死
+            }).then(function() {                           // 启动插件服务成功
+              that.oWebControl.JS_SetWindowControlCallback({   // 设置消息回调
+                cbIntegrationCallBack: cbIntegrationCallBack
+              })
+
+              that.oWebControl.JS_CreateWnd('playWnd', 768, 462).then(function() { //JS_CreateWnd创建视频播放窗口,宽高可设定
+                that.init(newResponse.data.appkey,newResponse.data.loginIp,newResponse.data.secret,newResponse.data.loginPort)  // 创建播放实例成功后初始化
+              })
+            }, function() { // 启动插件服务失败
+            })
+          },
+          cbConnectError: function() { // 创建WebControl实例失败
+            that.oWebControl = null
+            $('#playWnd').html('插件未启动,正在尝试启动,请稍候...')
+            WebControl.JS_WakeUp('VideoWebPlugin://') // 程序未启动时执行error函数,采用wakeup来启动程序
+            initCount++
+            if (initCount < 3) {
+              setTimeout(function() {
+                that.initPlugin(newResponse.data.appkey,newResponse.data.loginIp,newResponse.data.secret,newResponse.data.loginPort)
+              }, 3000)
+            } else {
+              $('#playWnd').html('插件启动失败,请检查插件是否安装!')
+            }
+          },
+          cbConnectClose: function(bNormalClose) {
+            // 异常断开:bNormalClose = false
+            // JS_Disconnect正常断开:bNormalClose = true
+            console.log('cbConnectClose')
+            that.oWebControl = null
+          }
+        })
+        setTimeout(function() {
+          that.playhk(newResponse.data.channelCode)
+        }, 5000)
+      })
+
     },
     realTimeVideoDialog(cameraParams) { // 调用弹窗实时播放接口
       if (!this.isLogin) {
@@ -621,30 +664,8 @@ export default {
 
 
     /** ----------------------------------海康摄像头预览开始------------------------------------- */
-    //播放海康摄像头
-    playhk(){
-      var cameraIndexCode = '33e7f21691a843f6bcb4866efebe088b'     //获取输入的监控点编号值,必填
-      var streamMode = 0                                     //主子码流标识: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, '')
-
-      this.oWebControl.JS_RequestInterface({
-        funcName: 'startPreview',
-        argument: JSON.stringify({
-          cameraIndexCode: cameraIndexCode,                //监控点编号
-          streamMode: streamMode,                         //主子码流标识
-          transMode: transMode,                           //传输协议
-          gpuMode: gpuMode,                               //是否开启GPU硬解
-          wndId: wndId                                     //可指定播放窗口
-        })
-      })
-    },
     // 创建播放实例
-    initPlugin() {
+    initPlugin(appkey,loginIp,secret,loginPort) {
       let that=this
       that.oWebControl = new WebControl({
         szPluginContainer: 'playWnd',                       // 指定容器id
@@ -660,7 +681,7 @@ export default {
             })
 
             that.oWebControl.JS_CreateWnd('playWnd', 768, 462).then(function() { //JS_CreateWnd创建视频播放窗口,宽高可设定
-              that.init()  // 创建播放实例成功后初始化
+              that.init(appkey,loginIp,secret,loginPort)  // 创建播放实例成功后初始化
             })
           }, function() { // 启动插件服务失败
           })
@@ -672,7 +693,7 @@ export default {
           initCount++
           if (initCount < 3) {
             setTimeout(function() {
-              that.initPlugin()
+              that.initPlugin(appkey,loginIp,secret,loginPort)
             }, 3000)
           } else {
             $('#playWnd').html('插件启动失败,请检查插件是否安装!')
@@ -686,16 +707,38 @@ export default {
         }
       })
     },
+    //播放海康摄像头
+    playhk(channelCode) {
+      var cameraIndexCode = channelCode     //获取输入的监控点编号值,必填
+      var streamMode = 0                                     //主子码流标识: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, '')
+
+      this.oWebControl.JS_RequestInterface({
+        funcName: 'startPreview',
+        argument: JSON.stringify({
+          cameraIndexCode: cameraIndexCode,                //监控点编号
+          streamMode: streamMode,                         //主子码流标识
+          transMode: transMode,                           //传输协议
+          gpuMode: gpuMode,                               //是否开启GPU硬解
+          wndId: wndId                                     //可指定播放窗口
+        })
+      })
+    },
     //初始化
     init() {
-      let that=this
-      this.getPubKey(function() {
+      let that = this
+      that.getPubKey(function() {
         ////////////////////////////////// 请自行修改以下变量值	////////////////////////////////////
         var appkey = '22654202'                           //综合安防管理平台提供的appkey,必填
         var secret = that.setEncrypt('d7HlmRIaiXp3MQBmsuUg')   //综合安防管理平台提供的secret,必填
         var ip = '218.27.1.154'                           //综合安防管理平台IP地址,必填
         var playMode = 0                                  //初始播放模式:0-预览,1-回放
-        var port = 54321                                    //综合安防管理平台端口,若启用HTTPS协议,默认443
+        var port = loginPort                                    //综合安防管理平台端口,若启用HTTPS协议,默认443
         var snapDir = 'D:\\SnapDir'                       //抓图存储路径
         var videoDir = 'D:\\VideoDir'                     //紧急录像或录像剪辑存储路径
         var layout = '1x1'                                //playMode指定模式的布局
@@ -730,7 +773,7 @@ export default {
     },
     //获取公钥
     getPubKey(callback) {
-      let that=this
+      let that = this
       that.oWebControl.JS_RequestInterface({
         funcName: 'getRSAPubKey',
         argument: JSON.stringify({
@@ -750,32 +793,11 @@ export default {
       encrypt.setPublicKey(this.pubKey)
       return encrypt.encrypt(value)
     },
-    //播放海康摄像头
-    playhk(){
-      var cameraIndexCode = '33e7f21691a843f6bcb4866efebe088b'     //获取输入的监控点编号值,必填
-      var streamMode = 0                                     //主子码流标识: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, '')
-
-      this.oWebControl.JS_RequestInterface({
-        funcName: 'startPreview',
-        argument: JSON.stringify({
-          cameraIndexCode: cameraIndexCode,                //监控点编号
-          streamMode: streamMode,                         //主子码流标识
-          transMode: transMode,                           //传输协议
-          gpuMode: gpuMode,                               //是否开启GPU硬解
-          wndId: wndId                                     //可指定播放窗口
-        })
-      })
-    }
     /** ----------------------------------海康摄像头预览结束------------------------------------- */
 
   }
 }
+
 // 推送消息
 function cbIntegrationCallBack(oData) {
   showCBInfo(JSON.stringify(oData.responseMsg))