Просмотр исходного кода

摄像头访问文件顺序更改 2022-08-26

donggaosheng лет назад: 3
Родитель
Сommit
bb329178fc

+ 7 - 3
zd-modules/zd-camera/src/main/java/com/zd/iot/vmp/onvif/impl/ONVIFServerIMpl.java

@@ -169,6 +169,7 @@ public class ONVIFServerIMpl implements IONVIFServer {
         param.put("app",appName);
         param.put("stream",streamName);
         param.put("api","startRecord");
+        param.remove("rstpUrl");
         return getCommonRecord(mediaServerItem,param);
     }
 
@@ -196,9 +197,10 @@ public class ONVIFServerIMpl implements IONVIFServer {
         Integer code=jsonObject.getInteger("code");
         if(code==0){
             List<String> fileLlist=getFileName(urlPath);
+            logger.error("fileLlist size:"+fileLlist.size());
             if(null!=fileLlist && fileLlist.size()>0){
-                fileLlist=fileLlist.stream().sorted(Comparator.comparing(String::toString).reversed()).collect(Collectors.toList());
-                return returnPath+fileLlist.get(0);
+                //fileLlist=fileLlist.stream().sorted(Comparator.comparing(String::toString).reversed()).collect(Collectors.toList());
+                return returnPath+fileLlist.get(fileLlist.size()-1);
             }else{
                 return null;
             }
@@ -208,12 +210,14 @@ public class ONVIFServerIMpl implements IONVIFServer {
 
     @Override
     public Boolean closeStream(MediaServerItem mediaServerItem, Map<String, Object> param) {
+        param.put("vhost","__defaultVhost__");
         param.put("schema","rtsp");
         param.put("api","close_streams");
         param.put("force",1);
         JSONObject jsonObject=getCommonRecord(mediaServerItem,param);
         Integer code=jsonObject.getInteger("code");
-        if(code==0){
+        Integer count_closed=jsonObject.getInteger("count_closed");
+        if(code==0 && count_closed>0){
             return true;
         }
         return false;

+ 12 - 4
zd-modules/zd-camera/src/main/java/com/zd/iot/vmp/vmanager/onvif/ONVIFController.java

@@ -9,11 +9,14 @@ import com.zd.iot.vmp.media.zlm.dto.MediaServerItem;
 import com.zd.iot.vmp.onvif.IONVIFServer;
 import com.zd.iot.vmp.service.IMediaServerService;
 import com.zd.iot.vmp.vmanager.bean.WVPResult;
+import com.zd.iot.vmp.web.ApiStreamController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
@@ -31,6 +34,8 @@ import java.util.UUID;
 @RequestMapping("/api/onvif")
 public class ONVIFController {
 
+    private final static Logger logger = LoggerFactory.getLogger(ONVIFController.class);
+
     @Autowired
     private IMediaServerService mediaServerService;
 
@@ -152,9 +157,8 @@ public class ONVIFController {
             if (errorCode == 0) {
                 MediaServerItem mediaServerItem = mediaServerService.getOne("your_server_id");
                 Map<String,Object> map=new HashMap<>();
-
                 map.put("type",1);
-                map.put("vhost",UUID.randomUUID().toString());
+                map.put("vhost","__defaultVhost__");
                 map.put("customized_path","/home/upload");
                 map.put("max_second",360000);
                 String name=hostname.replace(".","");
@@ -203,9 +207,9 @@ public class ONVIFController {
         String appName="app"+hostname;
         String streamName="stream"+hostname;
         map.put("type",1);
-        map.put("vhost",UUID.randomUUID().toString());
         map.put("app",appName);
         map.put("stream",streamName);
+        map.put("vhost","__defaultVhost__");
         boolean isTrue=onvifServer.isRecording(mediaServerItem,map);
         if(isTrue==false){
             WVPResult<String> resultData = new WVPResult();
@@ -217,7 +221,11 @@ public class ONVIFController {
         }
         String urlPath=onvifServer.stopRecord(mediaServerItem,map);
         urlPath=urlPath.replace("/.","/");
-        boolean isCloseTrue=onvifServer.closeStream(mediaServerItem,map);
+        logger.error("返回路径是否重复日志:"+urlPath);
+        Map<String,Object> closeMap=new HashMap<>();
+        closeMap.put("app",appName);
+        closeMap.put("stream",streamName);
+        boolean isCloseTrue=onvifServer.closeStream(mediaServerItem,closeMap);
         WVPResult<String> resultData = new WVPResult();
         if(StringUtils.isNotBlank(urlPath) && isCloseTrue){
             resultData.setCode(HttpStatus.SUCCESS);