liusuyi
2026-04-01 a2bef1bc001cc196affb1b24d69eec4127cfa40a
ard-vtdu/src/main/java/com/ard/vtdu/service/impl/ArdArdMediaServiceImpl.java
@@ -58,18 +58,23 @@
            String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
            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);
@@ -96,7 +101,9 @@
            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);