From bfafe45b26e278d35a9f50e20178164be9c85e22 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 18 三月 2024 15:39:32 +0800
Subject: [PATCH] Merge pull request #1371 from ancienter/develop
---
web_src/src/components/dialog/devicePlayer.vue | 216 ++++++++++++++++++++++++++++-------------------------
1 files changed, 113 insertions(+), 103 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..f6bd2b2
--- 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" style="height: 515px"
:hasAudio="hasAudio" fluent autoplay live></jessibucaPlayer>
</el-tab-pane>
<el-tab-pane label="WebRTC" name="webRTC">
@@ -16,7 +16,6 @@
: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"
@@ -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 鎺ラ�氭垚鍔�
};
@@ -534,25 +539,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 +571,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 +651,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 +720,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