| | |
| | | /** |
| | | * 开启直播 |
| | | */ |
| | | public void StartLiveStreaming(String sn) { |
| | | public void StartLiveStreaming(String sn ,String userId) { |
| | | //调用开始直播 |
| | | ResponseResult rlive = null; |
| | | String resultLive = ""; |
| | | try { |
| | | // 获取直播参数 |
| | | LiveTypeDTO param = getLiveParam(sn); |
| | | // 判断param是否为空,不为空则返回正确的直播参数,为null则未获取直播参数,不为空则继续操作 |
| | | if (param == null) { |
| | | log.info("SN: {}-未获取到直播参数param为null,无法开启直播!", sn); |
| | | return; |
| | | } |
| | | // 如果存在直播则读取直播地址返回 |
| | | if (RedisOpsUtils.checkExist(RedisConst.WEBSOCKET_VIDEO_ADDRESS_PREFIX + sn)) { |
| | | resultLive = String.valueOf(RedisOpsUtils.get(RedisConst.WEBSOCKET_VIDEO_ADDRESS_PREFIX + sn)); |
| | | log.info("SN: {}-redis中存在相机的播放地址信息,直接返回地址!", sn); |
| | | } else { |
| | | log.info("SN: {}-redis中未找到相机的播放地址信息!停止直播后再开启直播", sn); |
| | | StopLiveStreaming(sn); |
| | |
| | | } |
| | | } |
| | | } |
| | | _dockWebSocketHandler.sendMessageToSubscribers(sn, MessageType.LIVESTREAM.getType(), resultLive); |
| | | _dockWebSocketHandler.sendMessageToSubscribers(sn, MessageType.LIVESTREAM.getType(), resultLive, userId); |
| | | log.info("SN: {}-直播地址:{}", sn, resultLive); |
| | | } catch (Exception e) { |
| | | log.info("SN: {}-开启直播失败!原因:{}", sn, e.getMessage()); |
| | |
| | | List<CapacityDeviceDTO> devicesList = _liveStreamService.getLiveCapacity(); |
| | | if (devicesList == null || devicesList.isEmpty()) { |
| | | log.info("SN: {}-未获得设备直播能力!", sn); |
| | | return null; |
| | | // 抛弃出异常,给调用者处理 |
| | | throw new Exception("未获得设备直播能力!"); |
| | | // throw new Exception("未获得设备直播能力!"); |
| | | } |
| | | for (CapacityDeviceDTO device : devicesList) { |
| | | if (!device.getSn().equals(sn)) { |