|
@@ -255,57 +255,62 @@ public class Nvr9CameraExecuteApi {
|
|
|
|
|
|
int errCode = -1;
|
|
|
Boolean result = null;
|
|
|
- Camera camera = channel.getCamera();
|
|
|
- int wChanUsed = camera.getWChanUsed();
|
|
|
- byte streamType = camera.getStreamType();
|
|
|
+ try {
|
|
|
+ Camera camera = channel.getCamera();
|
|
|
+ int wChanUsed = camera.getWChanUsed();
|
|
|
+ byte streamType = camera.getStreamType();
|
|
|
|
|
|
- // 用户
|
|
|
- IPC_ArrayEx IPC_ArrayEx = new IPC_ArrayEx();
|
|
|
- IPC_ArrayEx.Ipclogin.username = camera.getUsername().getBytes();
|
|
|
- IPC_ArrayEx.Ipclogin.password = camera.getPassword().getBytes();
|
|
|
-
|
|
|
- // 通道
|
|
|
- IPC_ArrayEx.ipc.ip = camera.getIp().getBytes();
|
|
|
- IPC_ArrayEx.ipc.port = camera.getPort();
|
|
|
- IPC_ArrayEx.ipc.wChanUsed = wChanUsed;
|
|
|
- if (streamType == 0) {
|
|
|
- IPC_ArrayEx.ipc.mediaStream.stream_uri = camera.getStreamUri().getBytes();
|
|
|
- IPC_ArrayEx.ipc.mediaStream.uri_size = camera.getUriSize();
|
|
|
- } else {
|
|
|
- IPC_ArrayEx.ipc.device_addrs = camera.getDeviceAddrs().getBytes();
|
|
|
- }
|
|
|
-
|
|
|
- IPC_ArrayEx.ipc.frameRate = camera.getFrameRate();
|
|
|
- IPC_ArrayEx.ipc.streamType = streamType;
|
|
|
- IPC_ArrayEx.ipc.deviceType = 0;
|
|
|
- //IPC_ArrayEx.ipc.channelID = channel.getChannelID();
|
|
|
- //IPC_ArrayEx.ipc.manufacterID = IPC_MACHINE_TYPE.ONVIF_AXIS;
|
|
|
- IPC_ArrayEx.ipc.manufacturer = camera.getManufactername().getBytes();
|
|
|
- IPC_ArrayEx.ipc.model = camera.getModel().getBytes();
|
|
|
-
|
|
|
- // nUser
|
|
|
- IPC_ArrayEx.nUser = (wChanUsed << 16) + windowId; // 添加到的通道号与窗口号
|
|
|
-
|
|
|
- // 删除通道预览
|
|
|
- DECV2_PROTO_IPC deletePreview = new DECV2_PROTO_IPC();
|
|
|
- deletePreview.proHead.master = sdkChannelId; //输出屏号从0开始
|
|
|
- deletePreview.proHead.dataLen = IPC_ArrayEx.size();
|
|
|
- result = NVR9Config.vskDevNet.NS_NET_SetNVRConfig(login_id, new WinDef.UINT(142), new WinDef.LONG(1),
|
|
|
- deletePreview.getPointer(), new WinDef.UINT(deletePreview.size()));
|
|
|
- if (BooleanUtil.isTrue(result)) {
|
|
|
- // 添加通道预览
|
|
|
- DECV2_PROTO_IPC updatePreview = new DECV2_PROTO_IPC();
|
|
|
- updatePreview.proHead.master = sdkChannelId; //输出屏号从0开始
|
|
|
- updatePreview.proHead.dataLen = IPC_ArrayEx.size();
|
|
|
- result = NVR9Config.vskDevNet.NS_NET_SetNVRConfig(login_id, new WinDef.UINT(141), new WinDef.LONG(1),
|
|
|
+ // 用户
|
|
|
+ IPC_ArrayEx IPC_ArrayEx = new IPC_ArrayEx();
|
|
|
+ IPC_ArrayEx.Ipclogin.username = camera.getUsername().getBytes();
|
|
|
+ IPC_ArrayEx.Ipclogin.password = camera.getPassword().getBytes();
|
|
|
+
|
|
|
+ // 通道
|
|
|
+ IPC_ArrayEx.ipc.ip = camera.getIp().getBytes();
|
|
|
+ IPC_ArrayEx.ipc.port = camera.getPort();
|
|
|
+ IPC_ArrayEx.ipc.wChanUsed = wChanUsed;
|
|
|
+ if (streamType == 0) {
|
|
|
+ IPC_ArrayEx.ipc.mediaStream.stream_uri = camera.getStreamUri().getBytes();
|
|
|
+ IPC_ArrayEx.ipc.mediaStream.uri_size = camera.getUriSize();
|
|
|
+ } else {
|
|
|
+ IPC_ArrayEx.ipc.device_addrs = camera.getDeviceAddrs().getBytes();
|
|
|
+ }
|
|
|
+
|
|
|
+ IPC_ArrayEx.ipc.frameRate = camera.getFrameRate();
|
|
|
+ IPC_ArrayEx.ipc.streamType = streamType;
|
|
|
+ IPC_ArrayEx.ipc.deviceType = 0;
|
|
|
+ //IPC_ArrayEx.ipc.channelID = channel.getChannelID();
|
|
|
+ //IPC_ArrayEx.ipc.manufacterID = IPC_MACHINE_TYPE.ONVIF_AXIS;
|
|
|
+ IPC_ArrayEx.ipc.manufacturer = camera.getManufactername().getBytes();
|
|
|
+ IPC_ArrayEx.ipc.model = camera.getModel().getBytes();
|
|
|
+
|
|
|
+ // nUser
|
|
|
+ IPC_ArrayEx.nUser = (wChanUsed << 16) + windowId; // 添加到的通道号与窗口号
|
|
|
+
|
|
|
+ // 删除通道预览
|
|
|
+ DECV2_PROTO_IPC deletePreview = new DECV2_PROTO_IPC();
|
|
|
+ deletePreview.proHead.master = sdkChannelId; //输出屏号从0开始
|
|
|
+ deletePreview.proHead.dataLen = IPC_ArrayEx.size();
|
|
|
+ result = NVR9Config.vskDevNet.NS_NET_SetNVRConfig(login_id, new WinDef.UINT(142), new WinDef.LONG(1),
|
|
|
deletePreview.getPointer(), new WinDef.UINT(deletePreview.size()));
|
|
|
- if (!BooleanUtil.isTrue(result)) {
|
|
|
+ if (BooleanUtil.isTrue(result)) {
|
|
|
+ // 添加通道预览
|
|
|
+ DECV2_PROTO_IPC updatePreview = new DECV2_PROTO_IPC();
|
|
|
+ updatePreview.proHead.master = sdkChannelId; //输出屏号从0开始
|
|
|
+ updatePreview.proHead.dataLen = IPC_ArrayEx.size();
|
|
|
+ result = NVR9Config.vskDevNet.NS_NET_SetNVRConfig(login_id, new WinDef.UINT(141), new WinDef.LONG(1),
|
|
|
+ deletePreview.getPointer(), new WinDef.UINT(deletePreview.size()));
|
|
|
+ if (!BooleanUtil.isTrue(result)) {
|
|
|
+ errCode = NVR9Config.getErrCode();
|
|
|
+ log.warn("添加通道预览失败,错误码: " + errCode);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
errCode = NVR9Config.getErrCode();
|
|
|
- log.warn("添加通道预览失败,错误码: " + errCode);
|
|
|
+ log.warn("删除通道预览失败,错误码: " + errCode);
|
|
|
}
|
|
|
- } else {
|
|
|
- errCode = NVR9Config.getErrCode();
|
|
|
- log.warn("删除通道预览失败,错误码: " + errCode);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("投屏操作失败", e);
|
|
|
}
|
|
|
|
|
|
// 退出登录
|
|
@@ -334,22 +339,30 @@ public class Nvr9CameraExecuteApi {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- CurShowDevEx curShowDevEx = new CurShowDevEx();
|
|
|
- Boolean result = this.getCurShowDevExConfig(curShowDevEx, sdkChannelId);
|
|
|
- if (!BooleanUtil.isTrue(result)) {
|
|
|
- int errCode = NVR9Config.getErrCode();
|
|
|
- return this.executeErr(false, errCode + "", "获取解码器当前预览视频信息失败");
|
|
|
+ String message = null;
|
|
|
+ try {
|
|
|
+ CurShowDevEx curShowDevEx = new CurShowDevEx();
|
|
|
+ Boolean result = this.getCurShowDevExConfig(curShowDevEx, sdkChannelId);
|
|
|
+ if (!BooleanUtil.isTrue(result)) {
|
|
|
+ int errCode = NVR9Config.getErrCode();
|
|
|
+ return this.executeErr(false, errCode + "", "获取解码器当前预览视频信息失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("ChlNum", curShowDevEx.ChlNum);
|
|
|
+ jsonObject.put("WindowsNum", curShowDevEx.WindowsNum);
|
|
|
+
|
|
|
+ IPC_ArrayEx[] arrayExs = curShowDevEx.ChlInfo;
|
|
|
+ JSONArray chlInfos = this.parseIPC_ArrayEx(arrayExs);
|
|
|
+ jsonObject.put("ChlInfo", chlInfos);
|
|
|
+ return this.executeSuccess(true, jsonObject);
|
|
|
+ } catch (Exception e) {
|
|
|
+ message = e.getMessage();
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("获取解码器当前预览视频信息失败", e);
|
|
|
}
|
|
|
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("ChlNum", curShowDevEx.ChlNum);
|
|
|
- jsonObject.put("WindowsNum", curShowDevEx.WindowsNum);
|
|
|
-
|
|
|
- IPC_ArrayEx[] arrayExs = curShowDevEx.ChlInfo;
|
|
|
- JSONArray chlInfos = this.parseIPC_ArrayEx(arrayExs);
|
|
|
- jsonObject.put("ChlInfo", chlInfos);
|
|
|
-
|
|
|
- return this.executeSuccess(true, jsonObject);
|
|
|
+ return this.executeErr(true, "获取解码器当前预览视频信息失败,失败原因:" + message) ;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -428,22 +441,43 @@ public class Nvr9CameraExecuteApi {
|
|
|
* 初始化及登录
|
|
|
*/
|
|
|
private boolean login(NvrSceneRelation relation) {
|
|
|
- if (NVR9Config.vskDevNet == null) {
|
|
|
- log.warn("NVR9 SDK未初始化成功,请重启应用程序");
|
|
|
- return false;
|
|
|
- }
|
|
|
- log.info(relation.toString());
|
|
|
-
|
|
|
- // 登录
|
|
|
- login_id = NVR9Config.vskDevNet.NS_NET_Login(relation.getIp().getBytes(), new WinDef.WORD(relation.getPort()),
|
|
|
- relation.getUsername().getBytes(), relation.getPassword().getBytes(), null, null);
|
|
|
- long userId = login_id == null ? -1L : login_id.longValue();
|
|
|
- if (userId < 0) {
|
|
|
- log.warn("登录失败,错误码:{}", NVR9Config.getErrCode());
|
|
|
- return false;
|
|
|
+ try {
|
|
|
+ if (NVR9Config.vskDevNet == null) {
|
|
|
+ log.warn("NVR9 SDK未初始化成功,请重启应用程序");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ log.info(relation.toString());
|
|
|
+
|
|
|
+ // 登录
|
|
|
+ login_id = NVR9Config.vskDevNet.NS_NET_Login(relation.getIp().getBytes(), new WinDef.WORD(relation.getPort()),
|
|
|
+ relation.getUsername().getBytes(), relation.getPassword().getBytes(), null, null);
|
|
|
+ long userId = login_id == null ? -1L : login_id.longValue();
|
|
|
+ if (userId < 0) {
|
|
|
+ log.warn("登录失败,错误码:{}", NVR9Config.getErrCode());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("NVR9 SDK登录失败", e);
|
|
|
}
|
|
|
|
|
|
- return true;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 代码执行失败,退出
|
|
|
+ *
|
|
|
+ * @param isLogingout
|
|
|
+ * @param message
|
|
|
+ * @return
|
|
|
+ * @date 2021年11月17日 下午3:06:27
|
|
|
+ */
|
|
|
+ private ResultClass executeErr(boolean isLogingout, String message) {
|
|
|
+ this.logout(isLogingout);
|
|
|
+ return OtherTools.executeErr(message);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -475,13 +509,16 @@ public class Nvr9CameraExecuteApi {
|
|
|
*/
|
|
|
private void logout(boolean isLogingout) {
|
|
|
// 注销设备,即注销登录
|
|
|
- if (isLogingout) {
|
|
|
- Boolean logout = NVR9Config.vskDevNet.NS_NET_Logout(this.login_id);
|
|
|
- if (BooleanUtil.isTrue(logout)) {
|
|
|
- log.info("NVR9000 SDK 注销成功");
|
|
|
- } else {
|
|
|
- log.error("NVR9000 SDK 注销失败");
|
|
|
+ if (isLogingout && login_id != null) {
|
|
|
+ try {
|
|
|
+ Boolean logout = NVR9Config.vskDevNet.NS_NET_Logout(this.login_id);
|
|
|
+ if (BooleanUtil.isTrue(logout)) {
|
|
|
+ log.info("NVR9000 SDK 注销成功");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
+ log.error("NVR9000 SDK 注销失败");
|
|
|
}
|
|
|
}
|
|
|
|