ApiControlController.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.genersoft.iot.vmp.web;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.genersoft.iot.vmp.gb28181.bean.Device;
  4. import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
  5. import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.web.bind.annotation.*;
  10. /**
  11. * 兼容LiveGBS的API:设备控制
  12. */
  13. @CrossOrigin
  14. @RestController
  15. @RequestMapping(value = "/api/v1/control")
  16. public class ApiControlController {
  17. private final static Logger logger = LoggerFactory.getLogger(ApiControlController.class);
  18. @Autowired
  19. private SIPCommander cmder;
  20. @Autowired
  21. private IVideoManagerStorager storager;
  22. /**
  23. * 设备控制 - 云台控制
  24. * @param serial 设备编号
  25. * @param command 控制指令 允许值: left, right, up, down, upleft, upright, downleft, downright, zoomin, zoomout, stop
  26. * @param channel 通道序号
  27. * @param code 通道编号
  28. * @param speed 速度(0~255) 默认值: 129
  29. * @return
  30. */
  31. @RequestMapping(value = "/ptz")
  32. private JSONObject list(String serial,String command,
  33. @RequestParam(required = false)Integer channel,
  34. @RequestParam(required = false)String code,
  35. @RequestParam(required = false)Integer speed){
  36. if (logger.isDebugEnabled()) {
  37. logger.debug(String.format("模拟接口> 设备云台控制 API调用,deviceId:%s ,channelId:%s ,command:%d ,speed:%d ",
  38. serial, code, command, speed));
  39. }
  40. Device device = storager.queryVideoDevice(serial);
  41. int leftRight = 0;
  42. int upDown = 0;
  43. int inOut = 0;
  44. switch (command) {
  45. case "left":
  46. leftRight = 1;
  47. break;
  48. case "right":
  49. leftRight = 2;
  50. break;
  51. case "up":
  52. upDown = 1;
  53. break;
  54. case "down":
  55. upDown = 2;
  56. break;
  57. case "upleft":
  58. upDown = 1;
  59. leftRight = 1;
  60. case "upright":
  61. upDown = 1;
  62. leftRight = 2;
  63. break;
  64. case "downleft":
  65. upDown = 2;
  66. leftRight = 1;
  67. break;
  68. case "downright":
  69. upDown = 2;
  70. leftRight = 2;
  71. break;
  72. case "zoomin":
  73. inOut = 2;
  74. break;
  75. case "zoomout":
  76. inOut = 1;
  77. break;
  78. case "stop":
  79. break;
  80. }
  81. // 默认值 50
  82. cmder.ptzCmd(device, code, leftRight, upDown, inOut, speed==0 ? 129 : speed, 50);
  83. return null;
  84. }
  85. }