فهرست منبع

启用https测试

kindring 2 سال پیش
والد
کامیت
451cb6a357

+ 18 - 0
keys/localhost_cert.pem

@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIC/DCCAeSgAwIBAgIRANu6zHtr18s6RTaFm7zzJ5AwDQYJKoZIhvcNAQELBQAw
+EzERMA8GA1UEChMITGl2ZVFpbmcwHhcNMjIwNzA4MDY1NDU1WhcNMjMwNzA4MDY1
+NDU1WjATMREwDwYDVQQKEwhMaXZlUWluZzCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBALe7hxQ+A7hmFHvdop+39pHu5UUNtHG3KjJJAbSvB81hDNa46jYv
+/g1SMhqsl6NXvDop4RbOd1tdeftZNp6xrGp/b687J/stZs1biXaqPhQymCN/qssK
+d+FW7dQPrRMkgo6o2ZUR5/P/3cryoNT9cWb7+fVlls8o09U0B1PTvkt9/TACqIU1
+6VJiu8jLFnGfFrHBVgKKTL+bpeYwsqeDY5tYhmlosbK3I2pI88iw4DTbgfMCQR/u
+GQGGLI2Aa1T/LwdrpAsHrWNZvTjavZssAPWy0ET4bRMgq0KUkAO1ll625ez6pzM4
+UCYSCADnOMEeNnT4ZGMbX9mb+jbWiosE8X0CAwEAAaNLMEkwDgYDVR0PAQH/BAQD
+AgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0w
+C4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQBTSOZNLdBGrVcSiouDgxke
+ic5bkJUP4RHWXptsC3ZVejbv86u4Nv0pAAhJ3/zQBz7rzUSnr7K/x/EsK6OfLi5u
+kiyF7KE8YYW2UdqVY6LIQJz2UzQ5oqqh+iXSyYnBH7mazkOVUhL6vq0bYWwps6hs
+mTu93uGgPYHhVu3yD9D7KbHoRO+MTKyqLM+GkGKnV0vYuGnC8B2GEIFx3cdgGFIt
+olHCH6d3vhy5O84UWEw19JO62ET0AhrOgObxJjyMt8Qcr7WzIke5LwyHKL7xBI40
+KP1e4nk9hHDozj1rqRW/vKtOtuJrZnjMyvxe7Q02n+KG06sTiDYdTbNugQrpfF9R
+-----END CERTIFICATE-----

+ 28 - 0
keys/localhost_key.pem

@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC3u4cUPgO4ZhR7
+3aKft/aR7uVFDbRxtyoySQG0rwfNYQzWuOo2L/4NUjIarJejV7w6KeEWzndbXXn7
+WTaesaxqf2+vOyf7LWbNW4l2qj4UMpgjf6rLCnfhVu3UD60TJIKOqNmVEefz/93K
+8qDU/XFm+/n1ZZbPKNPVNAdT075Lff0wAqiFNelSYrvIyxZxnxaxwVYCiky/m6Xm
+MLKng2ObWIZpaLGytyNqSPPIsOA024HzAkEf7hkBhiyNgGtU/y8Ha6QLB61jWb04
+2r2bLAD1stBE+G0TIKtClJADtZZetuXs+qczOFAmEggA5zjBHjZ0+GRjG1/Zm/o2
+1oqLBPF9AgMBAAECggEANLM3ZZj8HDI7gePqt4Fe2jD51jq+HTf6hH3oXVkvFbvW
+oOhdVbmiV1PSR1BmFlYeCVjl1VLXbX98c5n9TruLxuhSsqJ3L1awfArbfQwLzmNM
+vDHsXVzdUedLRF5SuIDqad0Iu/ds3tHvXj0F4NHpay6vXbIL9dOyHx9TUroThTdb
+l/IUsXFrt1JoWoeRR9ABqLIqTPgcPrJgas5y3n9d9C1WPfUvNIgOZnjRgZQ8rufC
+2x31MQx8VB1L0XVnAMrcr+vQcLR03+E5LTQR14Zt7Minu+NdCn7S6982dzwrKM1D
+nss6unuMG8DmCjqJY2oVeMAJwcbFRH/Ee2D228U4AQKBgQDQAPPynmTh0l9kH2n6
+r3+0JNF1rt+InB3xP6N9+smUGDxsYUThbBkbIGndCecmRbQ6PwcLMaQkiDa6RddS
+3T32+/w71stwEpM0idVDYGf66rJr3PJbtxEFes6L2g5Zfif2nOcDpdIKnnCnc653
+Y23FY1F0oQUR6g9NH8QJLxnvAQKBgQDiINgeeIFfaSjaJBwsoFvGxd1XchzDclxa
+PC32bOgNgnc7FG57PvlKaaPuNhbblV/avksCvShoVOZQD19U52ab1ITIesRLM6hs
+Nxt/du2tJv5Cu+z/RrWOQ/Hj73B1fVQR7h8A0MepsIbL9XMaIb924uSYFcB3dGyo
+zF5wTHk+fQKBgA98Mq0aS6pgLgfXKt2l2R0BLLLVLQEPlk8SjMphNEaZM05iQ22A
+zbGuTRNOnG3F/K/lZ1HXBUBO/7wIXQpnPCi6A8I0sHqMd3cO19inQbZ1aIkNLuHT
+FCpTRTM2LaFN+g2rCqvD2Yo+12Yv/4oV1eM/DJ5hKm51/WOhfMeuQQEBAoGBAKuo
+LyeCZwNcuuxNuS2PVdwg3BPDxl3/9Gdzg5irt8R5o7Uvn2bjuS5p3023tcZfMHLH
+Pf4IRiJdQLDJ2p6DQvtMargdqeFEh7gOZUtvpqFpFl7mddSbgrtKjNdxLjeiOi2a
+S+K8mrUQEmPGIehWchf3yXxCFucXdFz3N0Gca/WpAoGAarvoLU3WUXTH1UC/0HrC
+hIKZQTfYNCclL+L15wsgEPEJOsyQ+JQs742lRD11Tu0Uzn4+cZjtX7Pfoxwkwq01
+G1o3/zvNQ0cXNLBETk+JcUkKIfiTRHLGsEqKYoiHFhoxGe3LzxFKqPtwUEaezXoX
+RIpukrApa0gnKztvhAJ2xGE=
+-----END PRIVATE KEY-----

+ 7 - 7
src/main/resources/application.yml

@@ -75,18 +75,18 @@ server:
     # [可选] HTTPS配置, 默认不开启
     ssl:
         # [可选] 是否开启HTTPS访问
-        enabled: false
+        enabled: true
         # [可选] 证书文件路径,放置在resource/目录下即可,修改xxx为文件名
-        key-store: classpath:xxx.jks
+        # key-store: classpath:xxx.jks
         # [可选] 证书密码
-        key-store-password: password
+        # key-store-password: password
         # [可选] 证书类型, 默认为jks,根据实际修改
-        key-store-type: JKS
+        # key-store-type: JKS
         # 配置证书可以使用如下两项,如上面二选一即可
         # PEM 编码证书
-        certificate: xx.pem
+        certificate: keys/localhost_cert.pem
         #   私钥文件
-        certificate-private-key: xx.key
+        certificate-private-key: keys/localhost_key.pem
 
 # 作为28181服务器的配置
 sip:
@@ -123,7 +123,7 @@ media:
     # [必须修改] zlm服务器唯一id,用于触发hook时区别是哪台服务器,general.mediaServerId
     id: your_server_id
     # [必须修改] zlm服务器的内网IP
-    ip: 192.168.1.203
+    ip: 192.168.1.99
     # [可选] 返回流地址时的ip,置空使用 media.ip
     stream-ip: szgpay.ticp.net
     #stream-ip: 192.168.1.203

+ 1 - 0
web_src/build/webpack.dev.conf.js

@@ -22,6 +22,7 @@ const devWebpackConfig = merge(baseWebpackConfig, {
 
   // these devServer options should be customized in /config/index.js
   devServer: {
+    https: true,
     clientLogLevel: 'warning',
     historyApiFallback: {
       rewrites: [

+ 10 - 4
web_src/config/index.js

@@ -12,22 +12,26 @@ module.exports = {
     assetsPublicPath: '/',
     proxyTable: {
       '/debug': {
-        target: 'http://localhost:29001',
+        target: 'https://localhost:29001',
         changeOrigin: true,
+        secure: false,
         pathRewrite: {
           '^/debug': '/'
         }
       },
       '/aiLib':{
-        target: 'http://localhost:29001',
+        target: 'https://localhost:29001',
+        secure: false,
         changeOrigin: true,
       },
       '/mFile':{
         target: 'http://localhost:29001',
+        secure: false,
         changeOrigin: true,
       },
       '/static/snap': {
-        target: 'http://localhost:29001',
+        target: 'https://localhost:29001',
+        secure: false,
         changeOrigin: true,
         // pathRewrite: {
         //   '^/static/snap': '/static/snap'
@@ -35,7 +39,9 @@ module.exports = {
       },
 
     },
-
+    devServer: {
+      https: true,
+    },
     // Various Dev Server settings
     host:"127.0.0.1",
     useLocalIp: false, // can be overwritten by process.env.HOST

+ 76 - 0
web_src/src/components/common/microphone.vue

@@ -0,0 +1,76 @@
+<template>
+  <div class="microPhone">
+    <div class="mic" @mousedown="mouseDownHandle" @mouseup="mouseUpHandle"></div>
+  </div>
+</template>
+
+<script>
+import handle from "@/until/handle";
+
+export default {
+  name: "microphone.vue",
+  props:{
+    size: "default"
+  },
+  data(){
+    return {
+      // 是否已经请求到 audio
+      isQueryAllowAudio:false,
+      // 音频流
+      audioStream: null,
+      // record
+      mediaRecord: null,
+    }
+  },
+  methods:{
+    // 录音按钮按下
+    mouseDownHandle(){
+
+    },
+    // 录音按钮抬起
+    mouseUpHandle(){
+
+    },
+    queryMediaStream(){
+      return new Promise((resolve, reject) => {
+        navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia
+        navigator.getUserMedia({audio:true , video:false } ,
+          (stream) => {
+          <!--这个stream 就是采集pcm数据的音源-->
+            resolve(stream);
+        }, (error) => {
+          reject(error);
+        });
+      })
+    },
+    async startGetAudio(){
+      let err,stream;
+      if(this.mediaStream){
+        [err,stream] = await handle(this.queryMediaStream());
+        if(err){
+          this.$message.error('获取音频设备失败!');
+          return;
+        }
+        this.isQueryAllowAudio = true;
+      }
+      if(!this.isQueryAllowAudio){
+        return this.$message.error('无法获取音频!');
+      }
+      // 开始录音并推送音频至 wvp 服务器 || 或者推送至 zlm
+
+    },
+    // 通知设备开启推流
+    sendBroaderCast(){
+
+    }
+  }
+}
+</script>
+
+<style scoped>
+.microPhone{
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+</style>

+ 8 - 0
web_src/src/components/common/ptzControl.vue

@@ -1,5 +1,6 @@
 <template>
   <div style="display: flex; justify-content: left;">
+
     <div class="control-wrapper">
       <div class="control-btn control-top" @mousedown="ptzControlHandleDown('up')" @mouseup="ptzControlHandleUp('up')">
         <i class="el-icon-caret-top"></i>
@@ -336,6 +337,13 @@ export default {
 </script>
 
 <style scoped>
+.control-mic{
+  width: 4rem;
+  height: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
 .control-wrapper {
   position: relative;
   width: 6.25rem;

+ 3 - 3
web_src/src/components/control.vue

@@ -62,9 +62,9 @@
                   </template>
                   <div v-if="key === 'interfaceAuthenticationExcludes'">
                     <el-dropdown>
-                                      <span class="el-dropdown-link">
-                                        查看<i class="el-icon-arrow-down el-icon--right"></i>
-                                      </span>
+                      <span class="el-dropdown-link">
+                        查看<i class="el-icon-arrow-down el-icon--right"></i>
+                      </span>
                       <el-dropdown-menu slot="dropdown">
                         <el-dropdown-item
                           v-for="(value, key, index) in wvpServerConfig.base.interfaceAuthenticationExcludes"