package com.ld.igds.protocol.vlcmedia; import com.ld.igds.camera.ApiCameraService; import com.ld.igds.camera.CameraUtil; import com.ld.igds.camera.data.ApiCameraData; import com.ld.igds.camera.data.ApiCameraResp; import com.ld.igds.camera.data.ApiSnapReq; import com.ld.igds.protocol.snap.SnapPluginService; import com.ld.igds.sec.dto.SecCameraDto; import com.ld.onvif.OnvifService; import com.ld.onvif.data.OnvifResult; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * 风正致远自有流媒体服务器 */ @Slf4j @Component public class VlcMediaService implements ApiCameraService { @Resource private SnapPluginService snapPluginService; @Resource private OnvifService onvifService; @Override public String getPlayType() { return CameraUtil.PLAY_TYPE_VLC; } @Override public ApiCameraResp getPlayAddr(ApiCameraData apiCameraDto) { if (StringUtils.isEmpty(apiCameraDto.getMediaAddr())) { return new ApiCameraResp(ApiCameraResp.CODE_ERROR, "摄像头没有配置rtsp地址"); } return new ApiCameraResp(apiCameraDto.getMediaAddr()); } @Override public ApiCameraResp ptzMedia(ApiCameraData param) { if (StringUtils.isEmpty(param.getIp()) || null == param.getPortV() || StringUtils.isEmpty(param.getLoginId()) || StringUtils.isEmpty(param.getPwd())) { return new ApiCameraResp(ApiCameraResp.CODE_ERROR, "没有获取到当前摄像机信息,不支持云台控制"); } try { log.debug("视频控制开始={}", param.toString()); // return new ApiCameraResp(ApiCameraResp.CODE_ERROR, "没有获取到当前摄像机信息,不支持云台控制"); OnvifResult result = onvifService.ptz(param.getIp(), param.getPortV(), param.getLoginId(), param.getPwd(), param.getCommand(), 0.5); log.debug("视频控制={}", result.toString()); return new ApiCameraResp(result.get("code") + "", (String) result.get("msg")); } catch (Exception e) { return new ApiCameraResp(ApiCameraResp.CODE_ERROR, "后端执行异常" + e.getMessage()); } } @Override public ApiCameraResp ptzPreset(ApiCameraData param) { if (StringUtils.isEmpty(param.getIp()) || null == param.getPortV() || StringUtils.isEmpty(param.getLoginId()) || StringUtils.isEmpty(param.getPwd())) { return new ApiCameraResp(ApiCameraResp.CODE_ERROR, "没有获取到当前摄像机信息,不支持云台控制"); } try { log.debug("视频控制开始={}", param.toString()); // return new ApiCameraResp(ApiCameraResp.CODE_ERROR, "没有获取到当前摄像机信息,不支持云台控制"); OnvifResult result = onvifService.preset(param.getIp(), param.getPortV(), param.getLoginId(), param.getPwd(), param.getPreset()); log.debug("视频控制={}", result.toString()); return new ApiCameraResp((String) result.get("code"), (String) result.get("msg")); } catch (Exception e) { return new ApiCameraResp(ApiCameraResp.CODE_ERROR, "后端执行异常" + e.getMessage()); } } @Override public ApiCameraResp keepAlive(ApiCameraData apiCameraDto) { return new ApiCameraResp(); } @Override public List searchCamera(ApiCameraData apiCameraDto) { return null; } @Override public ApiCameraResp snapImg(ApiSnapReq apiCameraDto) { if (CameraUtil.SNAP_TYPE_FZZY_PLUGIN.equals(apiCameraDto.getSnapType())) { return snapPluginService.snapImg(apiCameraDto); } return null; } }