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