From 07956b48df476002e3cfd9b01be9e9fb92590ca9 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 01 七月 2022 18:26:35 +0800
Subject: [PATCH] 添加界面优化接口
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java | 6 +
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 3 -
src/main/resources/8042900_www.wvp-pro.cn.jks | 0
web_src/src/components/dialog/devicePlayer.vue | 116 ++++++++++++++++++++++++++++++++++++++
src/main/java/com/genersoft/iot/vmp/vmanager/bean/AudioBroadcastResult.java | 13 ++--
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java | 8 ++
src/main/java/com/genersoft/iot/vmp/service/IMediaService.java | 1
7 files changed, 135 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
index 6c04c20..04982c3 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -28,6 +28,7 @@
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItemLite;
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
import com.genersoft.iot.vmp.service.IMediaServerService;
+import com.genersoft.iot.vmp.service.IMediaService;
import com.genersoft.iot.vmp.service.IPlayService;
import com.genersoft.iot.vmp.service.IStreamPushService;
import com.genersoft.iot.vmp.service.bean.MessageForPushChannel;
@@ -102,6 +103,9 @@
@Autowired
private IMediaServerService mediaServerService;
+
+ @Autowired
+ private IMediaService mediaService;
@Autowired
private ZLMRESTfulUtils zlmresTfulUtils;
@@ -1016,7 +1020,7 @@
AudioBroadcastResult audioBroadcastResult = new AudioBroadcastResult();
audioBroadcastResult.setApp(app);
audioBroadcastResult.setStream(stream);
- audioBroadcastResult.setMediaServerItem(new MediaServerItemLite(mediaServerItem));
+ audioBroadcastResult.setStreamInfo(mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, stream, null, null, false));
audioBroadcastResult.setCodec("G.711");
wvpResult.setData(audioBroadcastResult);
RequestMessage requestMessage = new RequestMessage();
diff --git a/src/main/java/com/genersoft/iot/vmp/service/IMediaService.java b/src/main/java/com/genersoft/iot/vmp/service/IMediaService.java
index 8c05b85..3eee6c7 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/IMediaService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/IMediaService.java
@@ -41,4 +41,5 @@
* @return
*/
StreamInfo getStreamInfoByAppAndStream(MediaServerItem mediaInfo, String app, String stream, Object tracks, String addr);
+ StreamInfo getStreamInfoByAppAndStream(MediaServerItem mediaInfo, String app, String stream, Object tracks, String addr, boolean isPlay);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
index 2c084a5..a3d2a38 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java
@@ -74,6 +74,11 @@
@Override
public StreamInfo getStreamInfoByAppAndStream(MediaServerItem mediaInfo, String app, String stream, Object tracks, String addr) {
+ return getStreamInfoByAppAndStream(mediaInfo, app, stream, tracks, addr, true);
+ }
+
+ @Override
+ public StreamInfo getStreamInfoByAppAndStream(MediaServerItem mediaInfo, String app, String stream, Object tracks, String addr, boolean isPlay) {
StreamInfo streamInfoResult = new StreamInfo();
streamInfoResult.setStream(stream);
streamInfoResult.setApp(app);
@@ -107,11 +112,10 @@
streamInfoResult.setHttps_ts(String.format("https://%s:%s/%s/%s.live.ts", addr, mediaInfo.getHttpSSlPort(), app, stream));
streamInfoResult.setWss_ts(String.format("wss://%s:%s/%s/%s.live.ts", addr, mediaInfo.getHttpSSlPort(), app, stream));
streamInfoResult.setWss_ts(String.format("wss://%s:%s/%s/%s.live.ts", addr, mediaInfo.getHttpSSlPort(), app, stream));
- streamInfoResult.setRtc(String.format("https://%s:%s/index/api/webrtc?app=%s&stream=%s&type=play", mediaInfo.getStreamIp(), mediaInfo.getHttpSSlPort(), app, stream));
+ streamInfoResult.setRtc(String.format("https://%s:%s/index/api/webrtc?app=%s&stream=%s&type=%s", mediaInfo.getStreamIp(), mediaInfo.getHttpSSlPort(), app, stream, isPlay?"play":"push"));
}
streamInfoResult.setTracks(tracks);
return streamInfoResult;
}
-
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
index 6422cfc..d945bfc 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -190,10 +190,7 @@
redisCatchStorage.stopPlay(streamInfo);
storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
streamInfo = null;
-
}
-
-
}
if (streamInfo == null) {
String streamId = null;
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/AudioBroadcastResult.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/AudioBroadcastResult.java
index a722ae8..64bc243 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/AudioBroadcastResult.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/AudioBroadcastResult.java
@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.vmanager.bean;
+import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItemLite;
@@ -8,9 +9,9 @@
*/
public class AudioBroadcastResult {
/**
- * 鎺ㄦ祦鐨勫獟浣撹妭鐐逛俊鎭�
+ * 鎺ㄦ祦鐨勫悇涓柟寮忔祦鍦板潃
*/
- private MediaServerItemLite mediaServerItem;
+ private StreamInfo streamInfo;
/**
* 缂栫爜鏍煎紡
@@ -28,12 +29,12 @@
private String stream;
- public MediaServerItemLite getMediaServerItem() {
- return mediaServerItem;
+ public StreamInfo getStreamInfo() {
+ return streamInfo;
}
- public void setMediaServerItem(MediaServerItemLite mediaServerItem) {
- this.mediaServerItem = mediaServerItem;
+ public void setStreamInfo(StreamInfo streamInfo) {
+ this.streamInfo = streamInfo;
}
public String getCodec() {
diff --git a/src/main/resources/8042900_www.wvp-pro.cn.jks b/src/main/resources/8042900_www.wvp-pro.cn.jks
new file mode 100644
index 0000000..3e51206
--- /dev/null
+++ b/src/main/resources/8042900_www.wvp-pro.cn.jks
Binary files differ
diff --git a/web_src/src/components/dialog/devicePlayer.vue b/web_src/src/components/dialog/devicePlayer.vue
index 9c254c9..5c40c31 100644
--- a/web_src/src/components/dialog/devicePlayer.vue
+++ b/web_src/src/components/dialog/devicePlayer.vue
@@ -276,6 +276,17 @@
</div>
</el-tab-pane>
+ <el-tab-pane label="璇煶瀵硅" name="broadcast" >
+ <div class="trank" style="text-align: center;">
+ <el-button @click="broadcastStatusClick()" :type="getBroadcastStatus()" circle icon="el-icon-microphone" style="font-size: 32px; padding: 24px;margin-top: 24px;"/>
+ <p>
+ <span v-if="broadcastStatus === -1">鐐瑰嚮寮�濮嬪璁�</span>
+ <span v-if="broadcastStatus === 0">绛夊緟鎺ラ�氫腑...</span>
+ <span v-if="broadcastStatus === 1">璇疯璇�</span>
+ </p>
+
+ </div>
+ </el-tab-pane>
</el-tabs>
</div>
@@ -359,6 +370,8 @@
recordStartTime: 0,
showTimeText: "00:00:00",
streamInfo: null,
+ broadcastRtc: null,
+ broadcastStatus: -1, // -1 榛樿鐘舵�� 0 绛夊緟鎺ラ�� 1 鎺ラ�氭垚鍔�
};
},
methods: {
@@ -804,8 +817,111 @@
}, 600)
});
},
+ getBroadcastStatus() {
+ if (this.broadcastStatus == -1) {
+ return "primary"
+ }
+ if (this.broadcastStatus == 0) {
+ return "warning"
+ }
+ if (this.broadcastStatus == 1) {
+ return "danger"
+ }
+ },
+ broadcastStatusClick() {
+ if (this.broadcastStatus == -1) {
+ // 榛樿鐘舵�侊紝 寮�濮�
+ // 鍙戣捣璇煶瀵硅
+ 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;
+ this.startBroadcast(streamInfo.rtc)
+ }else {
+ this.$message({
+ showClose: true,
+ message: res.data.msg,
+ type: "error",
+ });
+ }
+ });
+ }else if (this.broadcastStatus === 1) {
+ this.broadcastRtc.close()
+ this.broadcastRtc = null;
+ this.broadcastStatus = -1;
+ }
+ },
+ startBroadcast(url){
+ 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)
+ // this.broadcastStatus = 1;
+ // });
+ //
+ // webrtcPlayer.on(ZLMRTCClient.Events.WEBRTC_ON_LOCAL_STREAM,(s)=>{// 鑾峰彇鍒颁簡鏈湴娴�
+ // this.broadcastStatus = 1;
+ // // document.getElementById('selfVideo').srcObject=s;
+ // // 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.broadcastRtc.on(ZLMRTCClient.Events.WEBRTC_ICE_CANDIDATE_ERROR,(e)=>{// ICE 鍗忓晢鍑洪敊
+ console.error('ICE 鍗忓晢鍑洪敊')
+ this.$message({
+ showClose: true,
+ message: 'ICE 鍗忓晢鍑洪敊',
+ type: 'error'
+ });
+ });
+
+ this.broadcastRtc.on(ZLMRTCClient.Events.WEBRTC_OFFER_ANWSER_EXCHANGE_FAILED,(e)=>{// offer anwser 浜ゆ崲澶辫触
+ console.error('offer anwser 浜ゆ崲澶辫触',e)
+ this.$message({
+ showClose: true,
+ message: 'offer anwser 浜ゆ崲澶辫触' + e,
+ type: 'error'
+ });
+ });
+ this.broadcastRtc.on(ZLMRTCClient.Events.WEBRTC_ON_CONNECTION_STATE_CHANGE,(e)=>{// offer anwser 浜ゆ崲澶辫触
+ console.log('鐘舵�佹敼鍙�',e)
+ if (e === "failed") {
+ this.broadcastStatus = -1;
+ }else if (e === "connecting") {
+ this.broadcastStatus = 0;
+ }else{
+ this.broadcastStatus = 1;
+ }
+ });
+ this.broadcastRtc.on(ZLMRTCClient.Events.CAPTURE_STREAM_FAILED,(e)=>{// offer anwser 浜ゆ崲澶辫触
+ console.log('鎹曡幏娴佸け璐�',e)
+ this.$message({
+ showClose: true,
+ message: '鎹曡幏娴佸け璐�' + e,
+ type: 'error'
+ });
+ });
+ }
}
};
</script>
--
Gitblit v1.8.0