移除onvif实现

This commit is contained in:
648540858
2021-11-23 11:35:23 +08:00
parent dda68ac044
commit 6282c81bc5
7 changed files with 2 additions and 267 deletions

View File

@@ -1,123 +0,0 @@
package com.genersoft.iot.vmp.vmanager.onvif;
import be.teletask.onvif.models.OnvifDevice;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.genersoft.iot.vmp.onvif.IONVIFServer;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult;
import java.util.List;
import java.util.UUID;
@SuppressWarnings(value = {"rawtypes", "unchecked"})
@Api(tags = "onvif设备")
@CrossOrigin
@RestController
@RequestMapping("/api/onvif")
public class ONVIFController {
@Autowired
private DeferredResultHolder resultHolder;
@Autowired
private IONVIFServer onvifServer;
@ApiOperation("搜索")
@ApiImplicitParams({
@ApiImplicitParam(name="timeout", value = "超时时间", required = true, dataTypeClass = Integer.class),
})
@GetMapping(value = "/search")
@ResponseBody
public DeferredResult<ResponseEntity<WVPResult>> search(@RequestParam(required = false)Integer timeout){
DeferredResult<ResponseEntity<WVPResult>> result = new DeferredResult<>(timeout + 10L);
String uuid = UUID.randomUUID().toString();
result.onTimeout(()->{
RequestMessage msg = new RequestMessage();
msg.setKey(DeferredResultHolder.CALLBACK_ONVIF );
msg.setId(uuid);
WVPResult<String> wvpResult = new WVPResult();
wvpResult.setCode(0);
wvpResult.setMsg("搜索超时");
msg.setData(wvpResult);
resultHolder.invokeResult(msg);
});
resultHolder.put(DeferredResultHolder.CALLBACK_ONVIF, uuid, result);
onvifServer.search(timeout, (errorCode, onvifDevices) ->{
RequestMessage msg = new RequestMessage();
msg.setId(DeferredResultHolder.CALLBACK_ONVIF + uuid);
WVPResult<List<String>> resultData = new WVPResult();
resultData.setCode(errorCode);
if (errorCode == 0) {
resultData.setMsg("success");
resultData.setData(onvifDevices);
}else {
resultData.setMsg("fail");
}
msg.setData(resultData);
msg.setData(resultData);
resultHolder.invokeResult(msg);
});
return result;
}
@ApiOperation("获取onvif的rtsp地址")
@ApiImplicitParams({
@ApiImplicitParam(name="timeout", value = "超时时间", required = true, dataTypeClass = Integer.class),
@ApiImplicitParam(name="hostname", value = "onvif地址", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name="username", value = "用户名", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name="password", value = "密码", required = true, dataTypeClass = String.class),
})
@GetMapping(value = "/rtsp")
@ResponseBody
public DeferredResult<ResponseEntity<WVPResult>> getRTSPUrl(@RequestParam(value="timeout", required=false, defaultValue="3000") Integer timeout,
@RequestParam(required = true) String hostname,
@RequestParam(required = false) String username,
@RequestParam(required = false) String password
){
DeferredResult<ResponseEntity<WVPResult>> result = new DeferredResult<>(timeout + 10L);
String uuid = UUID.randomUUID().toString();
result.onTimeout(()->{
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(DeferredResultHolder.CALLBACK_ONVIF);
WVPResult<String> wvpResult = new WVPResult();
wvpResult.setCode(0);
wvpResult.setMsg("获取onvif的rtsp地址超时");
msg.setData(wvpResult);
resultHolder.invokeResult(msg);
});
resultHolder.put(DeferredResultHolder.CALLBACK_ONVIF, uuid, result);
OnvifDevice onvifDevice = new OnvifDevice(hostname, username, password);
onvifServer.getRTSPUrl(timeout, onvifDevice, (errorCode, url) ->{
RequestMessage msg = new RequestMessage();
msg.setId(DeferredResultHolder.CALLBACK_ONVIF + uuid);
WVPResult<String> resultData = new WVPResult();
resultData.setCode(errorCode);
if (errorCode == 0) {
resultData.setMsg("success");
resultData.setData(url);
}else {
resultData.setMsg(url);
}
msg.setData(resultData);
resultHolder.invokeResult(msg);
});
return result;
}
}