648540858
2023-05-04 9ccce01692f5bb547303e717e2299165004d50af
Merge remote-tracking branch 'origin/wvp-28181-2.0' into wvp-28181-2.0
6个文件已修改
5个文件已添加
1 文件已重命名
757 ■■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/jt1078/cmd/JT1078Template.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078AutoConfiguration.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078Controller.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/proc/entity/Cmd.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J1205.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9101.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9102.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9201.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9202.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9205.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/session/SessionManager.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/genersoft/iot/vmp/jt1078/JT1078ServerTest.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/jt1078/cmd/JT1078Template.java
@@ -1,8 +1,7 @@
package com.genersoft.iot.vmp.jt1078.cmd;
import com.genersoft.iot.vmp.jt1078.proc.entity.Cmd;
import com.genersoft.iot.vmp.jt1078.proc.response.J9101;
import com.genersoft.iot.vmp.jt1078.proc.response.J9102;
import com.genersoft.iot.vmp.jt1078.proc.response.*;
import com.genersoft.iot.vmp.jt1078.session.SessionManager;
import java.util.Random;
@@ -16,6 +15,15 @@
    private final Random random = new Random();
    private static final String H9101 = "9101";
    private static final String H9102 = "9102";
    private static final String H9201 = "9201";
    private static final String H9202 = "9202";
    private static final String H9205 = "9205";
    private static final String H0001 = "0001";
    private static final String H1205 = "1205";
    /**
     * 开启直播视频
     *
@@ -26,8 +34,8 @@
        Cmd cmd = new Cmd.Builder()
                .setDevId(devId)
                .setPackageNo(randomInt())
                .setMsgId("9101")
                .setRespId("0001")
                .setMsgId(H9101)
                .setRespId(H0001)
                .setRs(j9101)
                .build();
        return SessionManager.INSTANCE.request(cmd, timeOut);
@@ -43,13 +51,64 @@
        Cmd cmd = new Cmd.Builder()
                .setDevId(devId)
                .setPackageNo(randomInt())
                .setMsgId("9102")
                .setRespId("0001")
                .setMsgId(H9102)
                .setRespId(H0001)
                .setRs(j9102)
                .build();
        return SessionManager.INSTANCE.request(cmd, timeOut);
    }
    /**
     * 查询音视频列表
     *
     * @param devId 设备号
     * @param j9205 查询音视频列表
     */
    public String queryBackTime(String devId, J9205 j9205, Integer timeOut) {
        Cmd cmd = new Cmd.Builder()
                .setDevId(devId)
                .setPackageNo(randomInt())
                .setMsgId(H9205)
                .setRespId(H1205)
                .setRs(j9205)
                .build();
        return SessionManager.INSTANCE.request(cmd, timeOut);
    }
    /**
     * 开启视频回放
     *
     * @param devId 设备号
     * @param j9201 视频回放参数
     */
    public String startBackLive(String devId, J9201 j9201, Integer timeOut) {
        Cmd cmd = new Cmd.Builder()
                .setDevId(devId)
                .setPackageNo(randomInt())
                .setMsgId(H9201)
                .setRespId(H1205)
                .setRs(j9201)
                .build();
        return SessionManager.INSTANCE.request(cmd, timeOut);
    }
    /**
     * 视频回放控制
     *
     * @param devId 设备号
     * @param j9202 控制视频回放参数
     */
    public String controlBackLive(String devId, J9202 j9202, Integer timeOut) {
        Cmd cmd = new Cmd.Builder()
                .setDevId(devId)
                .setPackageNo(randomInt())
                .setMsgId(H9202)
                .setRespId(H0001)
                .setRs(j9202)
                .build();
        return SessionManager.INSTANCE.request(cmd, timeOut);
    }
    private Long randomInt() {
        return (long) random.nextInt(1000) + 1;
    }
src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078AutoConfiguration.java
File was renamed from src/main/java/com/genersoft/iot/vmp/jt1078/config/TcpAutoConfiguration.java
@@ -16,7 +16,7 @@
@Order(Integer.MIN_VALUE)
@Configuration
@ConditionalOnProperty(value = "jt1078.enable", havingValue = "true")
public class TcpAutoConfiguration {
public class JT1078AutoConfiguration {
    @Bean(initMethod = "start", destroyMethod = "stop")
    public TcpServer jt1078Server(@Value("${jt1078.port}") Integer port) {
src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078Controller.java
@@ -1,7 +1,7 @@
package com.genersoft.iot.vmp.jt1078.config;
import com.genersoft.iot.vmp.jt1078.cmd.JT1078Template;
import com.genersoft.iot.vmp.jt1078.proc.response.J9101;
import com.genersoft.iot.vmp.jt1078.proc.response.*;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.bind.annotation.GetMapping;
@@ -26,6 +26,9 @@
    @Resource
    JT1078Template jt1078Template;
    /**
     * jt1078Template 调用示例
     */
    @GetMapping("/start/live/{deviceId}/{channelId}")
    public WVPResult<?> startLive(@PathVariable String deviceId, @PathVariable String channelId) {
        J9101 j9101 = new J9101();
@@ -35,12 +38,14 @@
        j9101.setTcpPort(7618);
        j9101.setUdpPort(7618);
        j9101.setType(0);
        // TODO 分配ZLM,获取IP、端口
        String s = jt1078Template.startLive(deviceId, j9101, 6);
        // TODO 设备响应成功后,封装拉流结果集
        WVPResult<String> wvpResult = new WVPResult<>();
        wvpResult.setCode(200);
        wvpResult.setData(String.format("http://192.168.1.1/rtp/%s_%s.live.mp4", deviceId, channelId));
        return wvpResult;
    }
}
src/main/java/com/genersoft/iot/vmp/jt1078/proc/entity/Cmd.java
@@ -102,4 +102,15 @@
        }
    }
    @Override
    public String toString() {
        return "Cmd{" +
                "devId='" + devId + '\'' +
                ", packageNo=" + packageNo +
                ", msgId='" + msgId + '\'' +
                ", respId='" + respId + '\'' +
                ", rs=" + rs +
                '}';
    }
}
src/main/java/com/genersoft/iot/vmp/jt1078/proc/request/J1205.java
New file
@@ -0,0 +1,190 @@
package com.genersoft.iot.vmp.jt1078.proc.request;
import com.alibaba.fastjson2.JSON;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import com.genersoft.iot.vmp.jt1078.proc.Header;
import com.genersoft.iot.vmp.jt1078.proc.response.J8001;
import com.genersoft.iot.vmp.jt1078.proc.response.Rs;
import com.genersoft.iot.vmp.jt1078.session.Session;
import com.genersoft.iot.vmp.jt1078.session.SessionManager;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import java.util.ArrayList;
import java.util.List;
/**
 * 终端上传音视频资源列表
 *
 * @author QingtaiJiang
 * @date 2023/4/28 10:36
 * @email qingtaij@163.com
 */
@MsgId(id = "1205")
public class J1205 extends Re {
    Integer respNo;
    private List<JRecordItem> recordList = new ArrayList<JRecordItem>();
    @Override
    protected Rs decode0(ByteBuf buf, Header header, Session session) {
        respNo = buf.readUnsignedShort();
        long size = buf.readUnsignedInt();
        for (int i = 0; i < size; i++) {
            JRecordItem item = new JRecordItem();
            item.setChannelId(buf.readUnsignedByte());
            item.setStartTime(ByteBufUtil.hexDump(buf.readSlice(6)));
            item.setEndTime(ByteBufUtil.hexDump(buf.readSlice(6)));
            item.setWarn(buf.readLong());
            item.setMediaType(buf.readUnsignedByte());
            item.setStreamType(buf.readUnsignedByte());
            item.setStorageType(buf.readUnsignedByte());
            item.setSize(buf.readUnsignedInt());
            recordList.add(item);
        }
        return null;
    }
    @Override
    protected Rs handler(Header header, Session session) {
        SessionManager.INSTANCE.response(header.getDevId(), "1205", (long) respNo, JSON.toJSONString(this));
        J8001 j8001 = new J8001();
        j8001.setRespNo(header.getSn());
        j8001.setRespId(header.getMsgId());
        j8001.setResult(J8001.SUCCESS);
        return j8001;
    }
    public Integer getRespNo() {
        return respNo;
    }
    public void setRespNo(Integer respNo) {
        this.respNo = respNo;
    }
    public List<JRecordItem> getRecordList() {
        return recordList;
    }
    public void setRecordList(List<JRecordItem> recordList) {
        this.recordList = recordList;
    }
    public static class JRecordItem {
        // 逻辑通道号
        private int channelId;
        // 开始时间
        private String startTime;
        // 结束时间
        private String endTime;
        // 报警标志
        private long warn;
        // 音视频资源类型
        private int mediaType;
        // 码流类型
        private int streamType = 1;
        // 存储器类型
        private int storageType;
        // 文件大小
        private long size;
        public int getChannelId() {
            return channelId;
        }
        public void setChannelId(int channelId) {
            this.channelId = channelId;
        }
        public String getStartTime() {
            return startTime;
        }
        public void setStartTime(String startTime) {
            this.startTime = startTime;
        }
        public String getEndTime() {
            return endTime;
        }
        public void setEndTime(String endTime) {
            this.endTime = endTime;
        }
        public long getWarn() {
            return warn;
        }
        public void setWarn(long warn) {
            this.warn = warn;
        }
        public int getMediaType() {
            return mediaType;
        }
        public void setMediaType(int mediaType) {
            this.mediaType = mediaType;
        }
        public int getStreamType() {
            return streamType;
        }
        public void setStreamType(int streamType) {
            this.streamType = streamType;
        }
        public int getStorageType() {
            return storageType;
        }
        public void setStorageType(int storageType) {
            this.storageType = storageType;
        }
        public long getSize() {
            return size;
        }
        public void setSize(long size) {
            this.size = size;
        }
        @Override
        public String toString() {
            return "JRecordItem{" +
                    "channelId=" + channelId +
                    ", startTime='" + startTime + '\'' +
                    ", endTime='" + endTime + '\'' +
                    ", warn=" + warn +
                    ", mediaType=" + mediaType +
                    ", streamType=" + streamType +
                    ", storageType=" + storageType +
                    ", size=" + size +
                    '}';
        }
    }
    @Override
    public String toString() {
        return "J1205{" +
                "respNo=" + respNo +
                ", recordList=" + recordList +
                '}';
    }
}
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9101.java
@@ -6,6 +6,8 @@
import io.netty.util.CharsetUtil;
/**
 * 实时音视频传输请求
 *
 * @author QingtaiJiang
 * @date 2023/4/27 18:25
 * @email qingtaij@163.com
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9102.java
@@ -1,13 +1,17 @@
package com.genersoft.iot.vmp.jt1078.proc.response;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
/**
 * 音视频实时传输控制
 *
 * @author QingtaiJiang
 * @date 2023/4/27 18:49
 * @email qingtaij@163.com
 */
@MsgId(id = "9102")
public class J9102 extends Rs {
    // 通道号
@@ -47,7 +51,7 @@
        buffer.writeByte(command);
        buffer.writeByte(closeType);
        buffer.writeByte(streamType);
        return null;
        return buffer;
    }
@@ -82,4 +86,14 @@
    public void setStreamType(Integer streamType) {
        this.streamType = streamType;
    }
    @Override
    public String toString() {
        return "J9102{" +
                "channel=" + channel +
                ", command=" + command +
                ", closeType=" + closeType +
                ", streamType=" + streamType +
                '}';
    }
}
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9201.java
New file
@@ -0,0 +1,173 @@
package com.genersoft.iot.vmp.jt1078.proc.response;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
import io.netty.util.CharsetUtil;
/**
 * 回放请求
 *
 * @author QingtaiJiang
 * @date 2023/4/28 10:37
 * @email qingtaij@163.com
 */
@MsgId(id = "9201")
public class J9201 extends Rs {
    // 服务器IP地址
    private String ip;
    // 实时视频服务器TCP端口号
    private int tcpPort;
    // 实时视频服务器UDP端口号
    private int udpPort;
    // 逻辑通道号
    private int channel;
    // 音视频资源类型:0.音视频 1.音频 2.视频 3.视频或音视频
    private int type;
    // 码流类型:0.所有码流 1.主码流 2.子码流(如果此通道只传输音频,此字段置0)
    private int rate;
    // 存储器类型:0.所有存储器 1.主存储器 2.灾备存储器"
    private int storageType;
    // 回放方式:0.正常回放 1.快进回放 2.关键帧快退回放 3.关键帧播放 4.单帧上传
    private int playbackType;
    // 快进或快退倍数:0.无效 1.1倍 2.2倍 3.4倍 4.8倍 5.16倍 (回放控制为1和2时,此字段内容有效,否则置0)
    private int playbackSpeed;
    // 开始时间YYMMDDHHMMSS,回放方式为4时,该字段表示单帧上传时间
    private String startTime;
    // 结束时间YYMMDDHHMMSS,回放方式为4时,该字段无效,为0表示一直回放
    private String endTime;
    @Override
    public ByteBuf encode() {
        ByteBuf buffer = Unpooled.buffer();
        buffer.writeByte(ip.getBytes().length);
        buffer.writeCharSequence(ip, CharsetUtil.UTF_8);
        buffer.writeShort(tcpPort);
        buffer.writeShort(udpPort);
        buffer.writeByte(channel);
        buffer.writeByte(type);
        buffer.writeByte(rate);
        buffer.writeByte(storageType);
        buffer.writeByte(playbackType);
        buffer.writeByte(playbackSpeed);
        buffer.writeBytes(ByteBufUtil.decodeHexDump(startTime));
        buffer.writeBytes(ByteBufUtil.decodeHexDump(endTime));
        return buffer;
    }
    public String getIp() {
        return ip;
    }
    public void setIp(String ip) {
        this.ip = ip;
    }
    public int getTcpPort() {
        return tcpPort;
    }
    public void setTcpPort(int tcpPort) {
        this.tcpPort = tcpPort;
    }
    public int getUdpPort() {
        return udpPort;
    }
    public void setUdpPort(int udpPort) {
        this.udpPort = udpPort;
    }
    public int getChannel() {
        return channel;
    }
    public void setChannel(int channel) {
        this.channel = channel;
    }
    public int getType() {
        return type;
    }
    public void setType(int type) {
        this.type = type;
    }
    public int getRate() {
        return rate;
    }
    public void setRate(int rate) {
        this.rate = rate;
    }
    public int getStorageType() {
        return storageType;
    }
    public void setStorageType(int storageType) {
        this.storageType = storageType;
    }
    public int getPlaybackType() {
        return playbackType;
    }
    public void setPlaybackType(int playbackType) {
        this.playbackType = playbackType;
    }
    public int getPlaybackSpeed() {
        return playbackSpeed;
    }
    public void setPlaybackSpeed(int playbackSpeed) {
        this.playbackSpeed = playbackSpeed;
    }
    public String getStartTime() {
        return startTime;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    @Override
    public String toString() {
        return "J9201{" +
                "ip='" + ip + '\'' +
                ", tcpPort=" + tcpPort +
                ", udpPort=" + udpPort +
                ", channel=" + channel +
                ", type=" + type +
                ", rate=" + rate +
                ", storageType=" + storageType +
                ", playbackType=" + playbackType +
                ", playbackSpeed=" + playbackSpeed +
                ", startTime='" + startTime + '\'' +
                ", endTime='" + endTime + '\'' +
                '}';
    }
}
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9202.java
New file
@@ -0,0 +1,80 @@
package com.genersoft.iot.vmp.jt1078.proc.response;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
/**
 * 平台下发远程录像回放控制
 *
 * @author QingtaiJiang
 * @date 2023/4/28 10:37
 * @email qingtaij@163.com
 */
@MsgId(id = "9202")
public class J9202 extends Rs {
    // 逻辑通道号
    private int channel;
    // 回放控制:0.开始回放 1.暂停回放 2.结束回放 3.快进回放 4.关键帧快退回放 5.拖动回放 6.关键帧播放
    private int playbackType;
    // 快进或快退倍数:0.无效 1.1倍 2.2倍 3.4倍 4.8倍 5.16倍 (回放控制为3和4时,此字段内容有效,否则置0)
    private int playbackSpeed;
    // 拖动回放位置(YYMMDDHHMMSS,回放控制为5时,此字段有效)
    private String playbackTime;
    @Override
    public ByteBuf encode() {
        ByteBuf buffer = Unpooled.buffer();
        buffer.writeByte(channel);
        buffer.writeByte(playbackType);
        buffer.writeByte(playbackSpeed);
        buffer.writeBytes(ByteBufUtil.decodeHexDump(playbackTime));
        return buffer;
    }
    public int getChannel() {
        return channel;
    }
    public void setChannel(int channel) {
        this.channel = channel;
    }
    public int getPlaybackType() {
        return playbackType;
    }
    public void setPlaybackType(int playbackType) {
        this.playbackType = playbackType;
    }
    public int getPlaybackSpeed() {
        return playbackSpeed;
    }
    public void setPlaybackSpeed(int playbackSpeed) {
        this.playbackSpeed = playbackSpeed;
    }
    public String getPlaybackTime() {
        return playbackTime;
    }
    public void setPlaybackTime(String playbackTime) {
        this.playbackTime = playbackTime;
    }
    @Override
    public String toString() {
        return "J9202{" +
                "channel=" + channel +
                ", playbackType=" + playbackType +
                ", playbackSpeed=" + playbackSpeed +
                ", playbackTime='" + playbackTime + '\'' +
                '}';
    }
}
src/main/java/com/genersoft/iot/vmp/jt1078/proc/response/J9205.java
New file
@@ -0,0 +1,94 @@
package com.genersoft.iot.vmp.jt1078.proc.response;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
/**
 * 查询资源列表
 *
 * @author QingtaiJiang
 * @date 2023/4/28 10:36
 * @email qingtaij@163.com
 */
@MsgId(id = "9205")
public class J9205 extends Rs {
    // 逻辑通道号
    private int channelId;
    // 开始时间YYMMDDHHMMSS,全0表示无起始时间
    private String startTime;
    // 结束时间YYMMDDHHMMSS,全0表示无终止时间
    private String endTime;
    // 报警标志
    private final int warnType = 0;
    // 音视频资源类型:0.音视频 1.音频 2.视频 3.视频或音视频
    private int mediaType;
    // 码流类型:0.所有码流 1.主码流 2.子码流
    private int streamType = 0;
    // 存储器类型:0.所有存储器 1.主存储器 2.灾备存储器
    private int storageType = 0;
    @Override
    public ByteBuf encode() {
        ByteBuf buffer = Unpooled.buffer();
        buffer.writeByte(channelId);
        buffer.writeBytes(ByteBufUtil.decodeHexDump(startTime));
        buffer.writeBytes(ByteBufUtil.decodeHexDump(endTime));
        buffer.writeLong(warnType);
        buffer.writeByte(mediaType);
        buffer.writeByte(streamType);
        buffer.writeByte(storageType);
        return buffer;
    }
    public void setChannelId(int channelId) {
        this.channelId = channelId;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public void setMediaType(int mediaType) {
        this.mediaType = mediaType;
    }
    public void setStreamType(int streamType) {
        this.streamType = streamType;
    }
    public void setStorageType(int storageType) {
        this.storageType = storageType;
    }
    public int getWarnType() {
        return warnType;
    }
    @Override
    public String toString() {
        return "J9205{" +
                "channelId=" + channelId +
                ", startTime='" + startTime + '\'' +
                ", endTime='" + endTime + '\'' +
                ", warnType=" + warnType +
                ", mediaType=" + mediaType +
                ", streamType=" + streamType +
                ", storageType=" + storageType +
                '}';
    }
}
src/main/java/com/genersoft/iot/vmp/jt1078/session/SessionManager.java
@@ -76,13 +76,13 @@
        Session session = this.get(cmd.getDevId());
        if (session == null) {
            log.error("DevId: {} not online!", cmd.getDevId());
            return "-1";
            return null;
        }
        String requestKey = requestKey(cmd.getDevId(), cmd.getRespId(), cmd.getPackageNo());
        SynchronousQueue<String> subscribe = subscribe(requestKey);
        if (subscribe == null) {
            log.error("DevId: {} key:{} send repaid", cmd.getDevId(), requestKey);
            return "-1";
            return null;
        }
        session.writeObject(cmd);
        try {
@@ -105,7 +105,7 @@
                log.error("{}", e.getMessage(), e);
            }
        }
        log.warn("未找到对应回复指令,key:{} 消息:{} ", requestKey, data);
        log.warn("Not find response,key:{} data:{} ", requestKey, data);
        return false;
    }
src/test/java/com/genersoft/iot/vmp/jt1078/JT1078ServerTest.java
New file
@@ -0,0 +1,103 @@
package com.genersoft.iot.vmp.jt1078;
import com.genersoft.iot.vmp.jt1078.cmd.JT1078Template;
import com.genersoft.iot.vmp.jt1078.codec.netty.TcpServer;
import com.genersoft.iot.vmp.jt1078.proc.response.J9102;
import com.genersoft.iot.vmp.jt1078.proc.response.J9201;
import com.genersoft.iot.vmp.jt1078.proc.response.J9202;
import com.genersoft.iot.vmp.jt1078.proc.response.J9205;
import java.util.Scanner;
/**
 * @author QingtaiJiang
 * @date 2023/4/28 14:22
 * @email qingtaij@163.com
 */
public class JT1078ServerTest {
    private static final JT1078Template jt1078Template = new JT1078Template();
    public static void main(String[] args) {
        System.out.println("Starting jt1078 server...");
        TcpServer tcpServer = new TcpServer(21078);
        tcpServer.start();
        System.out.println("Start jt1078 server success!");
        Scanner s = new Scanner(System.in);
        while (true) {
            String code = s.nextLine();
            switch (code) {
                case "1":
                    test9102();
                    break;
                case "2":
                    test9201();
                    break;
                case "3":
                    test9202();
                    break;
                case "4":
                    test9205();
                    break;
                default:
                    break;
            }
        }
    }
    private static void test9102() {
        J9102 j9102 = new J9102();
        j9102.setChannel(1);
        j9102.setCommand(0);
        j9102.setCloseType(0);
        j9102.setStreamType(0);
        String s = jt1078Template.stopLive("18864197066", j9102, 6);
        System.out.println(s);
    }
    private static void test9201() {
        J9201 j9201 = new J9201();
        j9201.setIp("192.168.1.1");
        j9201.setChannel(1);
        j9201.setTcpPort(7618);
        j9201.setUdpPort(7618);
        j9201.setType(0);
        j9201.setRate(0);
        j9201.setStorageType(0);
        j9201.setPlaybackType(0);
        j9201.setPlaybackSpeed(0);
        j9201.setStartTime("230428134100");
        j9201.setEndTime("230428134200");
        String s = jt1078Template.startBackLive("18864197066", j9201, 6);
        System.out.println(s);
    }
    private static void test9202() {
        J9202 j9202 = new J9202();
        j9202.setChannel(1);
        j9202.setPlaybackType(2);
        j9202.setPlaybackSpeed(0);
        j9202.setPlaybackTime("230428134100");
        String s = jt1078Template.controlBackLive("18864197066", j9202, 6);
        System.out.println(s);
    }
    private static void test9205() {
        J9205 j9205 = new J9205();
        j9205.setChannelId(1);
        j9205.setStartTime("230428134100");
        j9205.setEndTime("230428134100");
        j9205.setMediaType(0);
        j9205.setStreamType(0);
        j9205.setStorageType(0);
        String s = jt1078Template.queryBackTime("18864197066", j9205, 6);
        System.out.println(s);
    }
}