From dda68ac0441a9197fe5accc70e7a8e9e20715f88 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 22 十一月 2021 17:30:15 +0800
Subject: [PATCH] 优化录像下载,避免wvp代理使用双份流量

---
 web_src/src/components/dialog/devicePlayer.vue |   12 +++++++-----
 web_src/src/components/CloudRecord.vue         |   13 ++++++++++---
 web_src/src/components/CloudRecordDetail.vue   |   11 ++++++-----
 3 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/web_src/src/components/CloudRecord.vue b/web_src/src/components/CloudRecord.vue
index f5d052a..78f8a46 100644
--- a/web_src/src/components/CloudRecord.vue
+++ b/web_src/src/components/CloudRecord.vue
@@ -6,7 +6,9 @@
 			</el-header>
 			<el-main>
         <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;">
-          <span style="font-size: 1rem; font-weight: bold;">浜戠褰曞儚</span>
+          <span v-if="!recordDetail" >浜戠褰曞儚</span>
+          <el-page-header v-if="recordDetail"  @back="backToList" content="浜戠褰曞儚">
+          </el-page-header>
           <div style="position: absolute; right: 5rem; top: 0.3rem;">
             鑺傜偣閫夋嫨:
             <el-select size="mini" @change="chooseMediaChange" style="width: 16rem; margin-right: 1rem;" v-model="mediaServerId" placeholder="璇烽�夋嫨" :disabled="recordDetail">
@@ -20,7 +22,6 @@
           </div>
           <div style="position: absolute; right: 1rem; top: 0.3rem;">
             <el-button v-if="!recordDetail" icon="el-icon-refresh-right" circle size="mini" :loading="loading" @click="getRecordList()"></el-button>
-            <el-button v-if="recordDetail" icon="el-icon-arrow-left" circle size="mini" @click="backToList()"></el-button>
           </div>
         </div>
         <div v-if="!recordDetail">
@@ -53,7 +54,7 @@
             :total="total">
           </el-pagination>
         </div>
-        <cloud-record-detail ref="cloudRecordDetail" v-if="recordDetail" :recordFile="chooseRecord" :mediaServerId="mediaServerId" ></cloud-record-detail>
+        <cloud-record-detail ref="cloudRecordDetail" v-if="recordDetail" :recordFile="chooseRecord" :mediaServerId="mediaServerId" :mediaServerPath="mediaServerPath" ></cloud-record-detail>
 			</el-main>
 		</el-container>
 	</div>
@@ -72,6 +73,7 @@
 			return {
         mediaServerList: [], // 婊呬綋鑺傜偣鍒楄〃
         mediaServerId: null, // 濯掍綋鏈嶅姟
+        mediaServerPath: null, // 濯掍綋鏈嶅姟鍦板潃
         recordList: [], // 璁惧鍒楄〃
         chooseRecord: null, // 濯掍綋鏈嶅姟
 
@@ -115,6 +117,11 @@
           that.mediaServerList = data.data;
           if (that.mediaServerList.length > 0) {
             that.mediaServerId = that.mediaServerList[0].id
+            let port = that.mediaServerList[0].httpPort;
+            if (location.protocol === "https:" && that.mediaServerList[0].httpSSlPort) {
+              port = that.mediaServerList[0].httpSSlPort
+            }
+            that.mediaServerPath = location.protocol + "//" + that.mediaServerList[0].streamIp + ":" + port
             that.getRecordList();
           }
         })
diff --git a/web_src/src/components/CloudRecordDetail.vue b/web_src/src/components/CloudRecordDetail.vue
index 5d6ca90..fe534ec 100644
--- a/web_src/src/components/CloudRecordDetail.vue
+++ b/web_src/src/components/CloudRecordDetail.vue
@@ -15,7 +15,8 @@
                   <i class="el-icon-video-camera"  ></i>
                   {{ item.substring(0,17)}}
                 </el-tag>
-                <a class="el-icon-download" style="color: #409EFF;font-weight: 600;margin-left: 10px;" :href="`${basePath}/${mediaServerId}/record/${recordFile.app}/${recordFile.stream}/${chooseDate}/${item}`" download />
+<!--                <a class="el-icon-download" style="color: #409EFF;font-weight: 600;margin-left: 10px;" :href="`${basePath}/${mediaServerId}/record/${recordFile.app}/${recordFile.stream}/${chooseDate}/${item}`" download />-->
+                <a class="el-icon-download" style="color: #409EFF;font-weight: 600;margin-left: 10px;" :href="`${basePath}/download.html?url=${recordFile.app}/${recordFile.stream}/${chooseDate}/${item}`" target="_blank" />
               </li>
             </ul>
           </div>
@@ -75,7 +76,7 @@
               <li class="task-list-item" v-for="item in taskListEnded">
                 <div class="task-list-item-box" style="height: 2rem;line-height: 2rem;">
                   <span>{{ item.startTime.substr(10) }}-{{item.endTime.substr(10)}}</span>
-                  <a class="el-icon-download download-btn" :href="basePath + '/' + item.recordFile" download >
+                  <a class="el-icon-download download-btn" :href="basePath  + '/download.html?url=../' + item.recordFile" target="_blank">
                   </a>
                 </div>
               </li>
@@ -111,10 +112,10 @@
 		components: {
 			uiHeader, player
 		},
-    props: ['recordFile', 'mediaServerId', 'dateFiles'],
+    props: ['recordFile', 'mediaServerId', 'dateFiles', 'mediaServerPath'],
 		data() {
 			return {
-        basePath: process.env.NODE_ENV === 'development'?`${location.origin}/debug/zlm/${this.mediaServerId}`:`${location.origin}/zlm/${this.mediaServerId}`,
+        basePath: `${this.mediaServerPath}/record`,
 			  dateFilesObj: [],
 			  detailFiles: [],
         chooseDate: null,
@@ -264,7 +265,7 @@
           this.videoUrl = "";
         }else {
 			    // TODO 鎺у埗鍒楄〃婊氬姩鏉�
-          this.videoUrl = `${this.basePath}/${this.mediaServerId}/record/${this.recordFile.app}/${this.recordFile.stream}/${this.chooseDate}/${this.choosedFile}`
+          this.videoUrl = `${this.basePath}/${this.recordFile.app}/${this.recordFile.stream}/${this.chooseDate}/${this.choosedFile}`
           console.log(this.videoUrl)
         }
 
diff --git a/web_src/src/components/dialog/devicePlayer.vue b/web_src/src/components/dialog/devicePlayer.vue
index 60cd600..42dcfc4 100644
--- a/web_src/src/components/dialog/devicePlayer.vue
+++ b/web_src/src/components/dialog/devicePlayer.vue
@@ -287,11 +287,13 @@
             // return `http://${baseZlmApi}/${streamInfo.app}/${streamInfo.streamId}.flv`;
             if (location.protocol === "https:") {
               if (streamInfo.wss_flv === null) {
-                this.$message({
-                  showClose: true,
-                  message: '濯掍綋鏈嶅姟鍣ㄦ湭閰嶇疆ssl绔彛',
-                  type: 'error'
-                });
+                console.error("濯掍綋鏈嶅姟鍣ㄦ湭閰嶇疆ssl绔彛, 浣跨敤http绔彛")
+                // this.$message({
+                //   showClose: true,
+                //   message: '濯掍綋鏈嶅姟鍣ㄦ湭閰嶇疆ssl绔彛, ',
+                //   type: 'error'
+                // });
+                return streamInfo.ws_flv
               }else {
                 return streamInfo.wss_flv;
               }

--
Gitblit v1.8.0