瀏覽代碼

Merge remote-tracking branch 'origin/master'

suntianwu 2 年之前
父節點
當前提交
7bd0db02cc

+ 4 - 1
pom.xml

@@ -36,7 +36,10 @@
 
 
     <!--环境依赖-->
     <!--环境依赖-->
     <dependencies>
     <dependencies>
-
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
         <!--应用健康监控后台管理依赖-->
         <!--应用健康监控后台管理依赖-->
         <dependency>
         <dependency>
             <groupId>de.codecentric</groupId>
             <groupId>de.codecentric</groupId>

+ 3 - 1
src/main/java/com/iden/common/entity/IdenCamera.java

@@ -104,5 +104,7 @@ public class IdenCamera implements Serializable {
     @TableField("MODIFY_TIME")
     @TableField("MODIFY_TIME")
     private Date modifyTime;
     private Date modifyTime;
 
 
-
+    @ApiModelProperty("rtspUrl")
+    @TableField("RTSP_URL")
+    private String rtspUrl;
 }
 }

+ 3 - 0
src/main/java/com/iden/common/entity/IdenCommunity.java

@@ -84,6 +84,9 @@ public class IdenCommunity implements Serializable {
     @TableField("PHONE")
     @TableField("PHONE")
     private String phone;
     private String phone;
 
 
+    @ApiModelProperty("rtsp服务url")
+    @TableField("rtsp_service_url")
+    private String rtspServiceUrl;
 
 
     @ApiModelProperty("备注")
     @ApiModelProperty("备注")
     @TableField("REMARK")
     @TableField("REMARK")

+ 3 - 1
src/main/java/com/iden/common/mapper/IdenCommunityMapper.java

@@ -2,6 +2,7 @@ package com.iden.common.mapper;
 
 
 import com.iden.common.entity.IdenCommunity;
 import com.iden.common.entity.IdenCommunity;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
 
 
 
 
 /**
 /**
@@ -11,5 +12,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2021-12-22 17:23:45
  * @since 2021-12-22 17:23:45
  */
  */
 public interface IdenCommunityMapper extends BaseMapper<IdenCommunity> {
 public interface IdenCommunityMapper extends BaseMapper<IdenCommunity> {
-
+    @Select(value = "select * from iden_community where id =(select COMMUNITY_ID from iden_camera where ip=#{ip,jdbcType = VARCHAR})")
+    public IdenCommunity queryRtspServiceUrl(String ip);
 }
 }

+ 61 - 0
src/main/java/com/iden/common/rtsp/RTSPController.java

@@ -0,0 +1,61 @@
+package com.iden.common.rtsp;
+
+import com.iden.common.entity.IdenCommunity;
+import com.iden.common.service.IdenCameraService;
+import com.iden.common.service.IdenCommunityService;
+import com.iden.common.util.HttpUtil;
+import com.iden.common.util.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author wyy
+ * @creat 2022/5/20
+ */
+@RestController
+@Api(value = "RTSPController", tags = { "调取rtsp接口" })
+@Slf4j
+@RequestMapping("/bms/rtsp")
+public class RTSPController {
+    @Autowired
+    private IdenCameraService idenCameraService;
+    @Autowired
+    private IdenCommunityService idenCommunityService;
+
+    //启动rtsp服务
+    @RequestMapping(value = "startRtspService", method = RequestMethod.GET)
+    @ResponseBody
+    @ApiOperation(value = "启动rtsp服务",notes = "启动rtsp服务")
+    public Result<Object> startRtspService(String ip){
+        try{
+            IdenCommunity idenCommunity = idenCommunityService.queryRtspServiceUrl(ip);
+            String url = idenCommunity.getRtspServiceUrl()+"/startSaveVideo?ip="+ip;
+            HttpUtil.httpGet(url);
+            return Result.success("生成视频成功");
+        }catch(Exception e){
+            e.printStackTrace();
+            return Result.error("生成视频失败");
+        }
+    }
+    //停止rtsp服务
+    @RequestMapping(value = "stopRtspService", method = RequestMethod.GET)
+    @ResponseBody
+    @ApiOperation(value = "停止rtsp服务",notes = "停止rtsp服务")
+    public Result<Object> stopRtspService(String ip){
+        try{
+           IdenCommunity idenCommunity = idenCommunityService.queryRtspServiceUrl(ip);
+           String url = idenCommunity.getRtspServiceUrl()+"/stop?ip="+ip;
+           HttpUtil.httpGet(url);
+           return Result.success("停止视频成功");
+        }catch(Exception e){
+            e.printStackTrace();
+            return Result.error("停止视频失败");
+        }
+    }
+}

+ 1 - 1
src/main/java/com/iden/common/service/IdenCommunityService.java

@@ -10,5 +10,5 @@ import com.iden.common.entity.IdenCommunity;
  * @since 2021-12-22 17:23:45
  * @since 2021-12-22 17:23:45
  */
  */
 public interface IdenCommunityService extends IService<IdenCommunity> {
 public interface IdenCommunityService extends IService<IdenCommunity> {
-
+    IdenCommunity queryRtspServiceUrl(String ip);
 }
 }

+ 8 - 0
src/main/java/com/iden/common/service/impl/IdenCommunityServiceImpl.java

@@ -1,9 +1,11 @@
 package com.iden.common.service.impl;
 package com.iden.common.service.impl;
 
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iden.common.mapper.IdenCameraMapper;
 import com.iden.common.mapper.IdenCommunityMapper;
 import com.iden.common.mapper.IdenCommunityMapper;
 import com.iden.common.entity.IdenCommunity;
 import com.iden.common.entity.IdenCommunity;
 import com.iden.common.service.IdenCommunityService;
 import com.iden.common.service.IdenCommunityService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 /**
 /**
@@ -14,5 +16,11 @@ import org.springframework.stereotype.Service;
  */
  */
 @Service
 @Service
 public class IdenCommunityServiceImpl extends ServiceImpl<IdenCommunityMapper, IdenCommunity> implements IdenCommunityService {
 public class IdenCommunityServiceImpl extends ServiceImpl<IdenCommunityMapper, IdenCommunity> implements IdenCommunityService {
+    @Autowired
+    public IdenCommunityMapper idenCommunityMapper;
 
 
+    @Override
+    public IdenCommunity queryRtspServiceUrl(String ip) {
+        return idenCommunityMapper.queryRtspServiceUrl(ip);
+    }
 }
 }

+ 112 - 7
src/main/java/com/iden/common/util/HttpUtil.java

@@ -4,13 +4,118 @@ import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.json.JSONUtil;
-
+import com.alibaba.fastjson.JSON;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
 public class HttpUtil {
 public class HttpUtil {
-    public static JSONObject httpGet(String url) {
-        HttpResponse response = HttpRequest.get(url).execute();
-        String json = response.charset("utf-8").body();
-        JSONObject jsonObject = JSONUtil.parseObj(json);
-        return jsonObject;
-    }
+        public static JSONObject httpGet(String url) {
+            HttpResponse response = HttpRequest.get(url).execute();
+            String json = response.charset("utf-8").body();
+            JSONObject jsonObject = JSONUtil.parseObj(json);
+            return jsonObject;
+        }
+        public static String dourl(String url,Object clzz){
+            try {
+                String jsonString = JSON.toJSONString(clzz);
+                URL url1 = new URL(url);
+                HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
+                //设置允许输出
+                conn.setDoOutput(true);
+                //设置允许输入
+                conn.setDoInput(true);
+                //设置不用缓存
+                conn.setUseCaches(false);
+                conn.setRequestMethod("GET");
 
 
+                //设置传递方式
+                conn.setRequestProperty("contentType", "application/json");
+                // 设置维持长连接
+                conn.setRequestProperty("Connection", "Keep-Alive");
+                // 设置文件字符集:
+                conn.setRequestProperty("Charset", "UTF-8");
+                //开始请求
+                byte[] bytes = jsonString.toString().getBytes();
+                //写流
+                OutputStream stream = conn.getOutputStream();
+                stream.write(bytes);
+                stream.flush();
+                stream.close();
+                int resultCode=conn.getResponseCode();
+                if(conn.getResponseCode()==200){
+                    InputStream inputStream = conn.getInputStream();
+                    byte[] bytes1 = new byte[inputStream.available()];
+                    inputStream.read(bytes1);
+                    //转字符串
+                    String s = new String(bytes);
+                    System.out.println(s);
+                    return s;
+                }else {
+                    //获取响应内容
+                    int code = conn.getResponseCode();
+                    String responseMessage = conn.getResponseMessage();
+                    System.out.println(code);
+                    String s = String.valueOf(code);
+                    return "响应状态码是:"+s+"响应内容是:======="+responseMessage;
+                }
+            } catch (MalformedURLException e) {
+                e.printStackTrace();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            return null;
+        }
+    public static String doPost(String url, Object myclass) {
+        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+        HttpPost posturl = new HttpPost(url);
+        String result = null;
+        String jsonSting = JSON.toJSONString(myclass);
+        StringEntity entity = new StringEntity(jsonSting, "UTF-8");
+        posturl.setEntity(entity);
+        posturl.setHeader("Content-Type", "application/json;charset=utf8");
+        // 响应模型
+        CloseableHttpResponse response = null;
+        try {
+            // 由客户端执行(发送)Post请求
+            response = httpClient.execute(posturl);
+            // 从响应模型中获取响应实体
+            HttpEntity responseEntity = response.getEntity();
+
+            System.out.println("响应状态为:" + response.getStatusLine());
+            if (responseEntity != null) {
+                System.out.println("响应内容长度为:" + responseEntity.getContentLength());
+                System.out.println("响应内容为:" + EntityUtils.toString(responseEntity));
+                System.out.println(response);
+//              return EntityUtils.toString(responseEntity);
+            }
+        } catch (ClientProtocolException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                // 释放资源
+                if (httpClient != null) {
+                    httpClient.close();
+                }
+                if (response != null) {
+                    response.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
 }
 }

+ 5 - 3
src/main/java/com/iden/common/vo/CameraVO.java

@@ -91,14 +91,16 @@ public class CameraVO implements Serializable {
     @HeaderToColumn(header = "备注")
     @HeaderToColumn(header = "备注")
     private String remark;
     private String remark;
 
 
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @ApiModelProperty("创建时间")
     @ApiModelProperty("创建时间")
     @HeaderToColumn(header = "创建时间")
     @HeaderToColumn(header = "创建时间")
     private Date createTime;
     private Date createTime;
 
 
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @ApiModelProperty("修改时间")
     @ApiModelProperty("修改时间")
     private Date modifyTime;
     private Date modifyTime;
 
 
-
+    @ApiModelProperty("摄像机rtsp地址")
+    @HeaderToColumn(header = "摄像机rtsp地址")
+    private String rtspUrl;
 }
 }

+ 3 - 0
src/main/java/com/iden/common/vo/CommunityVO.java

@@ -1,6 +1,7 @@
 package com.iden.common.vo;
 package com.iden.common.vo;
 
 
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.iden.common.exceltool.HeaderToColumn;
 import com.iden.common.exceltool.HeaderToColumn;
@@ -83,6 +84,8 @@ public class CommunityVO implements Serializable {
     @HeaderToColumn(header = "备注")
     @HeaderToColumn(header = "备注")
     private String remark;
     private String remark;
 
 
+    @ApiModelProperty("rtsp服务url")
+    private String rtspServiceUrl;
 
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     @ApiModelProperty("创建时间")
     @ApiModelProperty("创建时间")