海康mp4下载的问题

merge-requests/5/merge
Your Name 4 years ago
parent 15ddeaf852
commit 0c357e5f37

@ -51,6 +51,8 @@ public class ConfigProperties {
private Long delayCaptureTime;
private Long delayDownloadMp4;
}
@Data

@ -260,36 +260,19 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
start = start.minusMinutes(1);
end = end.minusMinutes(1);
PathUtil.checkDirc(path);
Duration duration = Duration.between(start, end);
Long seconds = duration.getSeconds();
long timeDiff = 90 - seconds;
if(timeDiff > 0){
//海康录像时间短会下载失败
start = start.minusSeconds(timeDiff);
}
HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME();
startTime.setTime(start.getYear(), start.getMonthValue(), start.getDayOfMonth(), start.getHour(), start.getMinute(), start.getSecond());
HCNetSDK.NET_DVR_TIME endTime = new HCNetSDK.NET_DVR_TIME();
endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond());
// HCNetSDK.NET_DVR_PLAYCOND struDownloadCond = new HCNetSDK.NET_DVR_PLAYCOND();
// struDownloadCond.dwChannel = 1;
// struDownloadCond.struStartTime = startTime;
// struDownloadCond.struStopTime = endTime;
// struDownloadCond.write();
log.info("start download mp4 path:{} ,cameraId:{},start_time{}end_time:{}",path,cameraId,startTime.toStringTime(),endTime.toStringTime());
int lUserID = CameraConnMap.getConnId(cameraId).intValue();
//int result = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetFileByTime_V40(lUserID,path.getBytes(),struDownloadCond);
int result = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetFileByTime(lUserID, 1, startTime, endTime, path);
if (result == -1) {
log.error("downloadMp4 error code:{},cameraId:{},path:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId,path);
} else {
HikLoginModuleImpl.hcNetsdk.NET_DVR_PlayBackControl(result, HikLoginModuleImpl.hcNetsdk.NET_DVR_PLAYSTART,0,null);
/*if(!ok){
log.error("downloadMp4 error code:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId);
}*/
Timer downloadtimer = new Timer();
downloadtimer.schedule(new DownloadTask(result,downloadtimer,path,cameraId), 0, 5000);
}
@ -325,11 +308,11 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
HikLoginModuleImpl.hcNetsdk.NET_DVR_StopGetFile(handler);
//ffmpeg转码
log.info("download over,cameraId:{}",cameraId);
/*String ffmpegFile = path+"ffmpeg.mp4";
String ffmpegFile = path+"ffmpeg.mp4";
convetor(path,ffmpegFile);
PathUtil.deleteFile(path);
File file = new File(ffmpegFile);
file.renameTo(new File(path));*/
file.renameTo(new File(path));
}else {
log.debug("cameraId:{},progress:{}",cameraId,nPos.getValue());
}

@ -12,12 +12,16 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class HikLoginModuleImpl implements CameraControlLoginModule {
public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;
public static HCNetSDK hcNetsdk = HCNetSDK.INSTANCE;
private static int MAX_RECONNET_TIME = 100;
private static boolean hasInit = Boolean.FALSE;
static HikExceptionCallBack hikExceptionCallBack = new HikExceptionCallBack();
/**
@ -30,13 +34,16 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
public boolean init() {
//public static boolean init(NetSDKLib.fDisConnect disConnect, NetSDKLib.fHaveReConnect haveReConnect) {
Pointer pointer = null;
Boolean bInit = hcNetsdk.NET_DVR_Init();
if(!bInit) {
log.error("hik Initialize SDK failed");
return false;
if(!hasInit){
Boolean ok = hcNetsdk.NET_DVR_Init();
if(!ok){
log.error("hik Initialize SDK failed");
return false;
}
hasInit = Boolean.TRUE;
}
Boolean ok = hcNetsdk.NET_DVR_SetExceptionCallBack_V30(0,0,hikExceptionCallBack,pointer);
if(!ok){
log.error("hik callback config error");
@ -81,7 +88,11 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
m_strLoginInfo.write();
HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息
int m_lUserID = hcNetsdk.NET_DVR_Login_V30(m_strIp,(short) m_nPort,m_strUser,m_strPassword,m_strDeviceInfo30);
int m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo);
int lChannel = 2;
//byStartDChan为IP通道起始通道号, 预览回放NVR的IP通道时需要根据起始通道号进行取值
int tryTimes = 0;
while(m_lUserID < 0 && tryTimes < MAX_RECONNET_TIME){
log.error("hik login error,ip:{},port:{},errorCode:{}",m_strIp,m_nPort,hcNetsdk.NET_DVR_GetLastError());
@ -90,11 +101,14 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
} catch (InterruptedException e) {
e.printStackTrace();
}
m_lUserID = hcNetsdk.NET_DVR_Login_V30(m_strIp,(short) m_nPort,m_strUser,m_strPassword,m_strDeviceInfo30);
m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo);
tryTimes ++;
}
if(m_lUserID >= 0){
log.info("hik login success");
//此id是用来保存视频的 且id不是固定的
int lDChannel = (int)m_strDeviceInfo.struDeviceV30.byStartDChan + lChannel -1;
return new NetSDKLib.LLong(m_lUserID);
}else {
return null;

@ -86,6 +86,7 @@ public class CameraService {
if(StringUtils.isEmpty(camera.getRtcServer())){
camera.setRtcServer("127.0.0.1");
}
camera.setRtsp("rtsp://"+configProperties.getCameraConfig().getCameraUser()+":"+configProperties.getCameraConfig().getCameraPassword()+"@"+camera.getIp()+":554/cam/realmonitor?channel=1&subtype=0");
try {
cameraMapper.updateById(camera);
} catch (DuplicateKeyException e) {

@ -43,6 +43,7 @@ public class OrderService {
orders.forEach(orderVO -> {
if (streetMap.get(orderVO.getStreetId()) != null) {
orderVO.setStreetName(streetMap.get(orderVO.getStreetId()).getName());
}
//计算订单的时间
@ -80,6 +81,7 @@ public class OrderService {
public String location(OrderVO orderVO,Street street){
//from to 模型
if (orderVO.getInOut1() != null && orderVO.getInOut2() != null) {
//左右货架 货位号
//库内转库内 看 to

@ -179,7 +179,7 @@ public class PlcService {
@Override
public void run() {
String realPath = configProperties.getSavePath().getMp4Path() + path;
TaskDelayExecutor.addMp4DelayTask(cameraId,realPath,startTime,endTime,12000L);
TaskDelayExecutor.addMp4DelayTask(cameraId,realPath,startTime,endTime,configProperties.getCameraConfig().getDelayDownloadMp4());
}
});
thread.start();

@ -30,11 +30,14 @@ cameraConfig:
cameraType: 1
cameraPassword: a1234567
cameraUser: admin
# ------海康默认是8000 中威是37777
cameraPort: 37777
#相机抓图延迟 毫秒
delayCaptureTime: 2000
#OCR识别延迟 毫秒
delayScanTime: 2000
# 下载mp4延迟 海康的下载mp4需要2分钟
# 中威延迟10s就可
# 单位毫秒
delayDownloadMp4: 120000
# ------------
# -----图片 mp4下载地址

@ -34,6 +34,10 @@ cameraConfig:
videoServer: 127.0.0.1:8083
#相机抓图延迟 毫秒,这个延迟是等待球机球机转动到位,然后拍照的
delayCaptureTime: 3500
# 下载mp4延迟 海康的下载mp4需要2分钟
# 中威延迟10s就可
# 单位毫秒
delayDownloadMp4: 120000
# ------------
# -----图片 mp4下载地址
savePath:

@ -34,8 +34,10 @@ cameraConfig:
videoServer: 127.0.0.1:8083
#相机抓图延迟 毫秒
delayCaptureTime: 2000
#OCR识别延迟 毫秒
delayScanTime: 2000
# 下载mp4延迟 海康的下载mp4需要2分钟
# 中威延迟10s就可
# 单位毫秒
delayDownloadMp4: 120000
# ------------
# -----图片 mp4下载地址
savePath:

Loading…
Cancel
Save