| | |
| | | import com.ruoyi.device.channel.service.IArdChannelService; |
| | | import com.ruoyi.device.hiksdk.common.GlobalVariable; |
| | | import com.ruoyi.device.hiksdk.service.IHikClientService; |
| | | import com.ruoyi.media.domain.Vtdu; |
| | | import com.ruoyi.media.service.IVtduService; |
| | | import com.sun.jna.Pointer; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | |
| | | |
| | | @Override |
| | | public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) { |
| | | IVtduService vtduService = SpringUtils.getBean(IVtduService.class); |
| | | IArdChannelService ardChannelService = SpringUtils.getBean(IArdChannelService.class); |
| | | IHikClientService hikClientService = SpringUtils.getBean(IHikClientService.class); |
| | | IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); |
| | | if (GlobalVariable.loginMap.containsKey(camera.getId())) { |
| | | GlobalVariable.loginMap.remove(camera.getId()); |
| | | } |
| | | //删除管理通道 |
| | | ardChannelService.deleteArdChannelByDeviceId(camera.getId()); |
| | | if (dwResult == 1) { |
| | | GlobalVariable.loginMap.put(camera.getId(), lUserID); |
| | | log.debug(camera.getIp() + ":" + camera.getPort() + "登录成功"); |
| | | camera.setLoginId(lUserID); |
| | | camera.setState("1"); |
| | | camera.setChanNum((int) lpDeviceinfo.byChanNum); |
| | | camera.setStartDChan((int)lpDeviceinfo.byStartDChan); |
| | | |
| | | camera.setStartDChan((int) lpDeviceinfo.byStartDChan); |
| | | //获取最新通道 |
| | | List<ArdChannel> cameraChannelList = hikClientService.getCameraChannelList(camera); |
| | | if(cameraChannelList.size()>0) { |
| | | //删除管理通道 |
| | | ardChannelService.deleteArdChannelByDeviceId(camera.getId()); |
| | | if (cameraChannelList.size() > 0) { |
| | | //添加通道 |
| | | for (ArdChannel channel : cameraChannelList) { |
| | | channel.setId(IdUtils.simpleUUID()); |
| | | ardChannelService.insertArdChannel(channel); |
| | | } |
| | | //配置到流媒体 |
| | | for (ArdChannel channel : cameraChannelList) { |
| | | String name = camera.getId() + "_" + channel.getChanNo(); |
| | | String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream"; |
| | | Vtdu vtdu = vtduService.selectVtduByName(name); |
| | | if (vtdu != null) { |
| | | vtduService.deleteVtduByName(name); |
| | | } |
| | | //添加到流媒体 |
| | | vtdu = new Vtdu(); |
| | | vtdu.setRtspSource(rtspSource); |
| | | vtdu.setName(camera.getId() + "_" + channel.getChanNo()); |
| | | vtdu.setIsCode("0");//默认不转码 |
| | | vtdu.setMode("1");//默认CPU软解码 |
| | | vtdu.setCameraId(camera.getId()); |
| | | vtduService.insertVtdu(vtdu); |
| | | } |
| | | } |
| | | //创建引导队列 |
| | | if(!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) |
| | | { |
| | | if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { |
| | | Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator(); |
| | | PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator); |
| | | GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue); |
| | |
| | | log.debug(camera.getIp() + ":" + camera.getPort() + "登录失败"); |
| | | camera.setChanNum(0); |
| | | camera.setLoginId(-1); |
| | | camera.setState("0"); |
| | | } |
| | | ardCamerasService.updateArdCameras(camera); |
| | | return 1; |
| | | } |
| | | } |
| | | } |