From a6fb1cdb74ca11c9dba798e64bf3d61bbfbdf05b Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期一, 11 九月 2023 16:17:29 +0800 Subject: [PATCH] 修复Web页面播放国标录像无声音的问题 --- web_src/src/components/live.vue | 95 +++++++++++++++++++---------------------------- 1 files changed, 39 insertions(+), 56 deletions(-) diff --git a/web_src/src/components/live.vue b/web_src/src/components/live.vue old mode 100644 new mode 100755 index d23f4e6..4a7af49 --- a/web_src/src/components/live.vue +++ b/web_src/src/components/live.vue @@ -15,10 +15,10 @@ <div style="width: 99%;height: 85vh;display: flex;flex-wrap: wrap;background-color: #000;"> <div v-for="i in spilt" :key="i" class="play-box" :style="liveStyle" :class="{redborder:playerIdx == (i-1)}" - @click="playerIdx = (i-1)" - > + @click="playerIdx = (i-1)"> <div v-if="!videoUrl[i-1]" style="color: #ffffff;font-size: 30px;font-weight: bold;">{{ i }}</div> - <player v-else :videoUrl="videoUrl[i-1]" fluent autoplay @screenshot="shot" @destroy="destroy"/> + <player ref="player" v-else :videoUrl="videoUrl[i-1]" fluent autoplay @screenshot="shot" + @destroy="destroy"/> </div> </div> </el-main> @@ -39,30 +39,15 @@ }, data() { return { - showVideoDialog: true, - hasAudio: false, videoUrl: [''], spilt: 1,//鍒嗗睆 playerIdx: 0,//婵�娲绘挱鏀惧櫒 - deviceList: [], //璁惧鍒楄〃 - currentDevice: {}, //褰撳墠鎿嶄綔璁惧瀵硅薄 - - videoComponentList: [], updateLooper: 0, //鏁版嵁鍒锋柊杞鏍囧織 - currentDeviceChannelsLenth: 0, - winHeight: window.innerHeight - 200, - currentPage: 1, count: 15, total: 0, - getDeviceListLoading: false, //channel - searchSrt: "", - channelType: "", - online: "", - channelTotal: 0, - deviceChannelList: [], loading: false }; }, @@ -75,13 +60,22 @@ computed: { liveStyle() { - if (this.spilt == 1) { - return {width: '100%', height: '100%'} - } else if (this.spilt == 4) { - return {width: '49%', height: '49%'} - } else if (this.spilt == 9) { - return {width: '32%', height: '32%'} + let style = {width: '100%', height: '100%'} + switch (this.spilt) { + case 4: + style = {width: '49%', height: '49%'} + break + case 9: + style = {width: '32%', height: '32%'} + break } + this.$nextTick(() => { + for (let i = 0; i < this.spilt; i++) { + const player = this.$refs.player + player && player[i] && player[i].updatePlayerDomSize() + } + }) + return style } }, watch: { @@ -113,20 +107,24 @@ console.log(idx); this.clear(idx.substring(idx.length - 1)) }, - clickEvent: function (data) { - if (data.channelId && data.subCount == 0) { - this.sendDevicePush(data) + clickEvent: function (device, data, isCatalog) { + if (data.channelId && !isCatalog) { + if (device.online === 0) { + this.$message.error('璁惧绂荤嚎!涓嶅厑璁哥偣鎾�'); + }else { + this.sendDevicePush(data) + } } }, - contextMenuEvent: function (data) { + contextMenuEvent: function (device, event, data, isCatalog) { }, //閫氱煡璁惧涓婁紶濯掍綋娴� sendDevicePush: function (itemData) { - if (itemData.status === 0) { - this.$message.error('璁惧绂荤嚎!'); - return - } + // if (itemData.status === 0) { + // this.$message.error('璁惧绂荤嚎!'); + // return + // } this.save(itemData) let deviceId = itemData.deviceId; // this.isLoging = true; @@ -139,12 +137,15 @@ method: 'get', url: '/api/play/start/' + deviceId + '/' + channelId }).then(function (res) { - // that.isLoging = false; - console.log('=====----=====') - console.log(res) - if (res.data.code == 0 && res.data.data) { - itemData.playUrl = res.data.data.httpsFlv - that.setPlayUrl(res.data.data.ws_flv, idxTmp) + if (res.data.code === 0 && res.data.data) { + let videoUrl; + if (location.protocol === "https:") { + videoUrl = res.data.data.wss_flv; + } else { + videoUrl = res.data.data.ws_flv; + } + itemData.playUrl = videoUrl; + that.setPlayUrl(videoUrl, idxTmp); } else { that.$message.error(res.data.msg); } @@ -166,13 +167,6 @@ if (deviceId && channelId) { this.sendDevicePush({deviceId, channelId}) } - }, - convertImageToCanvas(image) { - var canvas = document.createElement("canvas"); - canvas.width = image.width; - canvas.height = image.height; - canvas.getContext("2d").drawImage(image, 0, 0); - return canvas; }, shot(e) { // console.log(e) @@ -211,17 +205,6 @@ console.log(data); window.localStorage.setItem('playData', JSON.stringify(data)) }, - loadAndPlay() { - let dataStr = window.localStorage.getItem('playData') || '[]' - let data = JSON.parse(dataStr); - - data.forEach((item, i) => { - if (item) { - this.playerIdx = i - this.sendDevicePush(item) - } - }) - } } }; </script> -- Gitblit v1.8.0