增加相机通道

lanzhou-qilin
LAPTOP-S9HJSOEB\昊天 2 years ago
parent d400d58bf8
commit f8cf7d33f4

@ -19,7 +19,7 @@ public class LicenseAspect {
*/ */
@Before("execution(public * com.zhehekeji..*.controller.*.*(..))") @Before("execution(public * com.zhehekeji..*.controller.*.*(..))")
public void handler(){ public void handler(){
Assert.isTrue(LPLicense.checkLic(),"未获取授权请将lp.key发送给授权人员"); //Assert.isTrue(LPLicense.checkLic(),"未获取授权请将lp.key发送给授权人员");
//Assert.isTrue(true,"未获取授权请将lp.key发送给授权人员"); //Assert.isTrue(true,"未获取授权请将lp.key发送给授权人员");
} }
} }

@ -291,7 +291,7 @@ public class CameraControlController {
public Result pic(@PathVariable Integer id) { public Result pic(@PathVariable Integer id) {
checkLogin(id); checkLogin(id);
String path = "D:\\work\\"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".jpeg"; String path = "D:\\work\\"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".jpeg";
TaskDelayExecutor.addPicDelayTask(id,path,2000L); //TaskDelayExecutor.addPicDelayTask(id,path,2000L);
return Result.success(); return Result.success();
} }
@ -318,7 +318,7 @@ public class CameraControlController {
public Result MP4(@PathVariable Integer id) { public Result MP4(@PathVariable Integer id) {
checkLogin(id); checkLogin(id);
LocalDateTime localDateTime = LocalDateTime.of(2022,7,21,8,20); LocalDateTime localDateTime = LocalDateTime.of(2022,7,21,8,20);
cameraControlModule.downloadMp4(id,"E:\\work\\"+localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".mp4", localDateTime,localDateTime.plusMinutes(3)); cameraControlModule.downloadMp4(id,"E:\\work\\"+localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".mp4", localDateTime,localDateTime.plusMinutes(3),1);
return Result.success(); return Result.success();
} }

@ -36,6 +36,10 @@ public class Camera {
private Integer rtcServerPort; private Integer rtcServerPort;
private Integer channel;
@TableField(exist = false)
private String channelString;
@ApiModelProperty(value = "预置点 增长值",hidden = true) @ApiModelProperty(value = "预置点 增长值",hidden = true)
private Integer ptzId; private Integer ptzId;

@ -106,7 +106,7 @@ public interface CameraControlModule {
boolean pic(Integer cameraId, int channel, String realPath); boolean pic(Integer cameraId, int channel, String realPath);
void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end); void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end,Integer channel);
/** /**
* *

@ -29,8 +29,9 @@ public class CameraDelayTask implements Delayed {
private long delayTime; private long delayTime;
private Integer ptzId; private Integer ptzId;
private Integer channel;
public CameraDelayTask(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime, String path, Integer type, long delayTime) { public CameraDelayTask(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime, String path, Integer type, long delayTime,Integer channel) {
this.cameraId = cameraId; this.cameraId = cameraId;
this.startTime = startTime; this.startTime = startTime;
this.endTime = endTime; this.endTime = endTime;
@ -38,6 +39,7 @@ public class CameraDelayTask implements Delayed {
this.type = type; this.type = type;
this.executeTime = System.currentTimeMillis()+delayTime; this.executeTime = System.currentTimeMillis()+delayTime;
this.delayTime = delayTime; this.delayTime = delayTime;
this.channel = channel;
} }
@Override @Override

@ -1,6 +1,7 @@
package com.zhehekeji.web.lib; package com.zhehekeji.web.lib;
import com.zhehekeji.common.util.SpringContextUtil; import com.zhehekeji.common.util.SpringContextUtil;
import com.zhehekeji.web.entity.Camera;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.concurrent.DelayQueue; import java.util.concurrent.DelayQueue;
@ -13,18 +14,18 @@ public class TaskDelayExecutor {
private static DelayQueue<CameraDelayTask> queue = new DelayQueue<>(); private static DelayQueue<CameraDelayTask> queue = new DelayQueue<>();
public static void addMp4DelayTask(Integer cameraId, String path, LocalDateTime startTime, LocalDateTime endTime, Long delayTime) { public static void addMp4DelayTask(Camera camera, String path, LocalDateTime startTime, LocalDateTime endTime, Long delayTime) {
CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, startTime, endTime,path, 0,delayTime); CameraDelayTask cameraDelayTask = new CameraDelayTask(camera.getId(), startTime, endTime,path, 0,delayTime,camera.getChannel());
queue.add(cameraDelayTask); queue.add(cameraDelayTask);
} }
public static void addPicDelayTask(Integer cameraId, String path, Long delayTime) { public static void addPicDelayTask(Camera camera, String path, Long delayTime) {
CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, null, null,path, 1,delayTime); CameraDelayTask cameraDelayTask = new CameraDelayTask(camera.getId(), null, null,path, 1,delayTime,camera.getChannel());
queue.add(cameraDelayTask); queue.add(cameraDelayTask);
} }
public static void addGyrateCameraTask(Integer cameraId, Long delayTime,Integer ptzId){ public static void addGyrateCameraTask(Camera camera, Long delayTime,Integer ptzId){
CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, null, null,null, 2,delayTime); CameraDelayTask cameraDelayTask = new CameraDelayTask(camera.getId(), null, null,null, 2,delayTime,1);
cameraDelayTask.setPtzId(ptzId); cameraDelayTask.setPtzId(ptzId);
queue.add(cameraDelayTask); queue.add(cameraDelayTask);
} }
@ -45,9 +46,9 @@ public class TaskDelayExecutor {
if(cameraDelayTask.getType() == 0){ if(cameraDelayTask.getType() == 0){
cameraControlModule.downloadMp4(cameraDelayTask.getCameraId(), cameraDelayTask.getPath(), cameraDelayTask.getStartTime(), cameraDelayTask.getEndTime()); cameraControlModule.downloadMp4(cameraDelayTask.getCameraId(), cameraDelayTask.getPath(), cameraDelayTask.getStartTime(), cameraDelayTask.getEndTime(),cameraDelayTask.getChannel());
}else if(cameraDelayTask.getType() == 1){ }else if(cameraDelayTask.getType() == 1){
cameraControlModule.pic(cameraDelayTask.getCameraId(),0, cameraDelayTask.getPath()); cameraControlModule.pic(cameraDelayTask.getCameraId(),cameraDelayTask.getChannel(), cameraDelayTask.getPath());
}else if(cameraDelayTask.getType() == 2){ }else if(cameraDelayTask.getType() == 2){
cameraControlModule.toPtz(cameraDelayTask.getPtzId(),cameraDelayTask.getCameraId()); cameraControlModule.toPtz(cameraDelayTask.getPtzId(),cameraDelayTask.getCameraId());
} }

@ -261,12 +261,12 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
return picResult; return picResult;
} }
public void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) { public void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end,Integer channel) {
/*start = start.minusMinutes(1); /*start = start.minusMinutes(1);
end = end.minusMinutes(1);*/ end = end.minusMinutes(1);*/
ConfigProperties configProperties = SpringContextUtil.getBean(ConfigProperties.class); ConfigProperties configProperties = SpringContextUtil.getBean(ConfigProperties.class);
start = start.minusNanos(configProperties.getCameraConfig().getDelayStartDownloadMp4() *10000); start = start.minusNanos(configProperties.getCameraConfig().getDelayStartDownloadMp4() *10000);
start = start.plusNanos(configProperties.getCameraConfig().getDelayEndDownloadMp4() *10000); end = start.plusNanos(configProperties.getCameraConfig().getDelayEndDownloadMp4() *10000);
PathUtil.checkDirc(path); PathUtil.checkDirc(path);
HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME(); HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME();
startTime.setTime(start.getYear(), start.getMonthValue(), start.getDayOfMonth(), start.getHour(), start.getMinute(), start.getSecond()); startTime.setTime(start.getYear(), start.getMonthValue(), start.getDayOfMonth(), start.getHour(), start.getMinute(), start.getSecond());
@ -276,7 +276,7 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
log.info("start download mp4 path:{} ,cameraId:{},start_time{}end_time:{}",path,cameraId,startTime.toStringTime(),endTime.toStringTime()); log.info("start download mp4 path:{} ,cameraId:{},start_time{}end_time:{}",path,cameraId,startTime.toStringTime(),endTime.toStringTime());
int lUserID = CameraConnMap.getConnId(cameraId).intValue(); int lUserID = CameraConnMap.getConnId(cameraId).intValue();
int result = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetFileByTime(lUserID, 1, startTime, endTime, path); int result = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetFileByTime(lUserID, channel, startTime, endTime, path);
if (result == -1) { if (result == -1) {
log.error("downloadMp4 error code:{},cameraId:{},path:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId,path); log.error("downloadMp4 error code:{},cameraId:{},path:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId,path);
} else { } else {

@ -81,7 +81,7 @@ public class CameraService {
camera.setPassword(configProperties.getCameraConfig().getCameraPassword()); camera.setPassword(configProperties.getCameraConfig().getCameraPassword());
camera.setPort(configProperties.getCameraConfig().getCameraPort()); camera.setPort(configProperties.getCameraConfig().getCameraPort());
camera.setUpdateTime(LocalDateTime.now()); camera.setUpdateTime(LocalDateTime.now());
camera.setRtsp("rtsp://"+configProperties.getCameraConfig().getCameraUser()+":"+configProperties.getCameraConfig().getCameraPassword()+"@"+camera.getIp()+":554/cam/realmonitor?channel=1&subtype=0"); camera.setRtsp(getRtsp(camera));
if(StringUtils.isEmpty(camera.getRtcServer())){ if(StringUtils.isEmpty(camera.getRtcServer())){
camera.setRtcServer("127.0.0.1"); camera.setRtcServer("127.0.0.1");
} }
@ -94,6 +94,14 @@ public class CameraService {
return camera.getId(); return camera.getId();
} }
String getRtsp(Camera camera) {
int channel = 1;
if (camera.getChannelString() != null && camera.getChannelString().startsWith("D")) {
channel = Integer.parseInt(camera.getChannelString().replace("D","")) + 31;
}
camera.setChannel(channel);
return "rtsp://"+configProperties.getCameraConfig().getCameraUser()+":"+configProperties.getCameraConfig().getCameraPassword()+"@"+camera.getIp()+":554/Streaming/Channels/"+channel+"01";
}
public void edit(Camera camera) { public void edit(Camera camera) {
camera.setUpdateTime(LocalDateTime.now()); camera.setUpdateTime(LocalDateTime.now());
@ -103,7 +111,7 @@ public class CameraService {
} }
camera.setPort(configProperties.getCameraConfig().getCameraPort()); camera.setPort(configProperties.getCameraConfig().getCameraPort());
camera.setUser(configProperties.getCameraConfig().getCameraUser()); camera.setUser(configProperties.getCameraConfig().getCameraUser());
camera.setRtsp("rtsp://"+configProperties.getCameraConfig().getCameraUser()+":"+configProperties.getCameraConfig().getCameraPassword()+"@"+camera.getIp()+":554/cam/realmonitor?channel=1&subtype=0"); camera.setRtsp(getRtsp(camera));
try { try {
cameraMapper.updateById(camera); cameraMapper.updateById(camera);
} catch (DuplicateKeyException e) { } catch (DuplicateKeyException e) {
@ -146,6 +154,9 @@ public class CameraService {
@Override @Override
public void run() { public void run() {
try { try {
if(camera.getChannel()!=null && camera.getChannel() > 30){
camera.setChannelString("D"+(camera.getChannel()-31));
}else camera.setChannelString(camera.getChannel()+"");
Boolean ok = false; Boolean ok = false;
if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA){ if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA){
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());
@ -168,11 +179,21 @@ public class CameraService {
public Camera detail(Integer id){ public Camera detail(Integer id){
return cameraMapper.selectById(id); Camera camera = cameraMapper.selectById(id);
if(camera.getChannel()!=null && camera.getChannel() > 30){
camera.setChannelString("D"+(camera.getChannel()-31));
}else camera.setChannelString(camera.getChannel()+"");
return camera;
} }
public List<Camera> allCameras(){ public List<Camera> allCameras(){
return cameraMapper.selectByMap(new HashMap<>()); List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>());
for (Camera camera :cameras){
if(camera.getChannel()!=null && camera.getChannel() > 30){
camera.setChannelString("D"+(camera.getChannel()-31));
} else camera.setChannelString(camera.getChannel()+"");
}
return cameras;
} }
public List<Camera> allCameras(int index){ public List<Camera> allCameras(int index){

@ -192,11 +192,12 @@ public class PlcService {
public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) { public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) {
String path = PathUtil.createFileName("mp4",cameraId); String path = PathUtil.createFileName("mp4",cameraId);
Camera camera = cameraService.detail(cameraId);
Thread thread = new Thread(new Runnable() { Thread thread = new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
String realPath = configProperties.getSavePath().getMp4Path() + path; String realPath = configProperties.getSavePath().getMp4Path() + path;
TaskDelayExecutor.addMp4DelayTask(cameraId,realPath,startTime,endTime,configProperties.getCameraConfig().getDelayDownloadMp4()); TaskDelayExecutor.addMp4DelayTask(camera,realPath,startTime,endTime,configProperties.getCameraConfig().getDelayDownloadMp4());
} }
}); });
thread.start(); thread.start();
@ -332,8 +333,9 @@ public class PlcService {
public String cameraCapture(Integer cameraId,Boolean delay,Long delayTime,String path) { public String cameraCapture(Integer cameraId,Boolean delay,Long delayTime,String path) {
//String path = PathUtil.createFileName("jpg",cameraId); //String path = PathUtil.createFileName("jpg",cameraId);
String realPath = configProperties.getSavePath().getMediaPath() + path; String realPath = configProperties.getSavePath().getMediaPath() + path;
Camera camera = cameraService.detail(cameraId);
if(delay){ if(delay){
TaskDelayExecutor.addPicDelayTask(cameraId,realPath,delayTime); TaskDelayExecutor.addPicDelayTask(camera,realPath,delayTime);
}else { }else {
cameraControlModule.pic(cameraId,0,realPath); cameraControlModule.pic(cameraId,0,realPath);
} }
@ -358,9 +360,10 @@ public class PlcService {
public void gyrateCameraByCodeTimeLater(Integer cameraId, String code,long times) { public void gyrateCameraByCodeTimeLater(Integer cameraId, String code,long times) {
Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId); Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId);
Camera camera = cameraService.detail(cameraId);
if (ptzId != null && ptzId >= 0) { if (ptzId != null && ptzId >= 0) {
log.info("gyrate camera by code, code{},cameraId:{},ptId:{}", code, cameraId, ptzId); log.info("gyrate camera by code, code{},cameraId:{},ptId:{}", code, cameraId, ptzId);
TaskDelayExecutor.addGyrateCameraTask(cameraId,times,ptzId); TaskDelayExecutor.addGyrateCameraTask(camera,times,ptzId);
//cameraControlModule.toPtz(ptzId,cameraId); //cameraControlModule.toPtz(ptzId,cameraId);
} else { } else {
log.error("ptz not found ,code{},cameraId:{}", code, cameraId); log.error("ptz not found ,code{},cameraId:{}", code, cameraId);

Loading…
Cancel
Save