mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-18 11:27:49 +08:00
合并主线
This commit is contained in:
parent
46fa390387
commit
f62b655602
@ -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<WVPResult<StreamContent>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue());
|
||||
result.onTimeout(()->{
|
||||
logger.info("[1078-点播等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
log.info("[1078-点播等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
// 释放rtpserver
|
||||
WVPResult<StreamContent> 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<StreamContent> 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<WVPResult<StreamContent>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue());
|
||||
result.onTimeout(()->{
|
||||
logger.info("[1078-语音对讲超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
log.info("[1078-语音对讲超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
// 释放rtpserver
|
||||
WVPResult<StreamContent> 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<StreamContent> 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<J1205.JRecordItem> recordList = service.getRecordList(phoneNumber, channelId, startTime, endTime);
|
||||
List<J1205.JRecordItem> recordList = jt1078PlayService.getRecordList(phoneNumber, channelId, startTime, endTime);
|
||||
if (recordList == null) {
|
||||
return WVPResult.fail(ErrorCode.ERROR100);
|
||||
}else {
|
||||
@ -280,16 +284,16 @@ public class JT1078Controller {
|
||||
) {
|
||||
DeferredResult<WVPResult<StreamContent>> result = new DeferredResult<>(userSetting.getPlayTimeout().longValue());
|
||||
result.onTimeout(()->{
|
||||
logger.info("[1078-回放-等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
log.info("[1078-回放-等待超时] phoneNumber:{}, channelId:{}, ", phoneNumber, channelId);
|
||||
// 释放rtpserver
|
||||
WVPResult<StreamContent> 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<StreamContent> 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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<Integer> deleteAreaForCircle(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> 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<List<JTAreaOrRoute>> queryAreaForCircle(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
logger.info("[1078-查询圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[1078-查询圆形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
List<JTAreaOrRoute> 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<Integer> 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<Integer> 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<Integer> 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<Integer> deleteAreaForRectangle(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> 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<List<JTAreaOrRoute>> queryAreaForRectangle(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
logger.info("[1078-查询矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[1078-查询矩形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
List<JTAreaOrRoute> 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<Integer> 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<Integer> deleteAreaForPolygon(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> 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<List<JTAreaOrRoute>> queryAreaForPolygon(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
logger.info("[1078-查询多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[1078-查询多边形区域] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
List<JTAreaOrRoute> result = service.queryAreaForPolygon(phoneNumber, ids);
|
||||
if (result != null) {
|
||||
return WVPResult.success(result);
|
||||
@ -820,7 +824,7 @@ public class JT1078Controller {
|
||||
@PostMapping("/route/set")
|
||||
public WVPResult<Integer> 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<Integer> deleteRoute(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> 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<List<JTAreaOrRoute>> queryRoute(String phoneNumber, @RequestParam(value = "ids", required = false) List<Long> ids){
|
||||
|
||||
logger.info("[1078-查询路线] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
log.info("[1078-查询路线] phoneNumber: {}, ids:{}", phoneNumber, ids);
|
||||
List<JTAreaOrRoute> result = service.queryRoute(phoneNumber, ids);
|
||||
if (result != null) {
|
||||
return WVPResult.success(result);
|
||||
@ -869,7 +873,7 @@ public class JT1078Controller {
|
||||
@GetMapping("/driver-information")
|
||||
public WVPResult<JTDriverInformation> 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<List<Long>> shooting(@RequestBody ShootingParam param){
|
||||
|
||||
logger.info("[1078-摄像头立即拍摄命令] param: {}", param );
|
||||
log.info("[1078-摄像头立即拍摄命令] param: {}", param );
|
||||
List<Long> 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<List<JTMediaDataInfo>> queryMediaData(@RequestBody QueryMediaDataParam param){
|
||||
|
||||
logger.info("[1078-存储多媒体数据检索] param: {}", param );
|
||||
log.info("[1078-存储多媒体数据检索] param: {}", param );
|
||||
List<JTMediaDataInfo> 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<WVPResult<List<String>>> updateMediaData(@RequestBody QueryMediaDataParam param){
|
||||
|
||||
logger.info("[1078-存储多媒体数据上传命令] param: {}", param );
|
||||
log.info("[1078-存储多媒体数据上传命令] param: {}", param );
|
||||
DeferredResult<WVPResult<List<String>>> deferredResult = new DeferredResult<>(30000L);
|
||||
List<String> resultList = new ArrayList<>();
|
||||
|
||||
deferredResult.onTimeout(()->{
|
||||
logger.info("[1078-存储多媒体数据上传命令超时] param: {}", param );
|
||||
log.info("[1078-存储多媒体数据上传命令超时] param: {}", param );
|
||||
WVPResult<List<String>> 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;
|
||||
}
|
||||
|
||||
@ -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<GeneralCallback<StreamInfo>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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<String, Object> 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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user