liusuyi
2026-04-01 a2bef1bc001cc196affb1b24d69eec4127cfa40a
ard-vtdu/src/main/java/com/ard/vtdu/service/impl/ArdArdMediaServiceImpl.java
@@ -51,22 +51,30 @@
    @Override
    public ArdVtdu addPath(ArdVtdu ardVtdu) {
        try {
            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554/" + ardVtdu.getName();
            String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":1935/" + ardVtdu.getName();
            String rtspUrl =
                    "rtsp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtspPort() + "/" + ardVtdu.getName();
            String rtmpUrl =
                    "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + ardVtdu.getName();
            String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
            String webrtcUrl = protocol + mediamtxConfig.getPlayHost() + ":8889/" + ardVtdu.getName();
            String webrtcUrl =
                    protocol + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getWebrtcPort() + "/" + ardVtdu.getName();
            String source = ardVtdu.getRtspSource();
            Conf conf = new Conf();
            conf.setSource(ardVtdu.getRtspSource());
            conf.setRunOnDemandRestart(false);
            conf.setRunOnDemandCloseAfter("5s");
            conf.setName(ardVtdu.getName());
            conf.setSource(source);
            // 如果是拉流则配置按需
            if (!"publisher".equalsIgnoreCase(source)) {
                conf.setSourceOnDemand(true); // 按需拉
                conf.setRunOnDemandCloseAfter("5s"); // 无观众 5 秒断开
            }
            conf.setMaxReaders(100);
            conf.setSourceProtocol("tcp");
            if (checkNameExist(ardVtdu.getName())) {
                mediaClient.removePath(ardVtdu.getName());
            if (!checkNameExist(ardVtdu.getName())) {
                mediaClient.addPath(ardVtdu.getName(), conf);
            } else {
                mediaClient.editPath(ardVtdu.getName(), conf);
            }
            mediaClient.addPath(ardVtdu.getName(), conf);
            ardVtdu.setCameraId(ardVtdu.getName().split("_")[0]);
            ardVtdu.setRtspUrl(rtspUrl);
@@ -82,15 +90,20 @@
    @Override
    public ArdVtdu editPath(ArdVtdu ardVtdu) {
        try {
            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554/" + ardVtdu.getName();
            String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":1935/" + ardVtdu.getName();
            String rtspUrl =
                    "rtsp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtspPort() + "/" + ardVtdu.getName();
            String rtmpUrl =
                    "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + ardVtdu.getName();
            String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
            String webrtcUrl = protocol + mediamtxConfig.getPlayHost() + ":8889/" + ardVtdu.getName();
            String webrtcUrl =
                    protocol + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getWebrtcPort() + "/" + ardVtdu.getName();
            Conf conf = new Conf();
            conf.setSource(ardVtdu.getRtspSource());
            conf.setName(ardVtdu.getName());
            conf.setRunOnDemand("");
            if(!"publisher".equalsIgnoreCase(conf.getSource())) {
                conf.setSourceOnDemand(true);
            }
            conf.setRunOnDemandRestart(false);
            conf.setRunOnDemandCloseAfter("5s");
            conf.setMaxReaders(100);
@@ -199,14 +212,15 @@
            //源
            info.setRtspSource(conf.getSource());
            //RTMP播放地址
            String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":1935/" + name;
            String rtmpUrl = "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + name;
            info.setRtmpUrl(rtmpUrl);
            //RTSP播放地址
            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":8554/" + name;
            String rtspUrl = "rtsp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtspPort() + "/" + name;
            info.setRtspUrl(rtspUrl);
            //WEBRTC播放地址
            String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
            String webrtcUrl = protocol + mediamtxConfig.getPlayHost() + ":8889/" + name;
            String webrtcUrl =
                    protocol + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getWebrtcPort() + "/" + name;
            info.setWebrtcUrl(webrtcUrl);
            //上行流量