Browse Source

视频集成

master
刘力 2 years ago
parent
commit
0f2ca674fd
  1. 106
      common/src/main/java/com/storeroom/utils/DateUtils.java
  2. 38
      storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java
  3. 9
      storeroom/src/main/java/com/storeroom/modules/device/domain/AlarmDeseCaBinetLog.java
  4. 4
      storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java
  5. 5
      storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java
  6. 14
      storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java
  7. 13
      storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java
  8. 5
      storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java
  9. 21
      storeroom/src/main/java/com/storeroom/modules/device/service/dto/CameraInfoDto.java
  10. 49
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java
  11. 12
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java
  12. 1
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NVSSDK.java
  13. 64
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/VideoClient.java
  14. 4
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/VideosTestController.java
  15. 39
      storeroom/src/test/java/test.java
  16. 11
      storeroom/src/test/java/videoTest.java

106
common/src/main/java/com/storeroom/utils/DateUtils.java

@ -1,5 +1,8 @@
package com.storeroom.utils; package com.storeroom.utils;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.*; import java.time.*;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -74,7 +77,7 @@ public class DateUtils {
* 日期 格式化 * 日期 格式化
* *
* @param localDateTime / * @param localDateTime /
* @param patten /
* @param patten /
* @return / * @return /
*/ */
public static String localDateTimeFormat(LocalDateTime localDateTime, String patten) { public static String localDateTimeFormat(LocalDateTime localDateTime, String patten) {
@ -86,7 +89,7 @@ public class DateUtils {
* 日期 格式化 * 日期 格式化
* *
* @param localDateTime / * @param localDateTime /
* @param df /
* @param df /
* @return / * @return /
*/ */
public static String localDateTimeFormat(LocalDateTime localDateTime, DateTimeFormatter df) { public static String localDateTimeFormat(LocalDateTime localDateTime, DateTimeFormatter df) {
@ -144,6 +147,16 @@ public class DateUtils {
return LocalDateTime.from(DFY_MD_HMS.parse(localDateTime)); return LocalDateTime.from(DFY_MD_HMS.parse(localDateTime));
} }
/**
* 获取当前时间戳
*/
public static String getNowTimeInMillis() {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(System.currentTimeMillis());
LocalDateTime lTime = parseLocalDateTimeFormatyMdHms(time);
return String.valueOf(getTimeStamp(lTime));
}
/** /**
* 获取当前年 * 获取当前年
* *
@ -176,14 +189,101 @@ public class DateUtils {
/** /**
* 生成表获取当前时间和时间戳 * 生成表获取当前时间和时间戳
*
* @return * @return
*/ */
public static String getNowDateTime(){
public static String getNowDateTime() {
Calendar d = Calendar.getInstance(); Calendar d = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_");
return formatter.format(d.getTime()) + d.getTimeInMillis(); return formatter.format(d.getTime()) + d.getTimeInMillis();
} }
public static String convertDate2String(Date date, String pattern) {
if (date == null)
return null;
DateFormat dateFormat = new SimpleDateFormat(pattern);
return dateFormat.format(date);
}
/**
* 根据字符串获取年
*
* @param timeString
* @return
*/
public static short getYear(String timeString) {
String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss");
return Short.parseShort(timeStr.substring(0, 4));
}
/**
* 根据字符串获取月
*
* @param timeString /
* @return /
*/
public static short getMonth(String timeString) {
String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss");
return Short.parseShort(timeStr.substring(5, 7));
}
/**
* 根据字符串获取日
*
* @param timeString /
* @return /
*/
public static short getDay(String timeString) {
String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss");
return Short.parseShort(timeStr.substring(8, 10));
}
/**
* 获取小时
*
* @param timeString /
* @return /
*/
public static short getHour(String timeString) {
String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss");
return Short.parseShort(timeStr.substring(11, 13));
}
/**
* 根据字符串获取分
*
* @param timeString /
* @return /
*/
public static short getMinute(String timeString) {
String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss");
return Short.parseShort(timeStr.substring(14, 16));
}
/**
* 根据字符串获取秒
*
* @param timeString /
* @return /
*/
public static short getSecond(String timeString) {
String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss");
return Short.parseShort(timeStr.substring(17, 19));
}
public static Date parseTimeString2Date(String timeString) {
if ((timeString == null) || (timeString.equals(""))) {
return null;
}
Date date = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
date = new Date(dateFormat.parse(timeString).getTime());
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
} }

38
storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java

@ -7,13 +7,16 @@ import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.annotaion.rest.AnonymousPostMapping; import com.storeroom.annotaion.rest.AnonymousPostMapping;
import com.storeroom.exception.BaseException; import com.storeroom.exception.BaseException;
import com.storeroom.modules.device.domain.AlarmDeseCaBinetLog; import com.storeroom.modules.device.domain.AlarmDeseCaBinetLog;
import com.storeroom.modules.device.domain.CameraInfo;
import com.storeroom.modules.device.domain.DeviceCamerBind;
import com.storeroom.modules.device.domain.DeviceInfo; import com.storeroom.modules.device.domain.DeviceInfo;
import com.storeroom.modules.device.service.ArchivesCasesService;
import com.storeroom.modules.device.service.DeviceService;
import com.storeroom.modules.device.service.OperatingStateService;
import com.storeroom.modules.device.service.*;
import com.storeroom.modules.device.service.dto.CameraInfoDto;
import com.storeroom.modules.storeroom3d.service.AlarmInfoService; import com.storeroom.modules.storeroom3d.service.AlarmInfoService;
import com.storeroom.modules.storeroom3d.service.ThirdApiService; import com.storeroom.modules.storeroom3d.service.ThirdApiService;
import com.storeroom.utils.ApiResponse; import com.storeroom.utils.ApiResponse;
import com.storeroom.utils.DateUtils;
import com.storeroom.utils.NanoIdUtils;
import com.storeroom.utils.StringUtils; import com.storeroom.utils.StringUtils;
import com.storeroom.utils.enums.ResponseStatus; import com.storeroom.utils.enums.ResponseStatus;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -26,10 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@ -42,6 +42,9 @@ public class DeviceController {
private final ArchivesCasesService archivesCaseService; private final ArchivesCasesService archivesCaseService;
private final AlarmInfoService alarmInfoService; private final AlarmInfoService alarmInfoService;
private final ThirdApiService thirdApiService; private final ThirdApiService thirdApiService;
private final CameraInfoService cameraInfoService;
private final DeviceCamerBindService deviceCamerBindService;
@ApiOperation("获取所有设备") @ApiOperation("获取所有设备")
@AnonymousGetMapping("all") @AnonymousGetMapping("all")
@ -149,8 +152,27 @@ public class DeviceController {
@ApiOperation("第三方对接-上传密集架报警信息") @ApiOperation("第三方对接-上传密集架报警信息")
@AnonymousPostMapping("log") @AnonymousPostMapping("log")
public Object deseCabinetAlarmLog(@RequestBody AlarmDeseCaBinetLog alarmDeseCaBinetLog) { public Object deseCabinetAlarmLog(@RequestBody AlarmDeseCaBinetLog alarmDeseCaBinetLog) {
if (StringUtils.isEmpty(alarmDeseCaBinetLog.getI64Ts())) {
alarmDeseCaBinetLog.setI64Ts(DateUtils.getNowTimeInMillis());
}
deviceService.upLoadAlarmLog(alarmDeseCaBinetLog); deviceService.upLoadAlarmLog(alarmDeseCaBinetLog);
//只记录报警日志下载视频操作开架视频下载由自己接口提供
if (alarmDeseCaBinetLog.getUsLevel() == 1) {
List<CameraInfo> cameraInfoDto = new ArrayList<>();
List<DeviceCamerBind> list = deviceCamerBindService.queryStoreroomCode(alarmDeseCaBinetLog.getStoreCode());
list.forEach(item -> {
CameraInfo cameraInfo = new CameraInfo();
cameraInfo.setId(NanoIdUtils.randomNanoId());
cameraInfo.setDeviceCamerBindId(item);
cameraInfo.setDescription(alarmDeseCaBinetLog.getCContext());
cameraInfo.setEvent("密集架报警");
cameraInfo.setDownloadLink("");
deviceCamerBindService.downloadVideo(alarmDeseCaBinetLog.getI64Ts(), item.getDeviceInfoId(), item.getId());
});
}
Map<String, Object> objectMap = new HashMap<>(); Map<String, Object> objectMap = new HashMap<>();
objectMap.put("code", ""); objectMap.put("code", "");
objectMap.put("errorinfo", ""); objectMap.put("errorinfo", "");

9
storeroom/src/main/java/com/storeroom/modules/device/domain/AlarmDeseCaBinetLog.java

@ -1,6 +1,7 @@
package com.storeroom.modules.device.domain; package com.storeroom.modules.device.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.storeroom.base.BaseEntity; import com.storeroom.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
@ -30,27 +31,29 @@ public class AlarmDeseCaBinetLog implements Serializable {
private String storeCode; private String storeCode;
@Column(name = "qu_No") @Column(name = "qu_No")
@JsonProperty("QuNo")
@ApiModelProperty(value = "区号") @ApiModelProperty(value = "区号")
private String QuNo; private String QuNo;
@Column(name = "ui_log_id") @Column(name = "ui_log_id")
@ApiModelProperty(value = "0") @ApiModelProperty(value = "0")
private String uiLogID;
private Integer uiLogID;
@Column(name = "us_log_type") @Column(name = "us_log_type")
@ApiModelProperty(value = "1") @ApiModelProperty(value = "1")
private String usLogType;
private Integer usLogType;
@Column(name = "us_level") @Column(name = "us_level")
@ApiModelProperty(value = "等级:0为操作 1 为报警") @ApiModelProperty(value = "等级:0为操作 1 为报警")
private String usLevel;
private Integer usLevel;
@Column(name = "i64Ts") @Column(name = "i64Ts")
@ApiModelProperty(value = "时间戳") @ApiModelProperty(value = "时间戳")
private String i64Ts; private String i64Ts;
@Column(name = "c_context") @Column(name = "c_context")
@JsonProperty("cContext")
@ApiModelProperty(value = "日志信息") @ApiModelProperty(value = "日志信息")
private String cContext; private String cContext;

4
storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java

@ -32,6 +32,10 @@ public class DeviceCamerBind extends BaseEntity implements Serializable {
@ApiModelProperty(value = "库房名称") @ApiModelProperty(value = "库房名称")
private String storeroomName; private String storeroomName;
@Column(name = "storeroom_code")
@ApiModelProperty(value = "库房代码")
private String storeroomCode;
@Column(name = "device_name") @Column(name = "device_name")
@ApiModelProperty(value = "设备名称") @ApiModelProperty(value = "设备名称")
private String deviceName; private String deviceName;

5
storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java

@ -136,10 +136,7 @@ public class DeviceInfo extends BaseEntity implements Serializable {
@ApiModelProperty(value = "是否回调") @ApiModelProperty(value = "是否回调")
private OperatingState isCallback; private OperatingState isCallback;
// @JSONField(serialize = false)
// @ManyToMany(mappedBy = "deviceInfo")
// @ApiModelProperty(value = "3D库房显示配置")
// private Set<DisplayConfig> displayConfig;
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {

14
storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java

@ -4,10 +4,13 @@ import com.storeroom.modules.device.domain.DeviceCamerBind;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface DeviceCamerBindRepository extends JpaRepository<DeviceCamerBind,String>, JpaSpecificationExecutor<DeviceCamerBind> {
import java.util.List;
public interface DeviceCamerBindRepository extends JpaRepository<DeviceCamerBind, String>, JpaSpecificationExecutor<DeviceCamerBind> {
/** /**
* 获取绑定数量 * 获取绑定数量
*
* @param deviceInfoId 获取设备id * @param deviceInfoId 获取设备id
* @return / * @return /
*/ */
@ -16,8 +19,17 @@ public interface DeviceCamerBindRepository extends JpaRepository<DeviceCamerBind
/** /**
* 根据设备id 查询绑定情况 * 根据设备id 查询绑定情况
*
* @param deviceInfoId * @param deviceInfoId
* @return * @return
*/ */
DeviceCamerBind findByDeviceInfoId(String deviceInfoId); DeviceCamerBind findByDeviceInfoId(String deviceInfoId);
/**
* 查询库房代码
* @param storeroomCode
* @return
*/
List<DeviceCamerBind> findByStoreroomCode(String storeroomCode);
} }

13
storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java

@ -36,4 +36,17 @@ public interface DeviceCamerBindService {
* @param id * @param id
*/ */
void deleteBind(Set<String> id); void deleteBind(Set<String> id);
/**
* 通过库房名称查询
* @return
*/
List<DeviceCamerBind> queryStoreroomCode(String StoreroomCode);
/**
* 根据时间下载
* @param time 时间戳
* @return
*/
String downloadVideo(String time,String deviceInfoId,String deviceCamerBindId);
} }

5
storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java

@ -4,11 +4,14 @@ package com.storeroom.modules.device.service;
import com.storeroom.modules.device.service.dto.VideoMonitoringCrieria; import com.storeroom.modules.device.service.dto.VideoMonitoringCrieria;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import java.sql.Timestamp;
public interface VideoMonitoringService { public interface VideoMonitoringService {
/** /**
* 获取视频监控列表 * 获取视频监控列表
*
* @param crieria * @param crieria
* @param pageable * @param pageable
* @return * @return
@ -16,4 +19,6 @@ public interface VideoMonitoringService {
Object queryAll(VideoMonitoringCrieria crieria, Pageable pageable); Object queryAll(VideoMonitoringCrieria crieria, Pageable pageable);
} }

21
storeroom/src/main/java/com/storeroom/modules/device/service/dto/CameraInfoDto.java

@ -1,5 +1,24 @@
package com.storeroom.modules.device.service.dto; package com.storeroom.modules.device.service.dto;
public class CameraInfoDto {
import com.storeroom.base.BaseDTO;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
public class CameraInfoDto extends BaseDTO implements Serializable {
private String id;
private String deviceCamerBindId;
private String description;
private String event;
private String downloadLink;
} }

49
storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java

@ -7,16 +7,17 @@ import com.storeroom.modules.device.repository.DeviceCamerBindRepository;
import com.storeroom.modules.device.repository.DeviceInfoRepository; import com.storeroom.modules.device.repository.DeviceInfoRepository;
import com.storeroom.modules.device.service.DeviceCamerBindService; import com.storeroom.modules.device.service.DeviceCamerBindService;
import com.storeroom.modules.device.service.dto.DeviceCamerBindCrieria; import com.storeroom.modules.device.service.dto.DeviceCamerBindCrieria;
import com.storeroom.utils.NanoIdUtils;
import com.storeroom.utils.PageUtil;
import com.storeroom.utils.QueryHelp;
import com.storeroom.modules.storeroom3d.config.common.VideoClient;
import com.storeroom.utils.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -68,4 +69,46 @@ public class DeviceCamerBindImpl implements DeviceCamerBindService {
public void deleteBind(Set<String> id) { public void deleteBind(Set<String> id) {
deviceCamerBindRepository.deleteAllById(id); deviceCamerBindRepository.deleteAllById(id);
} }
@Override
public List<DeviceCamerBind> queryStoreroomCode(String storeroomCode) {
return deviceCamerBindRepository.findByStoreroomCode(storeroomCode);
}
@Override
public String downloadVideo(String time, String deviceInfoId, String deviceCamerBindId) {
Long times = Long.valueOf(time);
LocalDateTime timestamp = DateUtils.fromTimeStamp(times);
//查询设备获取设备ip 端口号账号密码
DeviceInfo deviceInfo = deviceInfoRepository.findById(deviceInfoId).orElseGet(DeviceInfo::new);
//判断不为空
if (!ObjectUtils.isEmpty(deviceInfo) && !StringUtils.isEmpty(deviceInfo.getDeviceIp()) && !ObjectUtils.isEmpty(deviceInfo.getDevicePort()) && !StringUtils.isEmpty(deviceInfo.getDeviceAccount()) && !StringUtils.isEmpty(deviceInfo.getDevicePassword())) {
//查询绑定设备设定的视频时间
DeviceCamerBind deviceCamerBind = deviceCamerBindRepository.findById(deviceCamerBindId).orElseGet(DeviceCamerBind::new);
//时间转换
Long timeSize = Long.valueOf(deviceCamerBind.getTimeSize());
//开始时间 减时间为开始时间
LocalDateTime startTime = timestamp.minusSeconds(timeSize);
String strStartTime = DateUtils.localDateTimeFormatyMdHms(startTime);
//结束时间 加时间为结束时间
LocalDateTime endTime = timestamp.plusSeconds(timeSize);
String strEndTime = DateUtils.localDateTimeFormatyMdHms(endTime);
VideoClient videoClient = new VideoClient();
int result = videoClient.LogonDevice(deviceInfo.getDeviceIp(), deviceInfo.getDevicePort(), deviceInfo.getDeviceAccount(), deviceInfo.getDevicePassword());
if (result == 0) {
String i = deviceInfo.getVideoRoute();
videoClient.PlaybackByTimespanMode(strStartTime, strEndTime, Integer.parseInt(deviceInfo.getVideoRoute()));
return "成功";
}
throw new BaseException("无法连接该设备");
}
return "失败";
}
} }

12
storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java

@ -1,9 +1,14 @@
package com.storeroom.modules.device.service.impl; package com.storeroom.modules.device.service.impl;
import com.storeroom.modules.device.domain.DeviceCamerBind;
import com.storeroom.modules.device.domain.DeviceInfo;
import com.storeroom.modules.device.domain.VideoMonitoring; import com.storeroom.modules.device.domain.VideoMonitoring;
import com.storeroom.modules.device.repository.DeviceInfoRepository;
import com.storeroom.modules.device.repository.VideoMonitoringRepository; import com.storeroom.modules.device.repository.VideoMonitoringRepository;
import com.storeroom.modules.device.service.VideoMonitoringService; import com.storeroom.modules.device.service.VideoMonitoringService;
import com.storeroom.modules.device.service.dto.VideoMonitoringCrieria; import com.storeroom.modules.device.service.dto.VideoMonitoringCrieria;
import com.storeroom.modules.storeroom3d.config.common.VideoClient;
import com.storeroom.utils.DateUtils;
import com.storeroom.utils.PageUtil; import com.storeroom.utils.PageUtil;
import com.storeroom.utils.QueryHelp; import com.storeroom.utils.QueryHelp;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -11,6 +16,8 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -19,9 +26,14 @@ public class VideoMonitoringImpl implements VideoMonitoringService {
private final VideoMonitoringRepository videoMonitoringRepository; private final VideoMonitoringRepository videoMonitoringRepository;
@Override @Override
public Object queryAll(VideoMonitoringCrieria crieria, Pageable pageable) { public Object queryAll(VideoMonitoringCrieria crieria, Pageable pageable) {
Page<VideoMonitoring> page = videoMonitoringRepository.findAll((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, crieria, criteriaBuilder), pageable); Page<VideoMonitoring> page = videoMonitoringRepository.findAll((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, crieria, criteriaBuilder), pageable);
return PageUtil.toPage(page); return PageUtil.toPage(page);
} }
} }

1
storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NVSSDK.java

@ -8,7 +8,6 @@ import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.StdCallLibrary; import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.Structure.ByValue; import com.sun.jna.Structure.ByValue;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;

64
storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/VideoClient.java

@ -1,9 +1,11 @@
package com.storeroom.modules.storeroom3d.config.common; package com.storeroom.modules.storeroom3d.config.common;
import com.storeroom.exception.BaseException;
import com.storeroom.modules.storeroom3d.config.common.NVSSDK.DOWNLOAD_TIMESPAN; import com.storeroom.modules.storeroom3d.config.common.NVSSDK.DOWNLOAD_TIMESPAN;
import com.storeroom.modules.storeroom3d.config.common.NVSSDK.RAWFRAME_INFO; import com.storeroom.modules.storeroom3d.config.common.NVSSDK.RAWFRAME_INFO;
import com.storeroom.modules.storeroom3d.config.common.NVSSDK.*; import com.storeroom.modules.storeroom3d.config.common.NVSSDK.*;
import com.storeroom.utils.DateUtils;
import com.sun.jna.Pointer; import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference; import com.sun.jna.ptr.IntByReference;
@ -17,7 +19,7 @@ public class VideoClient {
int m_iConnectID = -1; int m_iConnectID = -1;
int m_iTotalCount = 0; int m_iTotalCount = 0;
int m_iCurrentCount = 0; int m_iCurrentCount = 0;
String[] suffix = {".sdv", ".mp4", "", ".ps", "", "", ".ts"};
String[] suffix = {".sdv", "", "", ".ps", "", "", ".ts"};
public void LogonNotify(String strIP, String strID, int iLogonID, int iLogonState) { public void LogonNotify(String strIP, String strID, int iLogonID, int iLogonState) {
String strMsg = new String(); String strMsg = new String();
@ -55,7 +57,6 @@ public class VideoClient {
} }
NVSSDK.ALARM_NOTIFY cbkAlarm = new NVSSDK.ALARM_NOTIFY() { NVSSDK.ALARM_NOTIFY cbkAlarm = new NVSSDK.ALARM_NOTIFY() {
public void AlarmNotify(int _iLogonID, int _iChannel, public void AlarmNotify(int _iLogonID, int _iChannel,
int _iAlarmState, int _iAlarmType, Pointer _pUserData) { int _iAlarmState, int _iAlarmType, Pointer _pUserData) {
@ -123,24 +124,25 @@ public class VideoClient {
break; break;
} }
case NVSSDK.WCM_DWONLOAD_FAULT: { case NVSSDK.WCM_DWONLOAD_FAULT: {
System.out.println("MainNotify:WCM_DWONLOAD_FAULT!下载失败!");
// System.out.println("MainNotify:WCM_DWONLOAD_FAULT!下载失败!");
if (null == lParam) { if (null == lParam) {
m_iConnectID = 0; m_iConnectID = 0;
} else { } else {
m_iConnectID = (int) lParam.nativeValue(lParam); m_iConnectID = (int) lParam.nativeValue(lParam);
} }
NetClient.NetFileStopDownloadFile(m_iConnectID); NetClient.NetFileStopDownloadFile(m_iConnectID);
break;
throw new BaseException("MainNotify:WCM_DWONLOAD_FAULT!下载失败!");
} }
case NVSSDK.WCM_DOWNLOAD_INTERRUPT: { case NVSSDK.WCM_DOWNLOAD_INTERRUPT: {
System.out.println("MainNotify:WCM_DOWNLOAD_INTERRUPT!下载中断!");
if (null == lParam) { if (null == lParam) {
m_iConnectID = 0; m_iConnectID = 0;
} else { } else {
m_iConnectID = (int) lParam.nativeValue(lParam); m_iConnectID = (int) lParam.nativeValue(lParam);
} }
NetClient.NetFileStopDownloadFile(m_iConnectID); NetClient.NetFileStopDownloadFile(m_iConnectID);
break;
throw new BaseException("MainNotify:WCM_DOWNLOAD_INTERRUPT!下载中断!");
} }
default: default:
break; break;
@ -177,7 +179,6 @@ public class VideoClient {
VideoClient tPlayback = new VideoClient(); VideoClient tPlayback = new VideoClient();
tPlayback.SDKInit(); //初始化SDK tPlayback.SDKInit(); //初始化SDK
// Scanner scanInput = new Scanner(System.in);
System.out.println("Logon" + strIP + ":" + iPort + "-" + strUserName + "-" + strUserPwd); System.out.println("Logon" + strIP + ":" + iPort + "-" + strUserName + "-" + strUserPwd);
while (true) { while (true) {
m_iLogonID = NetClient.Logon("", strIP, strUserName, strUserPwd, "", iPort); m_iLogonID = NetClient.Logon("", strIP, strUserName, strUserPwd, "", iPort);
@ -185,15 +186,15 @@ public class VideoClient {
if (iLogonStatus == NVSSDK.LOGON_SUCCESS) { if (iLogonStatus == NVSSDK.LOGON_SUCCESS) {
break; break;
} }
tPlayback.PlaybackByTimespanMode();
// tPlayback.PlaybackByTimespanMode(startTime, endTime);
try { try {
Thread.currentThread(); Thread.currentThread();
Thread.sleep(1000); Thread.sleep(1000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
System.err.println("Interrupted"); System.err.println("Interrupted");
} }
}
}
return 0; return 0;
} }
@ -270,33 +271,39 @@ public class VideoClient {
} }
public int PlaybackByTimespanMode() {
public int PlaybackByTimespanMode(String startTime, String endTime, int iChannelNO) {
DOWNLOAD_TIMESPAN tDownloadTimeSpan = new DOWNLOAD_TIMESPAN(); DOWNLOAD_TIMESPAN tDownloadTimeSpan = new DOWNLOAD_TIMESPAN();
tDownloadTimeSpan.m_iSize = tDownloadTimeSpan.size(); tDownloadTimeSpan.m_iSize = tDownloadTimeSpan.size();
//Scanner scanInput = new Scanner(System.in); //Scanner scanInput = new Scanner(System.in);
System.out.print("请输入录像文件类型(sdv=0;PS=3;TS=6):");
int iSaveFileType = 1; //scanInput.nextInt();
//System.out.print("请输入录像文件类型(sdv=0;PS=3;TS=6):");
int iSaveFileType = 6;
tDownloadTimeSpan.m_iSaveFileType = iSaveFileType; tDownloadTimeSpan.m_iSaveFileType = iSaveFileType;
tDownloadTimeSpan.m_iFileFlag = 0; //0:Download multiple files 1:Download into a single file tDownloadTimeSpan.m_iFileFlag = 0; //0:Download multiple files 1:Download into a single file
String strLocalSaveFileName = new String("myTimespanDownload" + suffix[iSaveFileType]);
//判断文件夹是否存在
File file = new File("videos/");
if (!file.exists() && !file.isDirectory()) {
file.mkdirs();
}
String strLocalSaveFileName = new String(file + "/" + DateUtils.getNowTimeInMillis() + "" + suffix[iSaveFileType]);
tDownloadTimeSpan.m_cLocalFilename = strLocalSaveFileName.getBytes(); tDownloadTimeSpan.m_cLocalFilename = strLocalSaveFileName.getBytes();
tDownloadTimeSpan.m_iChannelNO = 0; //通道号按实际下载的设备通道号赋值
tDownloadTimeSpan.m_iChannelNO = iChannelNO; //通道号按实际下载的设备通道号赋值
tDownloadTimeSpan.m_iStreamNo = 0; //码流号0-主码流1-副码流 tDownloadTimeSpan.m_iStreamNo = 0; //码流号0-主码流1-副码流
//按时间段下载开始时间 //按时间段下载开始时间
tDownloadTimeSpan.m_tTimeBegin.iYear = 2022;
tDownloadTimeSpan.m_tTimeBegin.iMonth = 8;
tDownloadTimeSpan.m_tTimeBegin.iDay = 24;
tDownloadTimeSpan.m_tTimeBegin.iHour = 0;
tDownloadTimeSpan.m_tTimeBegin.iMinute = 0;
tDownloadTimeSpan.m_tTimeBegin.iSecond = 0;
tDownloadTimeSpan.m_tTimeBegin.iYear = DateUtils.getYear(startTime);
tDownloadTimeSpan.m_tTimeBegin.iMonth = DateUtils.getMonth(startTime);
tDownloadTimeSpan.m_tTimeBegin.iDay = DateUtils.getDay(startTime);
tDownloadTimeSpan.m_tTimeBegin.iHour = DateUtils.getHour(startTime);
tDownloadTimeSpan.m_tTimeBegin.iMinute = DateUtils.getMinute(startTime);
tDownloadTimeSpan.m_tTimeBegin.iSecond = DateUtils.getSecond(startTime);
//按时间段下载结束时间 //按时间段下载结束时间
tDownloadTimeSpan.m_tTimeEnd.iYear = 2022;
tDownloadTimeSpan.m_tTimeEnd.iMonth = 8;
tDownloadTimeSpan.m_tTimeEnd.iDay = 24;
tDownloadTimeSpan.m_tTimeEnd.iHour = 0;
tDownloadTimeSpan.m_tTimeEnd.iMinute = 5;
tDownloadTimeSpan.m_tTimeEnd.iSecond = 0;
tDownloadTimeSpan.m_tTimeEnd.iYear = DateUtils.getYear(endTime);
tDownloadTimeSpan.m_tTimeEnd.iMonth = DateUtils.getMonth(endTime);
tDownloadTimeSpan.m_tTimeEnd.iDay = DateUtils.getDay(endTime);
tDownloadTimeSpan.m_tTimeEnd.iHour = DateUtils.getHour(endTime);
tDownloadTimeSpan.m_tTimeEnd.iMinute = DateUtils.getMinute(endTime);
tDownloadTimeSpan.m_tTimeEnd.iSecond = DateUtils.getSecond(endTime);
tDownloadTimeSpan.m_iPosition = -1; //定位功能使用 tDownloadTimeSpan.m_iPosition = -1; //定位功能使用
tDownloadTimeSpan.m_iSpeed = 32; //下载速度最大32老设备按最大速度下载容易出现中断因此下载成功后可将速度调成16倍速 tDownloadTimeSpan.m_iSpeed = 32; //下载速度最大32老设备按最大速度下载容易出现中断因此下载成功后可将速度调成16倍速
@ -307,7 +314,8 @@ public class VideoClient {
if (0 == iRet) { if (0 == iRet) {
//设置裸流回调在回调里接收音视频裸流数据 //设置裸流回调在回调里接收音视频裸流数据
m_iConnectID = iConnID.getValue(); m_iConnectID = iConnID.getValue();
NetClient.SetRawFrameCallBack(m_iConnectID, cbkRawFrame, null);
//屏蔽下载无损格式视频
//NetClient.SetRawFrameCallBack(m_iConnectID, cbkRawFrame, null);
//调整速度 //调整速度
NVSSDK.DOWNLOAD_CONTROL tControl = new NVSSDK.DOWNLOAD_CONTROL(); NVSSDK.DOWNLOAD_CONTROL tControl = new NVSSDK.DOWNLOAD_CONTROL();
tControl.m_iSize = tControl.size(); tControl.m_iSize = tControl.size();

4
storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/VideosTestController.java

@ -21,8 +21,8 @@ public class VideosTestController {
@ApiOperation("测试") @ApiOperation("测试")
@AnonymousGetMapping("ok") @AnonymousGetMapping("ok")
public ApiResponse<Object> ok() { public ApiResponse<Object> ok() {
VideoClient videoClient = new VideoClient();
videoClient.LogonDevice("192.168.99.21", 3000, "admin", "yxk63603325");
// VideoClient videoClient = new VideoClient();
//videoClient.LogonDevice("192.168.99.21", 3000, "admin", "yxk63603325");
return ApiResponse.success(ResponseStatus.SUCCESS); return ApiResponse.success(ResponseStatus.SUCCESS);
} }
} }

39
storeroom/src/test/java/test.java

@ -1,8 +1,9 @@
import com.storeroom.utils.DateUtils;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
public class test { public class test {
@ -28,11 +29,11 @@ public class test {
} }
@Test @Test
public void testArrayList(){
public void testArrayList() {
Integer[] array1 = {1, 2, 3}; Integer[] array1 = {1, 2, 3};
Integer[] array2 = {1, 2, 3, 4,44};
Integer[] array2 = {1, 2, 3, 4, 44};
List<Integer> list = compare(array1,array2);
List<Integer> list = compare(array1, array2);
for (Integer integer : list) { for (Integer integer : list) {
System.out.println(integer); System.out.println(integer);
} }
@ -48,4 +49,30 @@ public class test {
} }
return list2; return list2;
} }
@Test
public void timesTest() {
long time = 1661914260;
LocalDateTime s = DateUtils.fromTimeStamp(time);
String times = DateUtils.localDateTimeFormatyMdHms(s);
Short yeard = DateUtils.getYear(times);
System.out.println(yeard);
}
@Test
public void timesAdd() {
long time = 1661914260;
LocalDateTime s = DateUtils.fromTimeStamp(time);
Calendar now = Calendar.getInstance();
Long a = now.getTimeInMillis();
String times = DateUtils.localDateTimeFormatyMdHms(s);
System.out.println(times);
System.out.println(s.plusSeconds(20));
System.out.println(a);
System.out.println(now.getTimeInMillis());
}
} }

11
storeroom/src/test/java/videoTest.java

@ -1,4 +1,5 @@
import com.storeroom.modules.storeroom3d.config.common.VideoClient; import com.storeroom.modules.storeroom3d.config.common.VideoClient;
import com.storeroom.utils.DateUtils;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
public class videoTest { public class videoTest {
@ -6,7 +7,13 @@ public class videoTest {
@Test @Test
public void loginVideo() { public void loginVideo() {
VideoClient videoClient = new VideoClient();
videoClient.LogonDevice("192.168.99.21",3000,"admin","yxk63603325");
// VideoClient videoClient = new VideoClient();
//videoClient.LogonDevice("192.168.99.21",3000,"admin","yxk63603325");
}
@Test
public void getTime() {
String time = DateUtils.getNowTimeInMillis();
System.out.println(time);
} }
} }
Loading…
Cancel
Save