648540858
2022-10-25 0f0ece240128795d7e174937a4ee848ef7f3d691
设备编辑增加收流IP
7个文件已修改
62 ■■■■ 已修改文件
sql/update.sql 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/dialog/configInfo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/dialog/deviceEdit.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/update.sql
@@ -11,6 +11,9 @@
    add custom_name varchar(255) default null;
alter table device
    add sdpIp varchar(50) default null;
alter table device
    add password varchar(255) default null;
alter table device
src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
@@ -175,6 +175,9 @@
    @Schema(description = "密码")
    private String password;
    @Schema(description = "收流IP")
    private String sdpIp;
    public String getDeviceId() {
        return deviceId;
@@ -391,4 +394,12 @@
    public void setPassword(String password) {
        this.password = password;
    }
    public String getSdpIp() {
        return sdpIp;
    }
    public void setSdpIp(String sdpIp) {
        this.sdpIp = sdpIp;
    }
}
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -290,12 +290,17 @@
                subscribe.removeSubscribe(hookSubscribe);
            }
        });
        //
        String sdpIp;
        if (!ObjectUtils.isEmpty(device.getSdpIp())) {
            sdpIp = device.getSdpIp();
        }else {
            sdpIp = mediaServerItem.getSdpIp();
        }
        StringBuffer content = new StringBuffer(200);
        content.append("v=0\r\n");
        content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
        content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n");
        content.append("s=Play\r\n");
        content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
        content.append("c=IN IP4 " + sdpIp + "\r\n");
        content.append("t=0 0\r\n");
        if (userSetting.isSeniorSdp()) {
@@ -379,13 +384,18 @@
        logger.info("{} 分配的ZLM为: {} [{}:{}]", ssrcInfo.getStream(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort());
        String sdpIp;
        if (!ObjectUtils.isEmpty(device.getSdpIp())) {
            sdpIp = device.getSdpIp();
        }else {
            sdpIp = mediaServerItem.getSdpIp();
        }
        StringBuffer content = new StringBuffer(200);
        content.append("v=0\r\n");
        content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
        content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n");
        content.append("s=Playback\r\n");
        content.append("u=" + channelId + ":0\r\n");
        content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
        content.append("c=IN IP4 " + sdpIp + "\r\n");
        content.append("t=" + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime) + " "
                + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) + "\r\n");
@@ -476,13 +486,18 @@
                                  SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException {
        logger.info("{} 分配的ZLM为: {} [{}:{}]", ssrcInfo.getStream(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort());
        String sdpIp;
        if (!ObjectUtils.isEmpty(device.getSdpIp())) {
            sdpIp = device.getSdpIp();
        }else {
            sdpIp = mediaServerItem.getSdpIp();
        }
        StringBuffer content = new StringBuffer(200);
        content.append("v=0\r\n");
        content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
        content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n");
        content.append("s=Download\r\n");
        content.append("u=" + channelId + ":0\r\n");
        content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
        content.append("c=IN IP4 " + sdpIp + "\r\n");
        content.append("t=" + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime) + " "
                + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) + "\r\n");
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
@@ -600,6 +600,7 @@
        if (!deviceInStore.getGeoCoordSys().equals(device.getGeoCoordSys())) {
            updateDeviceChannelGeoCoordSys(device);
        }
        // 更新redis
        deviceMapper.updateCustom(device);
    }
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
@@ -24,6 +24,7 @@
            "transport," +
            "streamMode," +
            "ip," +
            "sdpIp," +
            "port," +
            "hostAddress," +
            "expires," +
@@ -52,6 +53,7 @@
                "transport," +
                "streamMode," +
                "ip," +
                "sdpIp," +
                "port," +
                "hostAddress," +
                "expires," +
@@ -77,6 +79,7 @@
                "#{transport}," +
                "#{streamMode}," +
                "#{ip}," +
                "#{sdpIp}," +
                "#{port}," +
                "#{hostAddress}," +
                "#{expires}," +
@@ -125,6 +128,7 @@
            "transport," +
            "streamMode," +
            "ip," +
            "sdpIp," +
            "port," +
            "hostAddress," +
            "expires," +
@@ -160,6 +164,7 @@
            "transport," +
            "streamMode," +
            "ip," +
            "sdpIp," +
            "port," +
            "hostAddress," +
            "expires," +
@@ -188,6 +193,7 @@
            "transport," +
            "streamMode," +
            "ip," +
            "sdpIp," +
            "port," +
            "hostAddress," +
            "expires," +
@@ -214,6 +220,7 @@
            "<if test=\"password != null\">, password='${password}'</if>" +
            "<if test=\"streamMode != null\">, streamMode='${streamMode}'</if>" +
            "<if test=\"ip != null\">, ip='${ip}'</if>" +
            "<if test=\"sdpIp != null\">, sdpIp='${sdpIp}'</if>" +
            "<if test=\"port != null\">, port=${port}</if>" +
            "<if test=\"charset != null\">, charset='${charset}'</if>" +
            "<if test=\"subscribeCycleForCatalog != null\">, subscribeCycleForCatalog=${subscribeCycleForCatalog}</if>" +
@@ -232,6 +239,7 @@
            "deviceId, " +
            "custom_name, " +
            "password, " +
            "sdpIp, " +
            "createTime," +
            "updateTime," +
            "charset," +
@@ -243,6 +251,7 @@
            "#{deviceId}," +
            "#{name}," +
            "#{password}," +
            "#{sdpIp}," +
            "#{createTime}," +
            "#{updateTime}," +
            "#{charset}," +
web_src/src/components/dialog/configInfo.vue
@@ -19,7 +19,7 @@
            <el-tag size="small">{{configInfoData.sip.password}}</el-tag>
          </el-descriptions-item>
        </el-descriptions>
        <el-descriptions title="版本信息"v-if="configInfoData.sip">
        <el-descriptions title="版本信息"v-if="configInfoData.version">
          <el-descriptions-item label="版本">{{configInfoData.version.version}}</el-descriptions-item>
          <el-descriptions-item label="编译时间">{{configInfoData.version.BUILD_DATE}}</el-descriptions-item>
          <el-descriptions-item label="GIT版本">{{configInfoData.version.GIT_Revision_SHORT}}</el-descriptions-item>
web_src/src/components/dialog/deviceEdit.vue
@@ -22,6 +22,9 @@
          <el-form-item label="密码" prop="password">
            <el-input type="password" v-model="form.password" clearable></el-input>
          </el-form-item>
          <el-form-item label="收流IP" prop="sdpIp">
            <el-input type="sdpIp" v-model="form.sdpIp" clearable></el-input>
          </el-form-item>
          <el-form-item label="流媒体ID" prop="mediaServerId">
            <el-select v-model="form.mediaServerId" style="float: left; width: 100%" >
              <el-option key="auto" label="自动负载最小" value="auto"></el-option>