| | |
| | | @Override
|
| | | public Boolean login(ArdCameras camera) {
|
| | | LoginModule.init(disConnect, haveReConnect);
|
| | | LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword());
|
| | | NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
|
| | | LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo);
|
| | | if (loginId.longValue() > 0) {
|
| | | //log.debug(camera.getIp() + ":" + camera.getPort() + "登录成功");
|
| | | if (GlobalVariable.loginMap.containsKey(camera.getId())) {
|
| | |
| | | //删除管理通道
|
| | | ardChannelService.deleteArdChannelByDeviceId(camera.getId());
|
| | | camera.setState("1");
|
| | | camera.setChanNum(LoginModule.m_stDeviceInfo.byChanNum);
|
| | | camera.setChanNum(m_stDeviceInfo.byChanNum);
|
| | | camera.setStartDChan(1);
|
| | | camera.setLoginId((int) loginId.longValue());
|
| | | ardCamerasService.updateArdCameras(camera);
|
| | | GlobalVariable.loginMap.put(camera.getId(), loginId);
|
| | |
|
| | | //获取最新通道
|
| | | for (int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
|
| | | for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
|
| | | ArdChannel channel = new ArdChannel();
|
| | | AV_CFG_ChannelName av_cfg_channelName = new AV_CFG_ChannelName();
|
| | | boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
|
| | |
| | | if (vtdu != null) {
|
| | | vtduService.deleteVtduByName(name);
|
| | | }
|
| | |
|
| | | //添加到流媒体
|
| | | CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo());
|
| | | Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
|
| | |
| | | @Override
|
| | | public Map<String, Object> getVideoCompressionCfg(CameraCmd cmd) {
|
| | | Map<String, Object> map = new HashMap<>();
|
| | | String cameraId = cmd.getCameraId();
|
| | | Integer chanNo = cmd.getChanNo();
|
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) {
|
| | | return null;
|
| | | }
|
| | | LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
|
| | | CFG_ENCODE_INFO cfg_encode_info = new CFG_ENCODE_INFO();
|
| | | cfg_encode_info.nChannelID = chanNo - 1;
|
| | | boolean b = ConfigModule.GetNewDevConfig(loginId, chanNo - 1, CFG_CMD_ENCODE, cfg_encode_info);
|
| | | if (b) {
|
| | | int emCompression = cfg_encode_info.stuMainStream[0].stuVideoFormat.emCompression;//视频格式
|
| | | String videoEncType = "";
|
| | | switch (emCompression) {
|
| | | case 0:
|
| | | videoEncType = "MPEG4";
|
| | | break;
|
| | | case 1:
|
| | | videoEncType = "MS-MPEG4";
|
| | | break;
|
| | | case 2:
|
| | | videoEncType = "MPEG2";
|
| | | break;
|
| | | case 3:
|
| | | videoEncType = "MPEG1";
|
| | | break;
|
| | | case 4:
|
| | | videoEncType = "H.263";
|
| | | break;
|
| | | case 5:
|
| | | videoEncType = "MJPG";
|
| | | break;
|
| | | case 6:
|
| | | videoEncType = "FCC-MPEG4";
|
| | | break;
|
| | | case 7:
|
| | | videoEncType = "标准h264";
|
| | | break;
|
| | | case 8:
|
| | | videoEncType = "标准h265";
|
| | | break;
|
| | | case 9:
|
| | | videoEncType = "SVAC";
|
| | | break;
|
| | | default:
|
| | | videoEncType = "未知";
|
| | | break;
|
| | | try {
|
| | | String cameraId = cmd.getCameraId();
|
| | | Integer chanNo = cmd.getChanNo();
|
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) {
|
| | | return null;
|
| | | }
|
| | | int nBitRate = cfg_encode_info.stuMainStream[0].stuVideoFormat.nBitRate;
|
| | | int nWidth = cfg_encode_info.stuMainStream[0].stuVideoFormat.nWidth;
|
| | | int nHeight = cfg_encode_info.stuMainStream[0].stuVideoFormat.nHeight;
|
| | | String resolution = nWidth + "*" + nHeight;
|
| | | float nFrameRate = cfg_encode_info.stuMainStream[0].stuVideoFormat.nFrameRate;
|
| | | map.put("resolution", resolution);//分辨率
|
| | | map.put("videoBitrate", String.valueOf(nBitRate));//比特率
|
| | | map.put("videoEncType", videoEncType);//编码
|
| | | map.put("nFrameRate", String.valueOf(nFrameRate));//帧率
|
| | | LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
|
| | | CFG_ENCODE_INFO cfg_encode_info = new CFG_ENCODE_INFO();
|
| | | cfg_encode_info.nChannelID = chanNo - 1;
|
| | | boolean b = ConfigModule.GetNewDevConfig(loginId, chanNo - 1, CFG_CMD_ENCODE, cfg_encode_info);
|
| | | if (b) {
|
| | | int emCompression = cfg_encode_info.stuMainStream[0].stuVideoFormat.emCompression;//视频格式
|
| | | String videoEncType = "";
|
| | | switch (emCompression) {
|
| | | case 0:
|
| | | videoEncType = "MPEG4";
|
| | | break;
|
| | | case 1:
|
| | | videoEncType = "MS-MPEG4";
|
| | | break;
|
| | | case 2:
|
| | | videoEncType = "MPEG2";
|
| | | break;
|
| | | case 3:
|
| | | videoEncType = "MPEG1";
|
| | | break;
|
| | | case 4:
|
| | | videoEncType = "H.263";
|
| | | break;
|
| | | case 5:
|
| | | videoEncType = "MJPG";
|
| | | break;
|
| | | case 6:
|
| | | videoEncType = "FCC-MPEG4";
|
| | | break;
|
| | | case 7:
|
| | | videoEncType = "标准h264";
|
| | | break;
|
| | | case 8:
|
| | | videoEncType = "标准h265";
|
| | | break;
|
| | | case 9:
|
| | | videoEncType = "SVAC";
|
| | | break;
|
| | | default:
|
| | | videoEncType = "未知";
|
| | | break;
|
| | | }
|
| | | int nBitRate = cfg_encode_info.stuMainStream[0].stuVideoFormat.nBitRate;
|
| | | int nWidth = cfg_encode_info.stuMainStream[0].stuVideoFormat.nWidth;
|
| | | int nHeight = cfg_encode_info.stuMainStream[0].stuVideoFormat.nHeight;
|
| | | String resolution = nWidth + "*" + nHeight;
|
| | | float nFrameRate = cfg_encode_info.stuMainStream[0].stuVideoFormat.nFrameRate;
|
| | | map.put("resolution", resolution);//分辨率
|
| | | map.put("videoBitrate", String.valueOf(nBitRate));//比特率
|
| | | map.put("videoEncType", videoEncType);//编码
|
| | | map.put("nFrameRate", String.valueOf(nFrameRate));//帧率
|
| | | }
|
| | | } catch (Exception ex) {
|
| | | log.error("取码流压缩参数异常:" + ex.getMessage());
|
| | | }
|
| | | return map;
|
| | | }
|
| | |
| | | // 设备断线回调: 当设备出现断线时,SDK会调用该函数
|
| | | private static class DisConnect implements NetSDKLib.fDisConnect {
|
| | | public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
|
| | | log.warn("Device["+pchDVRIP+"] Port["+nDVRPort+"] DisConnect!");
|
| | | log.warn("Device[" + pchDVRIP + "] Port[" + nDVRPort + "] DisConnect!");
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
|
| | | @Override
|
| | | public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
|
| | | log.warn("ReConnect Device["+pchDVRIP+"] Port["+nDVRPort+"]");
|
| | | log.warn("ReConnect Device[" + pchDVRIP + "] Port[" + nDVRPort + "]");
|
| | | }
|
| | | }
|
| | |
|