diff --git a/libs/onvif-java-1.0.2.jar b/libs/onvif-java-1.0.2.jar deleted file mode 100644 index dd62a238..00000000 Binary files a/libs/onvif-java-1.0.2.jar and /dev/null differ diff --git a/pom.xml b/pom.xml index 5cd5f048..7a04892b 100644 --- a/pom.xml +++ b/pom.xml @@ -212,17 +212,6 @@ - - - - - be.teletask - onvif-java - 1.0.2 - system - ${project.basedir}/libs/onvif-java-1.0.2.jar - - org.springframework.boot spring-boot-starter-test diff --git a/src/main/java/com/genersoft/iot/vmp/onvif/IONVIFServer.java b/src/main/java/com/genersoft/iot/vmp/onvif/IONVIFServer.java deleted file mode 100644 index eb81a363..00000000 --- a/src/main/java/com/genersoft/iot/vmp/onvif/IONVIFServer.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.genersoft.iot.vmp.onvif; - -import be.teletask.onvif.models.OnvifDevice; -import com.genersoft.iot.vmp.onvif.dto.ONVIFCallBack; - -import java.util.List; - -public interface IONVIFServer { - - void search(int timeout, ONVIFCallBack> callBack); - - void getRTSPUrl(int timeout, OnvifDevice device, ONVIFCallBack callBack); -} diff --git a/src/main/java/com/genersoft/iot/vmp/onvif/dto/ONVIFCallBack.java b/src/main/java/com/genersoft/iot/vmp/onvif/dto/ONVIFCallBack.java deleted file mode 100644 index 3fdbde5b..00000000 --- a/src/main/java/com/genersoft/iot/vmp/onvif/dto/ONVIFCallBack.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.genersoft.iot.vmp.onvif.dto; - -public interface ONVIFCallBack { - void run(int errorCode, T t); -} diff --git a/src/main/java/com/genersoft/iot/vmp/onvif/impl/ONVIFServerIMpl.java b/src/main/java/com/genersoft/iot/vmp/onvif/impl/ONVIFServerIMpl.java deleted file mode 100644 index d952cc8f..00000000 --- a/src/main/java/com/genersoft/iot/vmp/onvif/impl/ONVIFServerIMpl.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.genersoft.iot.vmp.onvif.impl; - - -import be.teletask.onvif.DiscoveryManager; -import be.teletask.onvif.OnvifManager; -import be.teletask.onvif.listeners.*; -import be.teletask.onvif.models.*; -import be.teletask.onvif.responses.OnvifResponse; -import com.genersoft.iot.vmp.onvif.IONVIFServer; -import com.genersoft.iot.vmp.onvif.dto.ONVIFCallBack; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("rawtypes") -/** - * 处理onvif的各种操作 - */ -@Service -public class ONVIFServerIMpl implements IONVIFServer { - - private final static Logger logger = LoggerFactory.getLogger(ONVIFServerIMpl.class); - - @Override - public void search(int timeout, ONVIFCallBack> callBack) { - DiscoveryManager manager = new DiscoveryManager(); - manager.setDiscoveryTimeout(timeout); - Map deviceMap = new HashMap<>(); - // 搜索设备 - manager.discover(new DiscoveryListener() { - @Override - public void onDiscoveryStarted() { - logger.info("Discovery started"); - } - - @Override - public void onDevicesFound(List devices) { - if (devices == null || devices.size() == 0) return; - for (Device device : devices){ - logger.info(device.getHostName()); - deviceMap.put(device.getHostName(), device); - } - } - - // 搜索结束 - @Override - public void onDiscoveryFinished() { - ArrayList result = new ArrayList<>(); - for (Device device : deviceMap.values()) { - logger.info(device.getHostName()); - result.add(device.getHostName()); - } - callBack.run(0, result); - } - }); - } - - @Override - public void getRTSPUrl(int timeout, OnvifDevice device, ONVIFCallBack callBack) { - if (device.getHostName() == null ){ - callBack.run(400, null); - } - OnvifManager onvifManager = new OnvifManager(); - onvifManager.setOnvifResponseListener(new OnvifResponseListener(){ - - @Override - public void onResponse(OnvifDevice onvifDevice, OnvifResponse response) { - logger.info("[RESPONSE] " + onvifDevice.getHostName() - + "======" + response.getErrorCode() - + "======" + response.getErrorMessage()); - } - - @Override - public void onError(OnvifDevice onvifDevice, int errorCode, String errorMessage) { - logger.info("[ERROR] " + onvifDevice.getHostName() + "======" + errorCode + "=======" + errorMessage); - callBack.run(errorCode, errorMessage); - } - }); - - try { - onvifManager.getServices(device, (OnvifDevice onvifDevice, OnvifServices services) -> { - if (services.getProfilesPath().equals("/onvif/Media")) { - onvifDevice.setPath(services); - onvifManager.getMediaProfiles(onvifDevice, new OnvifMediaProfilesListener() { - @Override - public void onMediaProfilesReceived(OnvifDevice device, List mediaProfiles) { - for (OnvifMediaProfile mediaProfile : mediaProfiles) { - logger.info(mediaProfile.getName()); - logger.info(mediaProfile.getToken()); - if (mediaProfile.getName().equals("mainStream")) { - onvifManager.getMediaStreamURI(device, mediaProfile, (OnvifDevice onvifDevice, - OnvifMediaProfile profile, String uri) -> { - - uri = uri.replace("rtsp://", "rtsp://"+ device.getUsername() + ":"+ device.getPassword() + "@"); - logger.info(onvifDevice.getHostName() + "的地址" + uri); - callBack.run(0, uri); - }); - } - } - } - }); - } - }); - }catch (Exception e) { - callBack.run(400, e.getMessage()); - } - - - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/onvif/ONVIFController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/onvif/ONVIFController.java deleted file mode 100644 index 0fa2f6b0..00000000 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/onvif/ONVIFController.java +++ /dev/null @@ -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> search(@RequestParam(required = false)Integer timeout){ - DeferredResult> 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 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> 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> 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> 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 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 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; - } - -} diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml index e7d68106..6328bc37 100644 --- a/src/main/resources/all-application.yml +++ b/src/main/resources/all-application.yml @@ -137,6 +137,8 @@ logging: com.genersoft.iot.vmp.gb28181: info # [根据业务需求配置] user-settings: + # [可选] 服务ID,不写则为000000 + server-id: # [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播, 需要rtp.enable=true auto-apply-play: false # [可选] 部分设备需要扩展SDP,需要打开此设置