| | |
| | | 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.ruoyi.utils.forest.MediaClient; |
| | | import com.sun.jna.Pointer; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Comparator; |
| | | import java.util.List; |
| | | import java.util.concurrent.PriorityBlockingQueue; |
| | |
| | | |
| | | @Override |
| | | public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) { |
| | | MediaClient mediaClient=SpringUtils.getBean(MediaClient.class); |
| | | IVtduService vtduService = SpringUtils.getBean(IVtduService.class); |
| | | IArdChannelService ardChannelService = SpringUtils.getBean(IArdChannelService.class); |
| | | IHikClientService hikClientService = SpringUtils.getBean(IHikClientService.class); |
| | | IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); |
| | |
| | | //获取最新通道 |
| | | List<ArdChannel> cameraChannelList = hikClientService.getCameraChannelList(camera); |
| | | 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) { |
| | | //添加到流媒体 |
| | | 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); |
| | | } else { |
| | | if (!rtspSource.equals(vtdu.getRtspSource())) { |
| | | //更新rtsp地址 |
| | | vtdu.setRtspSource(rtspSource); |
| | | vtduService.updateVtdu(vtdu); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //创建引导队列 |
| | | if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) { |