From 9f16b5c553b479ea12fe368a7ecc748872ea8b98 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期四, 12 六月 2025 11:11:27 +0800 Subject: [PATCH] 修改配置文件 --- web_src/src/components/dialog/devicePlayer.vue | 226 ++++++++++++++++++++++++++++++-------------------------- 1 files changed, 120 insertions(+), 106 deletions(-) diff --git a/web_src/src/components/dialog/devicePlayer.vue b/web_src/src/components/dialog/devicePlayer.vue old mode 100644 new mode 100755 index 1987348..e0a1d01 --- a/web_src/src/components/dialog/devicePlayer.vue +++ b/web_src/src/components/dialog/devicePlayer.vue @@ -1,13 +1,13 @@ <template> <div id="devicePlayer" v-loading="isLoging"> - <el-dialog title="瑙嗛鎾斁" top="0" :close-on-click-modal="false" :visible.sync="showVideoDialog" @close="close()"> + <el-dialog title="瑙嗛鎾斁" top="0" :close-on-click-modal="false" :visible.sync="showVideoDialog" @close="close()" v-if="showVideoDialog"> <div style="width: 100%; height: 100%"> <el-tabs type="card" :stretch="true" v-model="activePlayer" @tab-click="changePlayer" v-if="Object.keys(this.player).length > 1"> <el-tab-pane label="Jessibuca" name="jessibuca"> <jessibucaPlayer v-if="activePlayer === 'jessibuca'" ref="jessibuca" :visible.sync="showVideoDialog" - :videoUrl="videoUrl" :error="videoError" :message="videoError" height="100px" + :videoUrl="videoUrl" :error="videoError" :message="videoError" :hasAudio="hasAudio" fluent autoplay live></jessibucaPlayer> </el-tab-pane> <el-tab-pane label="WebRTC" name="webRTC"> @@ -16,11 +16,10 @@ :hasAudio="hasAudio" fluent autoplay live></rtc-player> </el-tab-pane> <el-tab-pane label="h265web">h265web鏁鏈熷緟</el-tab-pane> - <el-tab-pane label="wsPlayer">wsPlayer 鏁鏈熷緟</el-tab-pane> </el-tabs> <jessibucaPlayer v-if="Object.keys(this.player).length == 1 && this.player.jessibuca" ref="jessibuca" :visible.sync="showVideoDialog" :videoUrl="videoUrl" :error="videoError" :message="videoError" - height="100px" :hasAudio="hasAudio" fluent autoplay live></jessibucaPlayer> + :hasAudio="hasAudio" fluent autoplay live></jessibucaPlayer> <rtc-player v-if="Object.keys(this.player).length == 1 && this.player.webRTC" ref="jessibuca" :visible.sync="showVideoDialog" :videoUrl="videoUrl" :error="videoError" :message="videoError" height="100px" :hasAudio="hasAudio" fluent autoplay live></rtc-player> @@ -181,7 +180,7 @@ style="font-size: 1.875rem;"></i></div> <div style="position: absolute; left: 7.25rem; top: 3.25rem; font-size: 1.875rem;" @mousedown="ptzCamera('zoomout')" @mouseup="ptzCamera('stop')"><i - class="el-icon-zoom-out control-zoom-btn"></i></div> + class="el-icon-zoom-out control-zoom-btn"></i></div> <div class="contro-speed" style="position: absolute; left: 4px; top: 7rem; width: 9rem;"> <el-slider v-model="controSpeed" :max="255"></el-slider> </div> @@ -299,6 +298,11 @@ </el-tab-pane> <el-tab-pane label="璇煶瀵硅" name="broadcast"> + <div style="padding: 0 10px"> + <el-switch v-model="broadcastMode" :disabled="broadcastStatus !== -1" active-color="#409EFF" + active-text="鍠婅瘽(Broadcast)" + inactive-text="瀵硅(Talk)"></el-switch> + </div> <div class="trank" style="text-align: center;"> <el-button @click="broadcastStatusClick()" :type="getBroadcastStatus()" :disabled="broadcastStatus === -2" circle icon="el-icon-microphone" style="font-size: 32px; padding: 24px;margin-top: 24px;"/> @@ -390,6 +394,7 @@ recordStartTime: 0, showTimeText: "00:00:00", streamInfo: null, + broadcastMode: true, broadcastRtc: null, broadcastStatus: -1, // -2 姝e湪閲婃斁璧勬簮 -1 榛樿鐘舵�� 0 绛夊緟鎺ラ�� 1 鎺ラ�氭垚鍔� }; @@ -468,10 +473,14 @@ }, getUrlByStreamInfo() { console.log(this.streamInfo) + let streamInfo = this.streamInfo + if (this.streamInfo.transcodeStream) { + streamInfo = this.streamInfo.transcodeStream; + } if (location.protocol === "https:") { - this.videoUrl = this.streamInfo[this.player[this.activePlayer][1]] + this.videoUrl = streamInfo[this.player[this.activePlayer][1]] } else { - this.videoUrl = this.streamInfo[this.player[this.activePlayer][0]] + this.videoUrl = streamInfo[this.player[this.activePlayer][0]] } return this.videoUrl; @@ -534,25 +543,31 @@ // if (callback )callback(); }, - playFromStreamInfo: function (realHasAudio, streamInfo) { - this.showVideoDialog = true; - this.hasaudio = realHasAudio && this.hasaudio; - this.$refs[this.activePlayer].play(this.getUrlByStreamInfo(streamInfo)) - }, - close: function () { - console.log('鍏抽棴瑙嗛'); - if (!!this.$refs[this.activePlayer]) { - this.$refs[this.activePlayer].pause(); - } - this.videoUrl = ''; - this.coverPlaying = false; - this.showVideoDialog = false; - if (this.convertKey != '') { - this.convertStop(); - } - this.convertKey = '' - this.stopBroadcast() - }, + playFromStreamInfo: function (realHasAudio, streamInfo) { + this.showVideoDialog = true; + this.hasaudio = realHasAudio && this.hasaudio; + if (this.$refs[this.activePlayer]) { + this.$refs[this.activePlayer].play(this.getUrlByStreamInfo(streamInfo)) + }else { + this.$nextTick(() => { + this.$refs[this.activePlayer].play(this.getUrlByStreamInfo(streamInfo)) + }); + } + }, + close: function () { + console.log('鍏抽棴瑙嗛'); + if (!!this.$refs[this.activePlayer]){ + this.$refs[this.activePlayer].pause(); + } + this.videoUrl = ''; + this.coverPlaying = false; + this.showVideoDialog = false; + if (this.convertKey != '') { + this.convertStop(); + } + this.convertKey = '' + this.stopBroadcast() + }, copySharedInfo: function (data) { console.log('澶嶅埗鍐呭锛�' + data); @@ -560,20 +575,20 @@ this.tracks = [] let _this = this; this.$copyText(data).then( - function (e) { - _this.$message({ - showClose: true, - message: '澶嶅埗鎴愬姛', - type: 'success' - }); - }, - function (e) { - _this.$message({ - showClose: true, - message: '澶嶅埗澶辫触锛岃鎵嬪姩澶嶅埗', - type: 'error' - }); - } + function (e) { + _this.$message({ + showClose: true, + message: '澶嶅埗鎴愬姛', + type: 'success' + }); + }, + function (e) { + _this.$message({ + showClose: true, + message: '澶嶅埗澶辫触锛岃鎵嬪姩澶嶅埗', + type: 'error' + }); + } ); }, ptzCamera: function (command) { @@ -640,64 +655,63 @@ return "danger" } - }, - broadcastStatusClick() { - if (this.broadcastStatus == -1) { - // 榛樿鐘舵�侊紝 寮�濮� - this.broadcastStatus = 0 - // 鍙戣捣璇煶鍠婅瘽 - this.$axios({ - method: 'get', - url: '/api/play/broadcast/' + this.deviceId + '/' + this.channelId + "?timeout=30" - }).then( (res)=> { - if (res.data.code == 0) { - let streamInfo = res.data.data.streamInfo; - if (document.location.protocol.includes("https")) { - this.startBroadcast(streamInfo.rtcs.url) - }else { - this.startBroadcast(streamInfo.rtc.url) - } - - }else { - this.$message({ - showClose: true, - message: res.data.msg, - type: "error", - }); - } - }); - }else if (this.broadcastStatus === 1) { - this.broadcastStatus = -1; - this.broadcastRtc.close() + }, + broadcastStatusClick() { + if (this.broadcastStatus == -1) { + // 榛樿鐘舵�侊紝 寮�濮� + this.broadcastStatus = 0 + // 鍙戣捣璇煶瀵硅 + this.$axios({ + method: 'get', + url: '/api/play/broadcast/' + this.deviceId + '/' + this.channelId + "?timeout=30&broadcastMode=" + this.broadcastMode + }).then((res) => { + if (res.data.code === 0) { + let streamInfo = res.data.data.streamInfo; + if (document.location.protocol.includes("https")) { + this.startBroadcast(streamInfo.rtcs) + } else { + this.startBroadcast(streamInfo.rtc) } - }, - startBroadcast(url){ - // 鑾峰彇鎺ㄦ祦閴存潈Key - this.$axios({ - method: 'post', - url: '/api/user/userInfo', - }).then( (res)=> { - if (res.data.code !== 0) { - this.$message({ - showClose: true, - message: "鑾峰彇鎺ㄦ祦閴存潈Key澶辫触", - type: "error", - }); - this.broadcastStatus = -1; - }else { - let pushKey = res.data.data.pushKey; - // 鑾峰彇鎺ㄦ祦閴存潈KEY - url += "&sign=" + crypto.createHash('md5').update(pushKey, "utf8").digest('hex') - console.log("寮�濮嬭闊冲枈璇濓細 " + url) - this.broadcastRtc = new ZLMRTCClient.Endpoint({ - debug: true, // 鏄惁鎵撳嵃鏃ュ織 - zlmsdpUrl: url, //娴佸湴鍧� - simulecast: false, - useCamera: false, - audioEnable: true, - videoEnable: false, - recvOnly: false, - }) + } else { + this.$message({ + showClose: true, + message: res.data.msg, + type: "error", + }); + } + }); + } else if (this.broadcastStatus === 1) { + this.broadcastStatus = -1; + this.broadcastRtc.close() + } + }, + startBroadcast(url) { + // 鑾峰彇鎺ㄦ祦閴存潈Key + this.$axios({ + method: 'post', + url: '/api/user/userInfo', + }).then((res) => { + if (res.data.code !== 0) { + this.$message({ + showClose: true, + message: "鑾峰彇鎺ㄦ祦閴存潈Key澶辫触", + type: "error", + }); + this.broadcastStatus = -1; + } else { + let pushKey = res.data.data.pushKey; + // 鑾峰彇鎺ㄦ祦閴存潈KEY + url += "&sign=" + crypto.createHash('md5').update(pushKey, "utf8").digest('hex') + console.log("寮�濮嬭闊冲枈璇濓細 " + url) + this.broadcastRtc = new ZLMRTCClient.Endpoint({ + debug: true, // 鏄惁鎵撳嵃鏃ュ織 + zlmsdpUrl: url, //娴佸湴鍧� + simulecast: false, + useCamera: false, + audioEnable: true, + videoEnable: false, + recvOnly: false, + }) // webrtcPlayer.on(ZLMRTCClient.Events.WEBRTC_ON_REMOTE_STREAMS,(e)=>{//鑾峰彇鍒颁簡杩滅娴侊紝鍙互鎾斁 // console.error('鎾斁鎴愬姛',e.streams) @@ -710,15 +724,15 @@ // // this.eventcallbacK("LOCAL STREAM", "鑾峰彇鍒颁簡鏈湴娴�") // }); - this.broadcastRtc.on(ZLMRTCClient.Events.WEBRTC_NOT_SUPPORT,(e)=>{// 鑾峰彇鍒颁簡鏈湴娴� - console.error('涓嶆敮鎸亀ebrtc',e) - this.$message({ - showClose: true, - message: '涓嶆敮鎸亀ebrtc, 鏃犳硶杩涜璇煶鍠婅瘽', - type: 'error' - }); - this.broadcastStatus = -1; - }); + this.broadcastRtc.on(ZLMRTCClient.Events.WEBRTC_NOT_SUPPORT, (e) => {// 鑾峰彇鍒颁簡鏈湴娴� + console.error('涓嶆敮鎸亀ebrtc', e) + this.$message({ + showClose: true, + message: '涓嶆敮鎸亀ebrtc, 鏃犳硶杩涜璇煶鍠婅瘽', + type: 'error' + }); + this.broadcastStatus = -1; + }); this.broadcastRtc.on(ZLMRTCClient.Events.WEBRTC_ICE_CANDIDATE_ERROR, (e) => {// ICE 鍗忓晢鍑洪敊 console.error('ICE 鍗忓晢鍑洪敊') -- Gitblit v1.8.0