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