From 118e42884e677a99dbdd20349eaad85c96bafeb4 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期四, 22 四月 2021 10:56:13 +0800
Subject: [PATCH] 优化拉流代理
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java | 7 ++
src/main/java/com/genersoft/iot/vmp/vmanager/bean/WVPResult.java | 32 ++++++++++
web_src/src/components/StreamProxyList.vue | 34 +++++++----
src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java | 2
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java | 4 +
src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java | 19 ++++--
web_src/src/components/dialog/StreamProxyEdit.vue | 28 ++++-----
src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java | 32 ++++++++--
8 files changed, 114 insertions(+), 44 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
index d701c83..42ad823 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
@@ -43,7 +43,9 @@
builder.add("secret",mediaSecret);
if (param != null && param.keySet().size() > 0) {
for (String key : param.keySet()){
- builder.add(key, param.get(key).toString());
+ if (param.get(key) != null) {
+ builder.add(key, param.get(key).toString());
+ }
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
index 2ef4cf6..308fa6b 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
@@ -170,7 +170,12 @@
List<StreamProxyItem> streamProxyListForEnable = storager.getStreamProxyListForEnable(true);
for (StreamProxyItem streamProxyDto : streamProxyListForEnable) {
logger.info("鎭㈠娴佷唬鐞嗭紝" + streamProxyDto.getApp() + "/" + streamProxyDto.getStream());
- streamProxyService.addStreamProxyToZlm(streamProxyDto);
+ JSONObject jsonObject = streamProxyService.addStreamProxyToZlm(streamProxyDto);
+ if (jsonObject == null) {
+ // 璁剧疆涓烘湭鍚敤
+ logger.info("鎭㈠娴佷唬鐞嗗け璐ワ紝璇锋鏌ユ祦鍦板潃鍚庨噸鏂板惎鐢�" + streamProxyDto.getApp() + "/" + streamProxyDto.getStream());
+ streamProxyService.stop(streamProxyDto.getApp(), streamProxyDto.getStream());
+ }
}
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java b/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java
index 023c075..cddc21c 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java
@@ -10,7 +10,7 @@
* 淇濆瓨瑙嗛浠g悊
* @param param
*/
- void save(StreamProxyItem param);
+ String save(StreamProxyItem param);
/**
* 娣诲姞瑙嗛浠g悊鍒皕lm
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
index e31f0e8..c6286c5 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
@@ -40,23 +40,40 @@
@Override
- public void save(StreamProxyItem param) {
+ public String save(StreamProxyItem param) {
MediaServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
String dstUrl = String.format("rtmp://%s:%s/%s/%s", "127.0.0.1", mediaInfo.getRtmpPort(), param.getApp(),
param.getStream() );
param.setDst_url(dstUrl);
+ StringBuffer result = new StringBuffer();
// 鏇存柊
if (videoManagerStorager.queryStreamProxy(param.getApp(), param.getStream()) != null) {
- boolean result = videoManagerStorager.updateStreamProxy(param);
- if (result && param.isEnable()) {
- addStreamProxyToZlm(param);
+ if (videoManagerStorager.updateStreamProxy(param)) {
+ result.append("淇濆瓨鎴愬姛");
+ if (param.isEnable()){
+ JSONObject jsonObject = addStreamProxyToZlm(param);
+ if (jsonObject == null) {
+ result.append(", 浣嗘槸鍚敤澶辫触锛岃妫�鏌ユ祦鍦板潃鏄惁鍙敤");
+ param.setEnable(false);
+ videoManagerStorager.updateStreamProxy(param);
+ }
+ }
}
}else { // 鏂板
- boolean result = videoManagerStorager.addStreamProxy(param);
- if (result && param.isEnable()) {
- addStreamProxyToZlm(param);
+ if (videoManagerStorager.addStreamProxy(param)){
+ result.append("淇濆瓨鎴愬姛");
+ if (param.isEnable()) {
+ JSONObject jsonObject = addStreamProxyToZlm(param);
+ if (jsonObject == null) {
+ result.append(", 浣嗘槸鍚敤澶辫触锛岃妫�鏌ユ祦鍦板潃鏄惁鍙敤");
+ param.setEnable(false);
+ videoManagerStorager.updateStreamProxy(param);
+ }
+ }
}
+
}
+ return result.toString();
}
@Override
@@ -105,6 +122,7 @@
StreamProxyItem streamProxy = videoManagerStorager.queryStreamProxy(app, stream);
if (!streamProxy.isEnable() && streamProxy != null) {
JSONObject jsonObject = addStreamProxyToZlm(streamProxy);
+ if (jsonObject == null) return false;
if (jsonObject.getInteger("code") == 0) {
result = true;
streamProxy.setEnable(true);
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/WVPResult.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/WVPResult.java
new file mode 100644
index 0000000..f8e2c1c
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/WVPResult.java
@@ -0,0 +1,32 @@
+package com.genersoft.iot.vmp.vmanager.bean;
+
+public class WVPResult<T> {
+
+ private int code;
+ private String msg;
+ private T data;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
index 8914fc1..62f732e 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
@@ -4,6 +4,7 @@
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.service.IStreamProxyService;
+import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -56,10 +57,13 @@
})
@PostMapping(value = "/save")
@ResponseBody
- public Object save(@RequestBody StreamProxyItem param){
+ public WVPResult save(@RequestBody StreamProxyItem param){
logger.info("娣诲姞浠g悊锛� " + JSONObject.toJSONString(param));
- streamProxyService.save(param);
- return "success";
+ String msg = streamProxyService.save(param);
+ WVPResult<Object> result = new WVPResult<>();
+ result.setCode(0);
+ result.setMsg(msg);
+ return result;
}
@ApiOperation("绉婚櫎浠g悊")
@@ -69,10 +73,13 @@
})
@DeleteMapping(value = "/del")
@ResponseBody
- public Object del(String app, String stream){
+ public WVPResult del(String app, String stream){
logger.info("绉婚櫎浠g悊锛� " + app + "/" + stream);
streamProxyService.del(app, stream);
- return "success";
+ WVPResult<Object> result = new WVPResult<>();
+ result.setCode(0);
+ result.setMsg("success");
+ return result;
}
@ApiOperation("鍚敤浠g悊")
@@ -85,7 +92,7 @@
public Object start(String app, String stream){
logger.info("鍚敤浠g悊锛� " + app + "/" + stream);
boolean result = streamProxyService.start(app, stream);
- return "success";
+ return result?"success":"fail";
}
@ApiOperation("鍋滅敤浠g悊")
diff --git a/web_src/src/components/StreamProxyList.vue b/web_src/src/components/StreamProxyList.vue
index 6d4183e..ee3d43c 100644
--- a/web_src/src/components/StreamProxyList.vue
+++ b/web_src/src/components/StreamProxyList.vue
@@ -19,13 +19,13 @@
<el-table-column label="娴佸湴鍧�" width="400" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
-
+
<el-tag size="medium" v-if="scope.row.type == 'default'">
- <i class="cpoy-btn el-icon-document-copy" title="鐐瑰嚮鎷疯礉" v-clipboard="scope.row.url" @success="$message({type:'success', message:'鎴愬姛鎷疯礉鍒扮矘璐存澘'})"></i>
+ <i class="cpoy-btn el-icon-document-copy" title="鐐瑰嚮鎷疯礉" v-clipboard="scope.row.url" @success="$message({type:'success', message:'鎴愬姛鎷疯礉鍒扮矘璐存澘'})"></i>
{{scope.row.url}}
</el-tag>
<el-tag size="medium" v-if="scope.row.type != 'default'">
- <i class="cpoy-btn el-icon-document-copy" title="鐐瑰嚮鎷疯礉" v-clipboard="scope.row.src_url" @success="$message({type:'success', message:'鎴愬姛鎷疯礉鍒扮矘璐存澘'})"></i>
+ <i class="cpoy-btn el-icon-document-copy" title="鐐瑰嚮鎷疯礉" v-clipboard="scope.row.src_url" @success="$message({type:'success', message:'鎴愬姛鎷疯礉鍒扮矘璐存澘'})"></i>
{{scope.row.src_url}}
</el-tag>
</div>
@@ -97,7 +97,7 @@
},
data() {
return {
- streamProxyList: [],
+ streamProxyList: [],
currentPusher: {}, //褰撳墠鎿嶄綔璁惧瀵硅薄
updateLooper: 0, //鏁版嵁鍒锋柊杞鏍囧織
currentDeviceChannelsLenth:0,
@@ -177,22 +177,21 @@
console.log(error);
that.getListLoading = false;
});
-
+
},
deleteStreamProxy: function(row){
- console.log(1111)
let that = this;
this.getListLoading = true;
that.$axios({
method:"delete",
url:"/api/proxy/del",
params:{
- app: row.app,
- stream: row.stream
- }
+ app: row.app,
+ stream: row.stream
+ }
}).then((res)=>{
that.getListLoading = false;
- that.initData()
+ that.initData()
}).catch(function (error) {
console.log(error);
that.getListLoading = false;
@@ -210,9 +209,18 @@
stream: row.stream
}
}).then(function (res) {
- that.getListLoading = false;
- that.startBtnLaoding = false;
- that.initData()
+ that.getListLoading = false;
+ that.startBtnLaoding = false;
+ if (res.data == "success"){
+ that.initData()
+ }else {
+ that.$message({
+ showClose: true,
+ message: "淇濆瓨澶辫触锛岃妫�鏌ュ湴鍧�鏄惁鍙敤锛�",
+ type: "error",
+ });
+ }
+
}).catch(function (error) {
console.log(error);
that.getListLoading = false;
diff --git a/web_src/src/components/dialog/StreamProxyEdit.vue b/web_src/src/components/dialog/StreamProxyEdit.vue
index d849ec6..66f63ad 100644
--- a/web_src/src/components/dialog/StreamProxyEdit.vue
+++ b/web_src/src/components/dialog/StreamProxyEdit.vue
@@ -151,22 +151,20 @@
url:`/api/proxy/save`,
data: that.proxyParam
}).then(function (res) {
- console.log(res);
- console.log(res.data == "success");
- if (res.data == "success") {
- that.$message({
- showClose: true,
- message: "淇濆瓨鎴愬姛",
- type: "success",
- });
- that.showDialog = false;
- if (that.listChangeCallback != null) {
- that.listChangeCallback();
- }
+ if (typeof (res.data.code) != "undefined" && res.data.code === 0) {
+ that.$message({
+ showClose: true,
+ message: res.data.msg,
+ type: "success",
+ });
+ that.showDialog = false;
+ if (that.listChangeCallback != null) {
+ that.listChangeCallback();
}
- }).catch(function (error) {
- console.log(error);
- });
+ }
+ }).catch(function (error) {
+ console.log(error);
+ });
},
close: function () {
console.log("鍏抽棴娣诲姞瑙嗛骞冲彴");
--
Gitblit v1.8.0