diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/CallBack.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/CallBack.java index 4213159..4904e2f 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/CallBack.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/CallBack.java @@ -28,7 +28,14 @@ public class CallBack { @Override public void invoke(NetSDKLib.LLong lPlayHandle, int dwTotalSize, int dwDownLoadSize, int index, NetSDKLib.NET_RECORDFILE_INFO.ByValue recordfileinfo, Pointer dwUser) { if(dwDownLoadSize == -1) { - JoywareLoginModuleImpl.netsdk.CLIENT_StopDownload(lPlayHandle); + log.info("stop donwload mp4"); + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + JoywareLoginModuleImpl.netsdk.CLIENT_StopDownload(lPlayHandle); + } + }); + thread.start(); } } } diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java index f71aea7..11a94f4 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java @@ -9,6 +9,8 @@ import lombok.extern.slf4j.Slf4j; import java.time.LocalDateTime; +import static com.zhehekeji.web.lib.joyware.JoywareLoginModuleImpl.mp4ReceiveCB; + /** * 云台控制接口实现 * 主要有 :八个方向控制、变倍、变焦、光圈功能 @@ -249,6 +251,7 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule { startTime.setTime(start.getYear(), start.getMonthValue(), start.getDayOfMonth(), start.getHour(), start.getMinute(), start.getSecond()); NetSDKLib.NET_TIME endTime = new NetSDKLib.NET_TIME(); endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond()); + NetSDKLib.NET_IN_DOWNLOAD_BY_DATA_TYPE download_by_data_type = new NetSDKLib.NET_IN_DOWNLOAD_BY_DATA_TYPE(); download_by_data_type.nChannelID = 0; download_by_data_type.stStartTime = startTime; @@ -256,13 +259,16 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule { download_by_data_type.szSavedFileName = path; download_by_data_type.emDataType = 3; download_by_data_type.emRecordType = 0; + download_by_data_type.cbDownLoadPos = mp4ReceiveCB; download_by_data_type.write(); NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE net_out_download_by_data_type = new NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE(); net_out_download_by_data_type.write(); + NetSDKLib.LLong l = JoywareLoginModuleImpl.netsdk.CLIENT_DownloadByDataType(CameraConnMap.getConnId(cameraId), download_by_data_type.getPointer(), net_out_download_by_data_type.getPointer(), 8000); - log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{},status:{}", path, startTime.toString(), endTime.toString(), LocalDateTime.now(),l.longValue()); - if (l.longValue() == 0) { - log.error("download mp4 error :{},cameraId:{}", ToolKits.getErrorCodePrint(),cameraId); + if(l.longValue() != 0){ + log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{},status:{}", path, start, end, LocalDateTime.now(),l.longValue()); + }else { + log.error("download mp4 error,startTime:{} ,endTime:{}",start,end); } } diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java index b498051..6b0a0ad 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java @@ -1,5 +1,7 @@ package com.zhehekeji.web.lib.joyware; +import com.sun.jna.CallbackThreadInitializer; +import com.sun.jna.Native; import com.zhehekeji.web.lib.CameraControlLoginModule; import com.zhehekeji.web.lib.joyware.NetSDKLib.LLong; import com.zhehekeji.web.lib.joyware.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY; @@ -26,6 +28,8 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule { private static CaptureReceiveCB captureReceiveCB = new CaptureReceiveCB(); + public static CallBack.Mp4ReceiveCB mp4ReceiveCB= new CallBack.Mp4ReceiveCB(); + /** * \if ENGLISH_LANG * Init @@ -57,6 +61,9 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule { netsdk.CLIENT_SetNetworkParam(netParam); //todo netsdk.CLIENT_SetSnapRevCallBack(captureReceiveCB,null); + + Native.setCallbackThreadInitializer(mp4ReceiveCB, + new CallbackThreadInitializer(false, false, "downloadbytime callback thread")); return true; }