From f62b655602c7d4db27cd17bc426901827cc1e9ab Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Sat, 19 Oct 2024 19:59:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=B8=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jt1078/controller/JT1078Controller.java | 126 +++++++++--------- .../service/impl/jt1078PlayServiceImpl.java | 29 +--- .../service/impl/MediaServerServiceImpl.java | 4 +- .../media/zlm/ZLMMediaNodeServerService.java | 3 +- .../vmp/service/impl/MediaServiceImpl.java | 35 ++--- 5 files changed, 94 insertions(+), 103 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/controller/JT1078Controller.java b/src/main/java/com/genersoft/iot/vmp/jt1078/controller/JT1078Controller.java index 03e12daec..450c9ce6a 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/controller/JT1078Controller.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/controller/JT1078Controller.java @@ -7,6 +7,7 @@ import com.genersoft.iot.vmp.conf.security.JwtUtils; import com.genersoft.iot.vmp.jt1078.bean.*; import com.genersoft.iot.vmp.jt1078.controller.bean.*; import com.genersoft.iot.vmp.jt1078.proc.request.J1205; +import com.genersoft.iot.vmp.jt1078.service.Ijt1078PlayService; import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service; import com.genersoft.iot.vmp.service.bean.InviteErrorCode; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; @@ -16,6 +17,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationMonitor; @@ -48,19 +50,21 @@ import java.util.List; import java.util.Map; +@Slf4j @ConditionalOnProperty(value = "jt1078.enable", havingValue = "true") @RestController @Tag(name = "部标设备控制") @RequestMapping("/api/jt1078") public class JT1078Controller { - private final static Logger logger = LoggerFactory.getLogger(JT1078Controller.class); + @Resource + private Ijt1078Service service; @Resource - Ijt1078Service service; + private Ijt1078PlayService jt1078PlayService; @Autowired - UserSetting userSetting; + private UserSetting userSetting; @Autowired private FtpSetting ftpSetting; @@ -83,16 +87,16 @@ public class JT1078Controller { } DeferredResult> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue()); result.onTimeout(()->{ - logger.info("[1078-点播等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId); + log.info("[1078-点播等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId); // 释放rtpserver WVPResult wvpResult = new WVPResult<>(); wvpResult.setCode(ErrorCode.ERROR100.getCode()); wvpResult.setMsg("超时"); result.setResult(wvpResult); - service.stopPlay(phoneNumber, channelId); + jt1078PlayService.stopPlay(phoneNumber, channelId); }); - service.play(phoneNumber, channelId, type, (code, msg, streamInfo) -> { + jt1078PlayService.play(phoneNumber, channelId, type, (code, msg, streamInfo) -> { WVPResult wvpResult = new WVPResult<>(); if (code == InviteErrorCode.SUCCESS.getCode()) { wvpResult.setCode(ErrorCode.SUCCESS.getCode()); @@ -132,7 +136,7 @@ public class JT1078Controller { public void stopLive(HttpServletRequest request, @Parameter(required = true) String phoneNumber, @Parameter(required = true) Integer channelId) { - service.stopPlay(phoneNumber, channelId); + jt1078PlayService.stopPlay(phoneNumber, channelId); } @Operation(summary = "1078-语音对讲", security = @SecurityRequirement(name = JwtUtils.HEADER)) @@ -152,16 +156,16 @@ public class JT1078Controller { @Parameter(required = false) Boolean onlySend) { DeferredResult> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue()); result.onTimeout(()->{ - logger.info("[1078-语音对讲超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId); + log.info("[1078-语音对讲超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId); // 释放rtpserver WVPResult wvpResult = new WVPResult<>(); wvpResult.setCode(ErrorCode.ERROR100.getCode()); wvpResult.setMsg("超时"); result.setResult(wvpResult); - service.stopPlay(phoneNumber, channelId); + jt1078PlayService.stopPlay(phoneNumber, channelId); }); - service.startTalk(phoneNumber, channelId, app, stream, mediaServerId, onlySend, (code, msg, streamInfo) -> { + jt1078PlayService.startTalk(phoneNumber, channelId, app, stream, mediaServerId, onlySend, (code, msg, streamInfo) -> { WVPResult wvpResult = new WVPResult<>(); if (code == InviteErrorCode.SUCCESS.getCode()) { wvpResult.setCode(ErrorCode.SUCCESS.getCode()); @@ -201,7 +205,7 @@ public class JT1078Controller { public void stopTalk(HttpServletRequest request, @Parameter(required = true) String phoneNumber, @Parameter(required = true) Integer channelId) { - service.stopTalk(phoneNumber, channelId); + jt1078PlayService.stopTalk(phoneNumber, channelId); } @@ -212,7 +216,7 @@ public class JT1078Controller { public void pauseLive(HttpServletRequest request, @Parameter(required = true) String phoneNumber, @Parameter(required = true) Integer channelId) { - service.pausePlay(phoneNumber, channelId); + jt1078PlayService.pausePlay(phoneNumber, channelId); } @Operation(summary = "1078-继续点播", security = @SecurityRequirement(name = JwtUtils.HEADER)) @@ -223,7 +227,7 @@ public class JT1078Controller { @Parameter(required = true) String phoneNumber, @Parameter(required = true) Integer channelId) { - service.continueLivePlay(phoneNumber, channelId); + jt1078PlayService.continueLivePlay(phoneNumber, channelId); } @Operation(summary = "1078-切换码流类型", security = @SecurityRequirement(name = JwtUtils.HEADER)) @@ -250,7 +254,7 @@ public class JT1078Controller { @Parameter(required = true) String startTime, @Parameter(required = true) String endTime ) { - List recordList = service.getRecordList(phoneNumber, channelId, startTime, endTime); + List recordList = jt1078PlayService.getRecordList(phoneNumber, channelId, startTime, endTime); if (recordList == null) { return WVPResult.fail(ErrorCode.ERROR100); }else { @@ -280,16 +284,16 @@ public class JT1078Controller { ) { DeferredResult> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue()); result.onTimeout(()->{ - logger.info("[1078-回放-等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId); + log.info("[1078-回放-等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId); // 释放rtpserver WVPResult wvpResult = new WVPResult<>(); wvpResult.setCode(ErrorCode.ERROR100.getCode()); wvpResult.setMsg("回放超时"); result.setResult(wvpResult); - service.stopPlay(phoneNumber, channelId); + jt1078PlayService.stopPlay(phoneNumber, channelId); }); - service.playback(phoneNumber, channelId, startTime, endTime,type, rate, playbackType, playbackSpeed, (code, msg, streamInfo) -> { + jt1078PlayService.playback(phoneNumber, channelId, startTime, endTime,type, rate, playbackType, playbackSpeed, (code, msg, streamInfo) -> { WVPResult wvpResult = new WVPResult<>(); if (code == InviteErrorCode.SUCCESS.getCode()) { wvpResult.setCode(ErrorCode.SUCCESS.getCode()); @@ -336,7 +340,7 @@ public class JT1078Controller { @Parameter(required = false) Integer playbackSpeed ) { - service.playbackControl(phoneNumber, channelId, command, playbackSpeed,time); + jt1078PlayService.playbackControl(phoneNumber, channelId, command, playbackSpeed,time); } @Operation(summary = "1078-录像-结束回放", security = @SecurityRequirement(name = JwtUtils.HEADER)) @@ -346,7 +350,7 @@ public class JT1078Controller { public void stopPlayback(HttpServletRequest request, @Parameter(required = true) String phoneNumber, @Parameter(required = true) Integer channelId) { - service.stopPlayback(phoneNumber, channelId); + jt1078PlayService.stopPlayback(phoneNumber, channelId); } @Operation(summary = "1078-录像-下载", security = @SecurityRequirement(name = JwtUtils.HEADER)) @@ -371,7 +375,7 @@ public class JT1078Controller { @Parameter(required = false) Integer storageType ) throws IOException { - logger.info("[1078-录像] 下载,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {},报警标志: {}, 音视频类型: {}, 码流类型: {},存储器类型: {}, ", + log.info("[1078-录像] 下载,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {},报警标志: {}, 音视频类型: {}, 码流类型: {},存储器类型: {}, ", phoneNumber, channelId, startTime, endTime, alarmSign, mediaType, streamType, storageType); if (!ftpSetting.getEnable()) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "未启用ftp服务,无法下载录像"); @@ -385,7 +389,7 @@ public class JT1078Controller { String filePath = "ftp" + data; File file = new File(filePath); if (!file.exists()) { - logger.warn("[下载录像] 收到通知时未找到录像文件: {}", filePath); + log.warn("[下载录像] 收到通知时未找到录像文件: {}", filePath); return; } try { @@ -394,7 +398,7 @@ public class JT1078Controller { outputStream.flush(); in.close(); } catch (IOException e) { - logger.warn("[下载录像] 读取文件异常: {}", filePath, e); + log.warn("[下载录像] 读取文件异常: {}", filePath, e); return; } finally { try { @@ -415,7 +419,7 @@ public class JT1078Controller { @GetMapping("/ptz") public void ptz(String phoneNumber, Integer channelId, String command, int speed){ - logger.info("[1078-云台控制] phoneNumber:{}, channelId:{}, command: {}, speed: {}", phoneNumber, channelId, command, speed); + log.info("[1078-云台控制] phoneNumber:{}, channelId:{}, command: {}, speed: {}", phoneNumber, channelId, command, speed); service.ptzControl(phoneNumber, channelId, command, speed); } @@ -426,7 +430,7 @@ public class JT1078Controller { @GetMapping("/fill-light") public void fillLight(String phoneNumber, Integer channelId, String command){ - logger.info("[1078-补光灯开关] phoneNumber:{}, channelId:{}, command: {}", phoneNumber, channelId, command); + log.info("[1078-补光灯开关] phoneNumber:{}, channelId:{}, command: {}", phoneNumber, channelId, command); service.supplementaryLight(phoneNumber, channelId, command); } @@ -437,7 +441,7 @@ public class JT1078Controller { @GetMapping("/wiper") public void wiper(String phoneNumber, Integer channelId, String command){ - logger.info("[1078-雨刷开关] phoneNumber:{}, channelId:{}, command: {}", phoneNumber, channelId, command); + log.info("[1078-雨刷开关] phoneNumber:{}, channelId:{}, command: {}", phoneNumber, channelId, command); service.wiper(phoneNumber, channelId, command); } @@ -446,7 +450,7 @@ public class JT1078Controller { @GetMapping("/config") public JTDeviceConfig config(String phoneNumber, String[] params){ - logger.info("[1078-查询终端参数] phoneNumber:{}", phoneNumber); + log.info("[1078-查询终端参数] phoneNumber:{}", phoneNumber); return service.queryConfig(phoneNumber, params, null); } @@ -456,7 +460,7 @@ public class JT1078Controller { @PostMapping("/set-config") public void setConfig(@RequestBody SetConfigParam config){ - logger.info("[1078-设置终端参数] 参数: {}", config.toString()); + log.info("[1078-设置终端参数] 参数: {}", config.toString()); service.setConfig(config.getPhoneNumber(), config.getConfig()); } @@ -465,7 +469,7 @@ public class JT1078Controller { @PostMapping("/control/connection") public void connectionControl(@RequestBody ConnectionControlParam control){ - logger.info("[1078-终端控制] 参数: {}", control.toString()); + log.info("[1078-终端控制] 参数: {}", control.toString()); service.connectionControl(control.getPhoneNumber(), control.getControl()); } @@ -474,7 +478,7 @@ public class JT1078Controller { @PostMapping("/control/reset") public void resetControl(String phoneNumber){ - logger.info("[1078-复位] phoneNumber: {}", phoneNumber); + log.info("[1078-复位] phoneNumber: {}", phoneNumber); service.resetControl(phoneNumber); } @@ -483,7 +487,7 @@ public class JT1078Controller { @PostMapping("/control/factory-reset") public void factoryResetControl(String phoneNumber){ - logger.info("[1078-恢复出厂设置] phoneNumber: {}", phoneNumber); + log.info("[1078-恢复出厂设置] phoneNumber: {}", phoneNumber); service.factoryResetControl(phoneNumber); } @@ -492,7 +496,7 @@ public class JT1078Controller { @GetMapping("/attribute") public JTDeviceAttribute attribute(String phoneNumber){ - logger.info("[1078-查询终端属性] phoneNumber: {}", phoneNumber); + log.info("[1078-查询终端属性] phoneNumber: {}", phoneNumber); return service.attribute(phoneNumber); } @@ -501,7 +505,7 @@ public class JT1078Controller { @GetMapping("/position-info") public JTPositionBaseInfo queryPositionInfo(String phoneNumber){ - logger.info("[1078-查询位置信息] phoneNumber: {}", phoneNumber); + log.info("[1078-查询位置信息] phoneNumber: {}", phoneNumber); return service.queryPositionInfo(phoneNumber); } @@ -512,7 +516,7 @@ public class JT1078Controller { @GetMapping("/control/temp-position-tracking") public void tempPositionTrackingControl(String phoneNumber, Integer timeInterval, Long validityPeriod){ - logger.info("[1078-临时位置跟踪控制] phoneNumber: {}, 时间间隔 {}秒, 位置跟踪有效期 {}秒", phoneNumber, timeInterval, validityPeriod); + log.info("[1078-临时位置跟踪控制] phoneNumber: {}, 时间间隔 {}秒, 位置跟踪有效期 {}秒", phoneNumber, timeInterval, validityPeriod); service.tempPositionTrackingControl(phoneNumber, timeInterval, validityPeriod); } @@ -523,7 +527,7 @@ public class JT1078Controller { @PostMapping("/confirmation-alarm-message") public void confirmationAlarmMessage(@RequestBody ConfirmationAlarmMessageParam param){ - logger.info("[1078-人工确认报警消息] 参数: {}", param); + log.info("[1078-人工确认报警消息] 参数: {}", param); service.confirmationAlarmMessage(param.getPhoneNumber(), param.getAlarmPackageNo(), param.getAlarmMessageType()); } @@ -532,7 +536,7 @@ public class JT1078Controller { @GetMapping("/link-detection") public WVPResult linkDetection(String phoneNumber){ - logger.info("[1078-链路检测] phoneNumber: {}", phoneNumber); + log.info("[1078-链路检测] phoneNumber: {}", phoneNumber); int result = service.linkDetection(phoneNumber); if (result == 0) { return WVPResult.success(result); @@ -548,7 +552,7 @@ public class JT1078Controller { @PostMapping("/text-msg") public WVPResult textMessage(@RequestBody TextMessageParam textMessageParam){ - logger.info("[1078-文本信息下发] textMessageParam: {}", textMessageParam); + log.info("[1078-文本信息下发] textMessageParam: {}", textMessageParam); int result = service.textMessage(textMessageParam.getPhoneNumber(), textMessageParam.getSign(), textMessageParam.getTextType(), textMessageParam.getContent()); if (result == 0) { return WVPResult.success(result); @@ -566,7 +570,7 @@ public class JT1078Controller { @GetMapping("/telephone-callback") public WVPResult telephoneCallback(String phoneNumber, Integer sign, String destPhoneNumber){ - logger.info("[1078-电话回拨] phoneNumber: {}, sign: {}, phoneNumber: {},", phoneNumber, sign, phoneNumber); + log.info("[1078-电话回拨] phoneNumber: {}, sign: {}, phoneNumber: {},", phoneNumber, sign, phoneNumber); int result = service.telephoneCallback(phoneNumber, sign, destPhoneNumber); if (result == 0) { return WVPResult.success(result); @@ -582,7 +586,7 @@ public class JT1078Controller { @PostMapping("/set-phone-book") public WVPResult setPhoneBook(@RequestBody SetPhoneBookParam setPhoneBookParam){ - logger.info("[1078-设置电话本] setPhoneBookParam: {}", setPhoneBookParam); + log.info("[1078-设置电话本] setPhoneBookParam: {}", setPhoneBookParam); int result = service.setPhoneBook(setPhoneBookParam.getPhoneNumber(), setPhoneBookParam.getType(), setPhoneBookParam.getPhoneBookContactList()); if (result == 0) { return WVPResult.success(result); @@ -599,7 +603,7 @@ public class JT1078Controller { @GetMapping("/control/door") public WVPResult controlDoor(String phoneNumber, Boolean open){ - logger.info("[1078-车门控制] phoneNumber: {}, open: {},", phoneNumber, open); + log.info("[1078-车门控制] phoneNumber: {}, open: {},", phoneNumber, open); JTPositionBaseInfo positionBaseInfo = service.controlDoor(phoneNumber, open); if (open == !positionBaseInfo.getStatus().isDoorLocking()) { @@ -614,7 +618,7 @@ public class JT1078Controller { @PostMapping("/area/circle/update") public WVPResult updateAreaForCircle(@RequestBody SetAreaParam areaParam){ - logger.info("[1078-更新圆形区域] areaParam: {},", areaParam); + log.info("[1078-更新圆形区域] areaParam: {},", areaParam); int result = service.setAreaForCircle(0, areaParam.getPhoneNumber(), areaParam.getCircleAreaList()); if (result == 0) { return WVPResult.success(result); @@ -630,7 +634,7 @@ public class JT1078Controller { @PostMapping("/area/circle/add") public WVPResult addAreaForCircle(@RequestBody SetAreaParam areaParam){ - logger.info("[1078-追加圆形区域] areaParam: {},", areaParam); + log.info("[1078-追加圆形区域] areaParam: {},", areaParam); int result = service.setAreaForCircle(1, areaParam.getPhoneNumber(), areaParam.getCircleAreaList()); if (result == 0) { return WVPResult.success(result); @@ -646,7 +650,7 @@ public class JT1078Controller { @PostMapping("/area/circle/edit") public WVPResult editAreaForCircle(@RequestBody SetAreaParam areaParam){ - logger.info("[1078-修改圆形区域] areaParam: {},", areaParam); + log.info("[1078-修改圆形区域] areaParam: {},", areaParam); int result = service.setAreaForCircle(2, areaParam.getPhoneNumber(), areaParam.getCircleAreaList()); if (result == 0) { return WVPResult.success(result); @@ -663,7 +667,7 @@ public class JT1078Controller { @GetMapping("/area/circle/delete") public WVPResult deleteAreaForCircle(String phoneNumber, @RequestParam(value = "ids", required = false) List ids){ - logger.info("[1078-删除圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); + log.info("[1078-删除圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); int result = service.deleteAreaForCircle(phoneNumber, ids); if (result == 0) { return WVPResult.success(result); @@ -679,7 +683,7 @@ public class JT1078Controller { @GetMapping("/area/circle/query") public WVPResult> queryAreaForCircle(String phoneNumber, @RequestParam(value = "ids", required = false) List ids){ - logger.info("[1078-查询圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); + log.info("[1078-查询圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); List result = service.queryAreaForCircle(phoneNumber, ids); if (result != null) { return WVPResult.success(result); @@ -694,7 +698,7 @@ public class JT1078Controller { @PostMapping("/area/rectangle/update") public WVPResult updateAreaForRectangle(@RequestBody SetAreaParam areaParam){ - logger.info("[1078-更新矩形区域] areaParam: {},", areaParam); + log.info("[1078-更新矩形区域] areaParam: {},", areaParam); int result = service.setAreaForRectangle(0, areaParam.getPhoneNumber(), areaParam.getRectangleAreas()); if (result == 0) { return WVPResult.success(result); @@ -710,7 +714,7 @@ public class JT1078Controller { @PostMapping("/area/rectangle/add") public WVPResult addAreaForRectangle(@RequestBody SetAreaParam areaParam){ - logger.info("[1078-追加矩形区域] areaParam: {},", areaParam); + log.info("[1078-追加矩形区域] areaParam: {},", areaParam); int result = service.setAreaForRectangle(1, areaParam.getPhoneNumber(), areaParam.getRectangleAreas()); if (result == 0) { return WVPResult.success(result); @@ -726,7 +730,7 @@ public class JT1078Controller { @PostMapping("/area/rectangle/edit") public WVPResult editAreaForRectangle(@RequestBody SetAreaParam areaParam){ - logger.info("[1078-修改矩形区域] areaParam: {},", areaParam); + log.info("[1078-修改矩形区域] areaParam: {},", areaParam); int result = service.setAreaForRectangle(2, areaParam.getPhoneNumber(), areaParam.getRectangleAreas()); if (result == 0) { return WVPResult.success(result); @@ -743,7 +747,7 @@ public class JT1078Controller { @GetMapping("/area/rectangle/delete") public WVPResult deleteAreaForRectangle(String phoneNumber, @RequestParam(value = "ids", required = false) List ids){ - logger.info("[1078-删除矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); + log.info("[1078-删除矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); int result = service.deleteAreaForRectangle(phoneNumber, ids); if (result == 0) { return WVPResult.success(result); @@ -759,7 +763,7 @@ public class JT1078Controller { @GetMapping("/area/rectangle/query") public WVPResult> queryAreaForRectangle(String phoneNumber, @RequestParam(value = "ids", required = false) List ids){ - logger.info("[1078-查询矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); + log.info("[1078-查询矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); List result = service.queryAreaForRectangle(phoneNumber, ids); if (result != null) { return WVPResult.success(result); @@ -773,7 +777,7 @@ public class JT1078Controller { @PostMapping("/area/polygon/set") public WVPResult setAreaForPolygon(@RequestBody SetAreaParam areaParam){ - logger.info("[1078-设置多边形区域] areaParam: {},", areaParam); + log.info("[1078-设置多边形区域] areaParam: {},", areaParam); int result = service.setAreaForPolygon(areaParam.getPhoneNumber(), areaParam.getPolygonArea()); if (result == 0) { return WVPResult.success(result); @@ -790,7 +794,7 @@ public class JT1078Controller { @GetMapping("/area/polygon/delete") public WVPResult deleteAreaForPolygon(String phoneNumber, @RequestParam(value = "ids", required = false) List ids){ - logger.info("[1078-删除多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); + log.info("[1078-删除多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); int result = service.deleteAreaForPolygon(phoneNumber, ids); if (result == 0) { return WVPResult.success(result); @@ -806,7 +810,7 @@ public class JT1078Controller { @GetMapping("/area/polygon/query") public WVPResult> queryAreaForPolygon(String phoneNumber, @RequestParam(value = "ids", required = false) List ids){ - logger.info("[1078-查询多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); + log.info("[1078-查询多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids); List result = service.queryAreaForPolygon(phoneNumber, ids); if (result != null) { return WVPResult.success(result); @@ -820,7 +824,7 @@ public class JT1078Controller { @PostMapping("/route/set") public WVPResult setRoute(@RequestBody SetAreaParam areaParam){ - logger.info("[1078-设置路线] areaParam: {},", areaParam); + log.info("[1078-设置路线] areaParam: {},", areaParam); int result = service.setRoute(areaParam.getPhoneNumber(), areaParam.getRoute()); if (result == 0) { return WVPResult.success(result); @@ -837,7 +841,7 @@ public class JT1078Controller { @GetMapping("/route/delete") public WVPResult deleteRoute(String phoneNumber, @RequestParam(value = "ids", required = false) List ids){ - logger.info("[1078-删除路线] phoneNumber: {}, ids:{}", phoneNumber, ids); + log.info("[1078-删除路线] phoneNumber: {}, ids:{}", phoneNumber, ids); int result = service.deleteRoute(phoneNumber, ids); if (result == 0) { return WVPResult.success(result); @@ -853,7 +857,7 @@ public class JT1078Controller { @GetMapping("/route/query") public WVPResult> queryRoute(String phoneNumber, @RequestParam(value = "ids", required = false) List ids){ - logger.info("[1078-查询路线] phoneNumber: {}, ids:{}", phoneNumber, ids); + log.info("[1078-查询路线] phoneNumber: {}, ids:{}", phoneNumber, ids); List result = service.queryRoute(phoneNumber, ids); if (result != null) { return WVPResult.success(result); @@ -869,7 +873,7 @@ public class JT1078Controller { @GetMapping("/driver-information") public WVPResult queryDriverInformation(String phoneNumber){ - logger.info("[1078-上报驾驶员身份信息请求] phoneNumber: {}", phoneNumber); + log.info("[1078-上报驾驶员身份信息请求] phoneNumber: {}", phoneNumber); JTDriverInformation jtDriverInformation = service.queryDriverInformation(phoneNumber); if (jtDriverInformation != null) { return WVPResult.success(jtDriverInformation); @@ -883,7 +887,7 @@ public class JT1078Controller { @PostMapping("/shooting") public WVPResult> shooting(@RequestBody ShootingParam param){ - logger.info("[1078-摄像头立即拍摄命令] param: {}", param ); + log.info("[1078-摄像头立即拍摄命令] param: {}", param ); List ids = service.shooting(param.getPhoneNumber(), param.getShootingCommand()); if (ids != null) { return WVPResult.success(ids); @@ -897,7 +901,7 @@ public class JT1078Controller { @PostMapping("/media-data-info") public WVPResult> queryMediaData(@RequestBody QueryMediaDataParam param){ - logger.info("[1078-存储多媒体数据检索] param: {}", param ); + log.info("[1078-存储多媒体数据检索] param: {}", param ); List ids = service.queryMediaData(param.getPhoneNumber(), param.getQueryMediaDataCommand()); if (ids != null) { return WVPResult.success(ids); @@ -911,12 +915,12 @@ public class JT1078Controller { @PostMapping("/media-data-upload") public DeferredResult>> updateMediaData(@RequestBody QueryMediaDataParam param){ - logger.info("[1078-存储多媒体数据上传命令] param: {}", param ); + log.info("[1078-存储多媒体数据上传命令] param: {}", param ); DeferredResult>> deferredResult = new DeferredResult<>(30000L); List resultList = new ArrayList<>(); deferredResult.onTimeout(()->{ - logger.info("[1078-存储多媒体数据上传命令超时] param: {}", param ); + log.info("[1078-存储多媒体数据上传命令超时] param: {}", param ); WVPResult> fail = WVPResult.fail(ErrorCode.ERROR100); fail.setMsg("超时"); fail.setData(resultList); @@ -957,7 +961,7 @@ public class JT1078Controller { try { monitor.start(); } catch (Exception e) { - logger.info("[1078-存储多媒体数据上传命令监听文件失败] param: {}", param ); + log.info("[1078-存储多媒体数据上传命令监听文件失败] param: {}", param ); deferredResult.setResult(null); return deferredResult; } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078PlayServiceImpl.java index 01122918e..fa8f5689d 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/service/impl/jt1078PlayServiceImpl.java @@ -547,26 +547,13 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { } // 开启收流端口, zlm发送1078的rtp流需要将ssrc字段设置为 imei_channel格式 String ssrc = phoneNumber + "_" + channelId; - sendRtpServerService.createSendRtpInfo(mediaServer, ) - - SendRtpInfo.getInstance(app, stream, ssrc, ) - - SendRtpInfo sendRtpInfo = new SendRtpInfo(); - sendRtpInfo.setMediaServerId(mediaServerId); - sendRtpInfo.setPort(0); - sendRtpInfo.setSsrc(ssrc); - sendRtpInfo.setChannelId(channelId ); - sendRtpInfo.setRtcp(false); - sendRtpInfo.setApp(app); - sendRtpInfo.setStream(stream); - sendRtpInfo.setTcp(true); + SendRtpInfo sendRtpInfo = sendRtpServerService.createSendRtpInfo(mediaServer, null, null, ssrc, phoneNumber, app, stream, channelId, true, false); sendRtpInfo.setTcpActive(true); sendRtpInfo.setUsePs(false); sendRtpInfo.setOnlyAudio(true); if (onlySend == null || !onlySend) { sendRtpInfo.setReceiveStream(receiveStream); } - sendRtpInfo.setPlatformId(phoneNumber); if (onlySend == null || !onlySend) { // 设置hook监听 Hook hook = Hook.getInstance(HookType.on_media_arrival, "rtp", receiveStream, mediaServer.getId()); @@ -581,7 +568,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { subscribe.removeSubscribe(hook); redisTemplate.opsForValue().set(playKey, info); // 存储发流信息 - redisCatchStorage.updateSendRTPSever(sendRtpInfo); + sendRtpServerService.update(sendRtpInfo); }); Hook hookForDeparture = Hook.getInstance(HookType.on_media_departure, "rtp", receiveStream, mediaServer.getId()); subscribe.addSubscribe(hookForDeparture, (hookData) -> { @@ -599,16 +586,14 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { }, userSetting.getPlayTimeout()); } - Integer localPort = mediaServerService.startSendRtpPassive(mediaServer, sendRtpInfo, 15000); - log.info("[1078-对讲] phoneNumber: {}, channelId: {}, 收发端口: {}, app: {}, stream: {}", - phoneNumber, channelId, localPort, app, stream); + phoneNumber, channelId, sendRtpInfo.getLocalPort(), app, stream); J9101 j9101 = new J9101(); j9101.setChannel(Integer.valueOf(channelId)); j9101.setIp(mediaServer.getSdpIp()); j9101.setRate(1); - j9101.setTcpPort(localPort); - j9101.setUdpPort(localPort); + j9101.setTcpPort(sendRtpInfo.getLocalPort()); + j9101.setUdpPort(sendRtpInfo.getLocalPort()); j9101.setType(2); jt1078Template.startLive(phoneNumber, j9101, 6); if (onlySend != null && onlySend) { @@ -617,7 +602,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), null); } // 存储发流信息 - redisCatchStorage.updateSendRTPSever(sendRtpInfo); + sendRtpServerService.update(sendRtpInfo); } } @@ -638,7 +623,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService { if (streamInfo != null) { redisTemplate.delete(playKey); // 关闭rtpServer - mediaServerService.closeRTPServer(streamInfo.getMediaServerId(), streamInfo.getStream()); + mediaServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getStream()); } // 清理回调 List> generalCallbacks = inviteErrorCallbackMap.get(playKey); diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java index d58161ed1..59c9e2290 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java @@ -845,13 +845,13 @@ public class MediaServerServiceImpl implements IMediaServerService { } @Override - public Integer startSendRtpPassive(MediaServer mediaServer, SendRtpItem sendRtpItem, Integer timeout) { + public void startSendRtpPassive(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout) { IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType()); if (mediaNodeServerService == null) { log.info("[startSendRtpPassive] 失败, mediaServer的类型: {},未找到对应的实现类", mediaServer.getType()); throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到mediaServer对应的实现类"); } - return mediaNodeServerService.startSendRtpPassive(mediaServer, sendRtpItem, timeout); + mediaNodeServerService.startSendRtpPassive(mediaServer, sendRtpItem, timeout); } @Override diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java index 4ae55881b..436a78918 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java @@ -328,7 +328,7 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService { } @Override - public Integer startSendRtpPassive(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout) { + public void startSendRtpPassive(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout) { Map param = new HashMap<>(12); param.put("vhost","__defaultVhost__"); param.put("app", sendRtpItem.getApp()); @@ -360,7 +360,6 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService { log.info("调用ZLM-TCP被动推流接口, 结果: {}", jsonObject); log.info("启动监听TCP被动推流成功[ {}/{} ],{}->{}:{}, " , sendRtpItem.getApp(), sendRtpItem.getStream(), jsonObject.getString("local_port"), param.get("dst_url"), param.get("dst_port")); - return jsonObject.getInteger("local_port"); } @Override diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java index 14d74ac6c..79a5d2231 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java @@ -7,6 +7,7 @@ import com.genersoft.iot.vmp.common.VideoManagerConstants; import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; +import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo; import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction; import com.genersoft.iot.vmp.gb28181.service.*; import com.genersoft.iot.vmp.gb28181.session.SSRCFactory; @@ -14,6 +15,7 @@ import com.genersoft.iot.vmp.gb28181.session.SipInviteSessionManager; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; import com.genersoft.iot.vmp.jt1078.bean.JTMediaStreamType; +import com.genersoft.iot.vmp.jt1078.service.Ijt1078PlayService; import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service; import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.media.bean.ResultForOnPublish; @@ -34,6 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; @Slf4j @@ -85,6 +88,9 @@ public class MediaServiceImpl implements IMediaService { @Autowired private Ijt1078Service ijt1078Service; + @Autowired + private Ijt1078PlayService jt1078PlayService; + @Autowired private ISendRtpServerService sendRtpServerService; @@ -233,15 +239,16 @@ public class MediaServiceImpl implements IMediaService { result = userSetting.getStreamOnDemand(); // 国标流, 点播/录像回放/录像下载 InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, stream); - // 点播 - if (inviteInfo != null && inviteInfo.getStatus() == InviteSessionStatus.ok) { - // 录像下载 - if (inviteInfo.getType() == InviteSessionType.DOWNLOAD) { - return false; - } - DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(inviteInfo.getChannelId()); - if (deviceChannel == null) { - return false; + if (inviteInfo != null) { + if (inviteInfo.getStatus() == InviteSessionStatus.ok){ + // 录像下载 + if (inviteInfo.getType() == InviteSessionType.DOWNLOAD) { + return false; + } + DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(inviteInfo.getChannelId()); + if (deviceChannel == null) { + return false; + } } return result; }else { @@ -250,19 +257,14 @@ public class MediaServiceImpl implements IMediaService { if (jtMediaStreamType != null) { String[] streamParamArray = stream.split("_"); if (jtMediaStreamType.equals(JTMediaStreamType.PLAY)) { - ijt1078Service.stopPlay(streamParamArray[1], Integer.parseInt(streamParamArray[2])); + jt1078PlayService.stopPlay(streamParamArray[1], Integer.parseInt(streamParamArray[2])); }else if (jtMediaStreamType.equals(JTMediaStreamType.PLAYBACK)) { - ijt1078Service.stopPlayback(streamParamArray[1], Integer.parseInt(streamParamArray[2])); + jt1078PlayService.stopPlayback(streamParamArray[1], Integer.parseInt(streamParamArray[2])); } }else { return false; } } - - SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(null, null, stream, null); - if (sendRtpItem != null && "talk".equals(sendRtpItem.getApp() )) { - return false; - } } else if ("talk".equals(app) || "broadcast".equals(app)) { return false; } else { @@ -288,5 +290,6 @@ public class MediaServiceImpl implements IMediaService { return false; } } + return result; } }