panlinlin
2021-04-22 118e42884e677a99dbdd20349eaad85c96bafeb4
优化拉流代理
7个文件已修改
1个文件已添加
110 ■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/bean/WVPResult.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/StreamProxyList.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/dialog/StreamProxyEdit.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
@@ -43,9 +43,11 @@
        builder.add("secret",mediaSecret);
        if (param != null && param.keySet().size() > 0) {
            for (String key : param.keySet()){
                if (param.get(key) != null) {
                builder.add(key, param.get(key).toString());
            }
        }
        }
        FormBody body = builder.build();
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());
            }
        }
    }
}
src/main/java/com/genersoft/iot/vmp/service/IStreamProxyService.java
@@ -10,7 +10,7 @@
     * 保存视频代理
     * @param param
     */
    void save(StreamProxyItem param);
    String save(StreamProxyItem param);
    /**
     * 添加视频代理到zlm
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);
src/main/java/com/genersoft/iot/vmp/vmanager/bean/WVPResult.java
New file
@@ -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;
    }
}
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("添加代理: " + 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("移除代理")
@@ -69,10 +73,13 @@
    })
    @DeleteMapping(value = "/del")
    @ResponseBody
    public Object del(String app, String stream){
    public WVPResult del(String app, String stream){
        logger.info("移除代理: " + app + "/" + stream);
        streamProxyService.del(app, stream);
        return "success";
        WVPResult<Object> result = new WVPResult<>();
        result.setCode(0);
        result.setMsg("success");
        return result;
    }
    @ApiOperation("启用代理")
@@ -85,7 +92,7 @@
    public Object start(String app, String stream){
        logger.info("启用代理: " + app + "/" + stream);
        boolean result = streamProxyService.start(app, stream);
        return "success";
        return result?"success":"fail";
    }
    @ApiOperation("停用代理")
web_src/src/components/StreamProxyList.vue
@@ -180,7 +180,6 @@
                
            },
            deleteStreamProxy: function(row){
                console.log(1111)
                let that = this;
                this.getListLoading = true;
                that.$axios({
@@ -212,7 +211,16 @@
                }).then(function (res) {
                    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;
web_src/src/components/dialog/StreamProxyEdit.vue
@@ -151,12 +151,10 @@
        url:`/api/proxy/save`,
        data: that.proxyParam
      }).then(function (res) {
          console.log(res);
          console.log(res.data == "success");
          if (res.data == "success") {
        if (typeof (res.data.code) != "undefined" && res.data.code === 0) {
            that.$message({
              showClose: true,
              message: "保存成功",
            message: res.data.msg,
              type: "success",
            });
            that.showDialog = false;